Skip to content

Commit 6e26925

Browse files
committed
cmd/objdump: speed up tests
Rebuild cmd/objdump once instead of twice. Speeds up standalone 'go test cmd/objdump' on my machine from ~1.4s to ~1s. Updates #17751 Change-Id: I15fd79cf18c310f892bc28a9e9ca47ee010c989a Reviewed-on: https://go-review.googlesource.com/32673 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
1 parent 3797446 commit 6e26925

File tree

1 file changed

+30
-10
lines changed

1 file changed

+30
-10
lines changed

src/cmd/objdump/objdump_test.go

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ package main
66

77
import (
88
"flag"
9+
"fmt"
910
"go/build"
1011
"internal/testenv"
1112
"io/ioutil"
@@ -17,21 +18,43 @@ import (
1718
"testing"
1819
)
1920

20-
func buildObjdump(t *testing.T) (tmp, exe string) {
21-
testenv.MustHaveGoBuild(t)
21+
var tmp, exe string // populated by buildObjdump
2222

23-
tmp, err := ioutil.TempDir("", "TestObjDump")
23+
func TestMain(m *testing.M) {
24+
flag.Parse()
25+
if !testenv.HasGoBuild() {
26+
return
27+
}
28+
var exitcode int
29+
if err := buildObjdump(); err == nil {
30+
exitcode = m.Run()
31+
} else {
32+
fmt.Println(err)
33+
exitcode = 1
34+
}
35+
os.RemoveAll(tmp)
36+
os.Exit(exitcode)
37+
}
38+
39+
func buildObjdump() error {
40+
var err error
41+
tmp, err = ioutil.TempDir("", "TestObjDump")
2442
if err != nil {
25-
t.Fatal("TempDir failed: ", err)
43+
return fmt.Errorf("TempDir failed: %v", err)
2644
}
2745

2846
exe = filepath.Join(tmp, "testobjdump.exe")
29-
out, err := exec.Command(testenv.GoToolPath(t), "build", "-o", exe, "cmd/objdump").CombinedOutput()
47+
gotool, err := testenv.GoTool()
48+
if err != nil {
49+
return err
50+
}
51+
out, err := exec.Command(gotool, "build", "-o", exe, "cmd/objdump").CombinedOutput()
3052
if err != nil {
3153
os.RemoveAll(tmp)
32-
t.Fatalf("go build -o %v cmd/objdump: %v\n%s", exe, err, string(out))
54+
return fmt.Errorf("go build -o %v cmd/objdump: %v\n%s", exe, err, string(out))
3355
}
34-
return
56+
57+
return nil
3558
}
3659

3760
var x86Need = []string{
@@ -70,9 +93,6 @@ var target = flag.String("target", "", "test disassembly of `goos/goarch` binary
7093
// can handle that one.
7194

7295
func testDisasm(t *testing.T, flags ...string) {
73-
tmp, exe := buildObjdump(t)
74-
defer os.RemoveAll(tmp)
75-
7696
goarch := runtime.GOARCH
7797
if *target != "" {
7898
f := strings.Split(*target, "/")

0 commit comments

Comments
 (0)