1 runtime, crypto/x509: add -target flag. 2 3 --- src/crypto/x509/x509_test.go 4 +++ src/crypto/x509/x509_test.go 5 @@ -19,6 +19,7 @@ import ( 6 "encoding/hex" 7 "encoding/pem" 8 "fmt" 9 + "flag" 10 "internal/testenv" 11 "math/big" 12 "net" 13 @@ -28,6 +29,8 @@ import ( 14 "time" 15 ) 16 17 +var target = flag.String("target", "", "if non empty, use 'go_target' to compile test files and 'go_target_exec' to run the binaries") 18 + 19 func TestParsePKCS1PrivateKey(t *testing.T) { 20 block, _ := pem.Decode([]byte(pemPrivateKey)) 21 priv, err := ParsePKCS1PrivateKey(block.Bytes) 22 @@ -862,7 +865,13 @@ func TestParsePEMCRL(t *testing.T) { 23 func TestImports(t *testing.T) { 24 testenv.MustHaveGoRun(t) 25 26 - if err := exec.Command("go", "run", "x509_test_import.go").Run(); err != nil { 27 + var cmd *exec.Cmd 28 + if *target == "" { 29 + cmd = exec.Command("go", "run", "x509_test_import.go") 30 + } else { 31 + cmd = exec.Command("go_"+*target, "run", "-exec", "go_"+*target+"_exec", "x509_test_import.go") 32 + } 33 + if err := cmd.Run(); err != nil { 34 t.Errorf("failed to run x509_test_import.go: %s", err) 35 } 36 } 37 --- src/runtime/crash_test.go 38 +++ src/runtime/crash_test.go 39 @@ -5,6 +5,7 @@ 40 package runtime_test 41 42 import ( 43 + "flag" 44 "fmt" 45 "internal/testenv" 46 "io/ioutil" 47 @@ -18,6 +19,25 @@ import ( 48 "testing" 49 ) 50 51 +var target = flag.String("target", "", "if non empty, use 'go_target' to compile test files and 'go_target_exec' to run the binaries") 52 + 53 +func goCmd() string { 54 + if *target != "" { 55 + return "go_" + *target 56 + } 57 + return "go" 58 +} 59 + 60 +func goExecCmd(name string, arg ...string) *exec.Cmd { 61 + var cmd []string 62 + if *target != "" { 63 + cmd = append(cmd, "go_"+*target+"_exec") 64 + } 65 + cmd = append(cmd, name) 66 + cmd = append(cmd, arg...) 67 + return exec.Command(cmd[0], cmd[1:]...) 68 +} 69 + 70 var toRemove []string 71 72 func TestMain(m *testing.M) { 73 @@ -65,7 +85,7 @@ func runTestProg(t *testing.T, binary, name string) string { 74 if err != nil { 75 t.Fatal(err) 76 } 77 - got, _ := testEnv(exec.Command(exe, name)).CombinedOutput() 78 + got, _ := testEnv(goExecCmd(exe, name)).CombinedOutput() 79 return string(got) 80 } 81 82 @@ -92,7 +112,7 @@ func buildTestProg(t *testing.T, binary string) (string, error) { 83 } 84 85 exe := filepath.Join(testprog.dir, binary+".exe") 86 - cmd := exec.Command("go", "build", "-o", exe) 87 + cmd := exec.Command(goCmd(), "build", "-o", exe) 88 cmd.Dir = "testdata/" + binary 89 out, err := testEnv(cmd).CombinedOutput() 90 if err != nil { 91 --- src/runtime/crash_unix_test.go 92 +++ src/runtime/crash_unix_test.go 93 @@ -157,7 +157,7 @@ func TestSignalExitStatus(t *testing.T) { 94 if err != nil { 95 t.Fatal(err) 96 } 97 - err = testEnv(exec.Command(exe, "SignalExitStatus")).Run() 98 + err = testEnv(goExecCmd(exe, "SignalExitStatus")).Run() 99 if err == nil { 100 t.Error("test program succeeded unexpectedly") 101 } else if ee, ok := err.(*exec.ExitError); !ok { 102