mirror of https://github.com/golang/go.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 <iant@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
parent
a11aa2aaec
commit
9b95035654
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in New Issue