From: Ian Lance Taylor Date: Mon, 10 Dec 2018 23:47:10 +0000 (-0800) Subject: cmd/nm: run tests in parallel, don't use Scanner on []byte X-Git-Tag: go1.12beta1~113 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=9b95035654d620e1aafebd461fd976fe34adb72b;p=gostls13.git 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 Reviewed-by: Brad Fitzpatrick --- 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)