]> Cypherpunks repositories - gostls13.git/commitdiff
test: avoid touching GOOS/GOARCH in codegen driver
authorAlberto Donizetti <alb.donizetti@gmail.com>
Thu, 29 Mar 2018 16:52:12 +0000 (18:52 +0200)
committerAlberto Donizetti <alb.donizetti@gmail.com>
Thu, 29 Mar 2018 19:00:10 +0000 (19:00 +0000)
This change modifies the codegen test harness driver so that it no
longer modifies the environment GOOS/GOARCH, since that seems to cause
flakiness in other concurrently-running tests.

The change also enables the codegen tests in run.go.

Fixes #24538

Change-Id: I997ac1eb38eb92054efff67fe5c4d3cccc86412b
Reviewed-on: https://go-review.googlesource.com/103455
Run-TryBot: Alberto Donizetti <alb.donizetti@gmail.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

test/run.go

index c992c7e9d11649de9d11ba1a6c750541ac0ad432..8313a0d7410fa57b2580047fcbeffa0d43e270ff 100644 (file)
@@ -52,7 +52,7 @@ var (
 
        // dirs are the directories to look for *.go files in.
        // TODO(bradfitz): just use all directories?
-       dirs = []string{".", "ken", "chan", "interface", "syntax", "dwarf", "fixedbugs"}
+       dirs = []string{".", "ken", "chan", "interface", "syntax", "dwarf", "fixedbugs", "codegen"}
 
        // ratec controls the max number of tests running at a time.
        ratec chan bool
@@ -612,18 +612,20 @@ func (t *test) run() {
        case "asmcheck":
                ops, archs := t.wantedAsmOpcodes(long)
                for _, arch := range archs {
-                       os.Setenv("GOOS", "linux")
-                       os.Setenv("GOARCH", arch)
-
-                       cmdline := []string{goTool(), "build", "-gcflags", "-S"}
+                       cmdline := []string{"build", "-gcflags", "-S"}
                        cmdline = append(cmdline, flags...)
                        cmdline = append(cmdline, long)
-                       out, err := runcmd(cmdline...)
-                       if err != nil {
+                       cmd := exec.Command(goTool(), cmdline...)
+                       cmd.Env = append(os.Environ(), "GOOS=linux", "GOARCH="+arch)
+
+                       var buf bytes.Buffer
+                       cmd.Stdout, cmd.Stderr = &buf, &buf
+                       if err := cmd.Run(); err != nil {
                                t.err = err
                                return
                        }
-                       t.err = t.asmCheck(string(out), long, arch, ops[arch])
+
+                       t.err = t.asmCheck(buf.String(), long, arch, ops[arch])
                        if t.err != nil {
                                return
                        }