aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/nm
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@golang.org>2018-12-10 15:47:10 -0800
committerIan Lance Taylor <iant@golang.org>2018-12-11 03:36:22 +0000
commit9b95035654d620e1aafebd461fd976fe34adb72b (patch)
tree97ee71c564bea271622e00f64042139870c1c44d /src/cmd/nm
parenta11aa2aaecff98d6b46035704d587920c10788f9 (diff)
downloadgo-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.go24
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)