diff options
author | Ian Lance Taylor <iant@golang.org> | 2018-12-10 15:47:10 -0800 |
---|---|---|
committer | Ian Lance Taylor <iant@golang.org> | 2018-12-11 03:36:22 +0000 |
commit | 9b95035654d620e1aafebd461fd976fe34adb72b (patch) | |
tree | 97ee71c564bea271622e00f64042139870c1c44d /src/cmd/nm | |
parent | a11aa2aaecff98d6b46035704d587920c10788f9 (diff) | |
download | go-9b95035654d620e1aafebd461fd976fe34adb72b.tar.gz go-9b95035654d620e1aafebd461fd976fe34adb72b.zip |
cmd/nm: run tests in parallel, don't use Scanner on []byte
Saves about 35% on total test time on my laptop.
Fixes #26471
Change-Id: I15b28b1bc00f889934d577dc7996864bbab10105
Reviewed-on: https://go-review.googlesource.com/c/153499
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Diffstat (limited to 'src/cmd/nm')
-rw-r--r-- | src/cmd/nm/nm_test.go | 24 |
1 files changed, 8 insertions, 16 deletions
diff --git a/src/cmd/nm/nm_test.go b/src/cmd/nm/nm_test.go index 1f2ad53ef2..53c39f2f89 100644 --- a/src/cmd/nm/nm_test.go +++ b/src/cmd/nm/nm_test.go @@ -5,8 +5,6 @@ package main import ( - "bufio" - "bytes" "fmt" "internal/testenv" "io/ioutil" @@ -55,6 +53,7 @@ func testMain(m *testing.M) int { } func TestNonGoExecs(t *testing.T) { + t.Parallel() testfiles := []string{ "debug/elf/testdata/gcc-386-freebsd-exec", "debug/elf/testdata/gcc-amd64-linux-exec", @@ -77,6 +76,7 @@ func TestNonGoExecs(t *testing.T) { } func testGoExec(t *testing.T, iscgo, isexternallinker bool) { + t.Parallel() tmpdir, err := ioutil.TempDir("", "TestGoExec") if err != nil { t.Fatal(err) @@ -154,10 +154,9 @@ func testGoExec(t *testing.T, iscgo, isexternallinker bool) { return false } - scanner := bufio.NewScanner(bytes.NewBuffer(out)) dups := make(map[string]bool) - for scanner.Scan() { - f := strings.Fields(scanner.Text()) + for _, line := range strings.Split(string(out), "\n") { + f := strings.Fields(line) if len(f) < 3 { continue } @@ -184,10 +183,6 @@ func testGoExec(t *testing.T, iscgo, isexternallinker bool) { delete(runtimeSyms, name) } } - err = scanner.Err() - if err != nil { - t.Fatalf("error reading nm output: %v", err) - } if len(names) > 0 { t.Errorf("executable is missing %v symbols", names) } @@ -201,6 +196,7 @@ func TestGoExec(t *testing.T) { } func testGoLib(t *testing.T, iscgo bool) { + t.Parallel() tmpdir, err := ioutil.TempDir("", "TestGoLib") if err != nil { t.Fatal(err) @@ -269,9 +265,9 @@ func testGoLib(t *testing.T, iscgo bool) { syms = append(syms, symType{"T", "cgofunc", true, false}) } } - scanner := bufio.NewScanner(bytes.NewBuffer(out)) - for scanner.Scan() { - f := strings.Fields(scanner.Text()) + + for _, line := range strings.Split(string(out), "\n") { + f := strings.Fields(line) var typ, name string var csym bool if iscgo { @@ -298,10 +294,6 @@ func testGoLib(t *testing.T, iscgo bool) { } } } - err = scanner.Err() - if err != nil { - t.Fatalf("error reading nm output: %v", err) - } for _, sym := range syms { if !sym.Found { t.Errorf("cannot found symbol %s %s", sym.Type, sym.Name) |