You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
711 lines
18 KiB
711 lines
18 KiB
test: add runtarget action. |
|
|
|
--- test/fixedbugs/bug248.go |
|
+++ test/fixedbugs/bug248.go |
|
@@ -1,5 +1,5 @@ |
|
// +build !nacl,!plan9,!windows |
|
-// run |
|
+// runtarget |
|
|
|
// Copyright 2009 The Go Authors. All rights reserved. |
|
// Use of this source code is governed by a BSD-style |
|
@@ -8,13 +8,32 @@ |
|
package main |
|
|
|
import ( |
|
+ "flag" |
|
"fmt" |
|
"os" |
|
"os/exec" |
|
"path/filepath" |
|
) |
|
|
|
+var target = flag.String("target", "", "if non empty, use 'go_target' to compile test files and 'go_target_exec' to run the binaries") |
|
+ |
|
+func goCmd() string { |
|
+ if *target != "" { |
|
+ return "go_" + *target |
|
+ } |
|
+ return "go" |
|
+} |
|
+ |
|
+func goRun(cmd ...string) { |
|
+ if *target == "" { |
|
+ run(cmd[0], cmd[1:]...) |
|
+ } else { |
|
+ run("go_"+*target+"_exec", cmd...) |
|
+ } |
|
+} |
|
+ |
|
func main() { |
|
+ flag.Parse() |
|
// TODO: If we get rid of errchk, re-enable this test on Windows. |
|
errchk, err := filepath.Abs("errchk") |
|
check(err) |
|
@@ -22,12 +41,12 @@ func main() { |
|
err = os.Chdir(filepath.Join("fixedbugs", "bug248.dir")) |
|
check(err) |
|
|
|
- run("go", "tool", "compile", "bug0.go") |
|
- run("go", "tool", "compile", "bug1.go") |
|
- run("go", "tool", "compile", "bug2.go") |
|
- run(errchk, "go", "tool", "compile", "-e", "bug3.go") |
|
- run("go", "tool", "link", "bug2.o") |
|
- run(fmt.Sprintf(".%ca.out", filepath.Separator)) |
|
+ run(goCmd(), "tool", "compile", "bug0.go") |
|
+ run(goCmd(), "tool", "compile", "bug1.go") |
|
+ run(goCmd(), "tool", "compile", "bug2.go") |
|
+ run(errchk, goCmd(), "tool", "compile", "-e", "bug3.go") |
|
+ run(goCmd(), "tool", "link", "bug2.o") |
|
+ goRun(fmt.Sprintf(".%ca.out", filepath.Separator)) |
|
|
|
os.Remove("bug0.o") |
|
os.Remove("bug1.o") |
|
--- test/fixedbugs/bug302.go |
|
+++ test/fixedbugs/bug302.go |
|
@@ -1,5 +1,5 @@ |
|
// +build !nacl |
|
-// run |
|
+// runtarget |
|
|
|
// Copyright 2010 The Go Authors. All rights reserved. |
|
// Use of this source code is governed by a BSD-style |
|
@@ -8,16 +8,27 @@ |
|
package main |
|
|
|
import ( |
|
+ "flag" |
|
"fmt" |
|
"os" |
|
"os/exec" |
|
"path/filepath" |
|
) |
|
|
|
+var target = flag.String("target", "", "if non empty, use 'go_target' to compile test files and 'go_target_exec' to run the binaries") |
|
+ |
|
+func goCmd() string { |
|
+ if *target != "" { |
|
+ return "go_" + *target |
|
+ } |
|
+ return "go" |
|
+} |
|
+ |
|
func main() { |
|
- run("go", "tool", "compile", filepath.Join("fixedbugs", "bug302.dir", "p.go")) |
|
- run("go", "tool", "pack", "grc", "pp.a", "p.o") |
|
- run("go", "tool", "compile", "-I", ".", filepath.Join("fixedbugs", "bug302.dir", "main.go")) |
|
+ flag.Parse() |
|
+ run(goCmd(), "tool", "compile", filepath.Join("fixedbugs", "bug302.dir", "p.go")) |
|
+ run(goCmd(), "tool", "pack", "grc", "pp.a", "p.o") |
|
+ run(goCmd(), "tool", "compile", "-I", ".", filepath.Join("fixedbugs", "bug302.dir", "main.go")) |
|
os.Remove("p.o") |
|
os.Remove("pp.a") |
|
os.Remove("main.o") |
|
--- test/fixedbugs/bug345.go |
|
+++ test/fixedbugs/bug345.go |
|
@@ -1,5 +1,5 @@ |
|
// +build !nacl,!plan9,!windows |
|
-// run |
|
+// runtarget |
|
|
|
// Copyright 2011 The Go Authors. All rights reserved. |
|
// Use of this source code is governed by a BSD-style |
|
@@ -8,13 +8,24 @@ |
|
package main |
|
|
|
import ( |
|
+ "flag" |
|
"fmt" |
|
"os" |
|
"os/exec" |
|
"path/filepath" |
|
) |
|
|
|
+var target = flag.String("target", "", "if non empty, use 'go_target' to compile test files and 'go_target_exec' to run the binaries") |
|
+ |
|
+func goCmd() string { |
|
+ if *target != "" { |
|
+ return "go_" + *target |
|
+ } |
|
+ return "go" |
|
+} |
|
+ |
|
func main() { |
|
+ flag.Parse() |
|
// TODO: If we get rid of errchk, re-enable this test on Plan 9 and Windows. |
|
errchk, err := filepath.Abs("errchk") |
|
check(err) |
|
@@ -22,8 +33,8 @@ func main() { |
|
err = os.Chdir(filepath.Join(".", "fixedbugs", "bug345.dir")) |
|
check(err) |
|
|
|
- run("go", "tool", "compile", "io.go") |
|
- run(errchk, "go", "tool", "compile", "-e", "main.go") |
|
+ run(goCmd(), "tool", "compile", "io.go") |
|
+ run(errchk, goCmd(), "tool", "compile", "-e", "main.go") |
|
os.Remove("io.o") |
|
} |
|
|
|
--- test/fixedbugs/bug369.go |
|
+++ test/fixedbugs/bug369.go |
|
@@ -1,5 +1,5 @@ |
|
// +build !nacl,!windows |
|
-// run |
|
+// runtarget |
|
|
|
// Copyright 2011 The Go Authors. All rights reserved. |
|
// Use of this source code is governed by a BSD-style |
|
@@ -10,21 +10,40 @@ |
|
package main |
|
|
|
import ( |
|
+ "flag" |
|
"fmt" |
|
"os" |
|
"os/exec" |
|
"path/filepath" |
|
) |
|
|
|
+var target = flag.String("target", "", "if non empty, use 'go_target' to compile test files and 'go_target_exec' to run the binaries") |
|
+ |
|
+func goCmd() string { |
|
+ if *target != "" { |
|
+ return "go_" + *target |
|
+ } |
|
+ return "go" |
|
+} |
|
+ |
|
+func goRun(cmd ...string) { |
|
+ if *target == "" { |
|
+ run(cmd[0], cmd[1:]...) |
|
+ } else { |
|
+ run("go_"+*target+"_exec", cmd...) |
|
+ } |
|
+} |
|
+ |
|
func main() { |
|
+ flag.Parse() |
|
err := os.Chdir(filepath.Join(".", "fixedbugs", "bug369.dir")) |
|
check(err) |
|
|
|
- run("go", "tool", "compile", "-N", "-o", "slow.o", "pkg.go") |
|
- run("go", "tool", "compile", "-o", "fast.o", "pkg.go") |
|
- run("go", "tool", "compile", "-o", "main.o", "main.go") |
|
- run("go", "tool", "link", "-o", "a.exe", "main.o") |
|
- run("." + string(filepath.Separator) + "a.exe") |
|
+ run(goCmd(), "tool", "compile", "-N", "-o", "slow.o", "pkg.go") |
|
+ run(goCmd(), "tool", "compile", "-o", "fast.o", "pkg.go") |
|
+ run(goCmd(), "tool", "compile", "-o", "main.o", "main.go") |
|
+ run(goCmd(), "tool", "link", "-o", "a.exe", "main.o") |
|
+ goRun("." + string(filepath.Separator) + "a.exe") |
|
|
|
os.Remove("slow.o") |
|
os.Remove("fast.o") |
|
--- test/fixedbugs/bug429_run.go |
|
+++ test/fixedbugs/bug429_run.go |
|
@@ -1,5 +1,5 @@ |
|
// +build !nacl |
|
-// run |
|
+// runtarget |
|
|
|
// Copyright 2014 The Go Authors. All rights reserved. |
|
// Use of this source code is governed by a BSD-style |
|
@@ -10,6 +10,7 @@ |
|
package main |
|
|
|
import ( |
|
+ "flag" |
|
"fmt" |
|
"os" |
|
"os/exec" |
|
@@ -17,8 +18,27 @@ import ( |
|
"strings" |
|
) |
|
|
|
+var target = flag.String("target", "", "if non empty, use 'go_target' to compile test files and 'go_target_exec' to run the binaries") |
|
+ |
|
+func goCmd() string { |
|
+ if *target != "" { |
|
+ return "go_" + *target |
|
+ } |
|
+ return "go" |
|
+} |
|
+ |
|
+func goRun(args ...string) *exec.Cmd { |
|
+ cmd := []string{"run"} |
|
+ if *target != "" { |
|
+ cmd = append(cmd, "-exec", "go_"+*target+"_exec") |
|
+ } |
|
+ cmd = append(cmd, args...) |
|
+ return exec.Command(goCmd(), cmd...) |
|
+} |
|
+ |
|
func main() { |
|
- cmd := exec.Command("go", "run", filepath.Join("fixedbugs", "bug429.go")) |
|
+ flag.Parse() |
|
+ cmd := goRun(filepath.Join("fixedbugs", "bug429.go")) |
|
out, err := cmd.CombinedOutput() |
|
if err == nil { |
|
fmt.Println("expected deadlock") |
|
--- test/fixedbugs/issue10607.go |
|
+++ test/fixedbugs/issue10607.go |
|
@@ -1,5 +1,5 @@ |
|
// +build linux,!ppc64,!ppc64le,!mips64,!mips64le android |
|
-// run |
|
+// runtarget |
|
|
|
// Copyright 2015 The Go Authors. All rights reserved. |
|
// Use of this source code is governed by a BSD-style |
|
@@ -11,19 +11,39 @@ |
|
package main |
|
|
|
import ( |
|
+ "flag" |
|
"fmt" |
|
"os" |
|
"os/exec" |
|
"path/filepath" |
|
) |
|
|
|
+var target = flag.String("target", "", "if non empty, use 'go_target' to compile test files and 'go_target_exec' to run the binaries") |
|
+ |
|
+func goCmd() string { |
|
+ if *target != "" { |
|
+ return "go_" + *target |
|
+ } |
|
+ return "go" |
|
+} |
|
+ |
|
+func goRun(args ...string) *exec.Cmd { |
|
+ cmd := []string{"run"} |
|
+ if *target != "" { |
|
+ cmd = append(cmd, "-exec", "go_"+*target+"_exec") |
|
+ } |
|
+ cmd = append(cmd, args...) |
|
+ return exec.Command(goCmd(), cmd...) |
|
+} |
|
+ |
|
func main() { |
|
+ flag.Parse() |
|
test("internal") |
|
test("external") |
|
} |
|
|
|
func test(linkmode string) { |
|
- out, err := exec.Command("go", "run", "-ldflags", "-B=0x12345678 -linkmode="+linkmode, filepath.Join("fixedbugs", "issue10607a.go")).CombinedOutput() |
|
+ out, err := goRun("-ldflags", "-B=0x12345678 -linkmode="+linkmode, filepath.Join("fixedbugs", "issue10607a.go")).CombinedOutput() |
|
if err != nil { |
|
fmt.Printf("BUG: linkmode=%s %v\n%s\n", linkmode, err, out) |
|
os.Exit(1) |
|
--- test/fixedbugs/issue11771.go |
|
+++ test/fixedbugs/issue11771.go |
|
@@ -1,5 +1,5 @@ |
|
// +build !nacl |
|
-// run |
|
+// runtarget |
|
|
|
// Copyright 2015 The Go Authors. All rights reserved. |
|
// Use of this source code is governed by a BSD-style |
|
@@ -11,6 +11,7 @@ package main |
|
|
|
import ( |
|
"bytes" |
|
+ "flag" |
|
"fmt" |
|
"io/ioutil" |
|
"log" |
|
@@ -20,7 +21,17 @@ import ( |
|
"runtime" |
|
) |
|
|
|
+var target = flag.String("target", "", "if non empty, use 'go_target' to compile test files and 'go_target_exec' to run the binaries") |
|
+ |
|
+func goCmd() string { |
|
+ if *target != "" { |
|
+ return "go_" + *target |
|
+ } |
|
+ return "go" |
|
+} |
|
+ |
|
func main() { |
|
+ flag.Parse() |
|
if runtime.Compiler != "gc" { |
|
return |
|
} |
|
@@ -52,7 +63,7 @@ func x() { |
|
log.Fatal(err) |
|
} |
|
|
|
- cmd := exec.Command("go", "tool", "compile", "x.go") |
|
+ cmd := exec.Command(goCmd(), "tool", "compile", "x.go") |
|
cmd.Dir = dir |
|
output, err := cmd.CombinedOutput() |
|
if err == nil { |
|
--- test/fixedbugs/issue9355.go |
|
+++ test/fixedbugs/issue9355.go |
|
@@ -1,4 +1,4 @@ |
|
-// run |
|
+// runtarget |
|
|
|
// Copyright 2014 The Go Authors. All rights reserved. |
|
// Use of this source code is governed by a BSD-style |
|
@@ -7,6 +7,7 @@ |
|
package main |
|
|
|
import ( |
|
+ "flag" |
|
"fmt" |
|
"os" |
|
"os/exec" |
|
@@ -15,7 +16,17 @@ import ( |
|
"runtime" |
|
) |
|
|
|
+var target = flag.String("target", "", "if non empty, use 'go_target' to compile test files and 'go_target_exec' to run the binaries") |
|
+ |
|
+func goCmd() string { |
|
+ if *target != "" { |
|
+ return "go_" + *target |
|
+ } |
|
+ return "go" |
|
+} |
|
+ |
|
func main() { |
|
+ flag.Parse() |
|
if runtime.Compiler != "gc" || runtime.GOOS == "nacl" { |
|
return |
|
} |
|
@@ -23,7 +34,7 @@ func main() { |
|
err := os.Chdir(filepath.Join("fixedbugs", "issue9355.dir")) |
|
check(err) |
|
|
|
- out := run("go", "tool", "compile", "-S", "a.go") |
|
+ out := run(goCmd(), "tool", "compile", "-S", "a.go") |
|
os.Remove("a.o") |
|
|
|
// 6g/8g print the offset as dec, but 5g/9g print the offset as hex. |
|
--- test/fixedbugs/issue9862_run.go |
|
+++ test/fixedbugs/issue9862_run.go |
|
@@ -1,5 +1,5 @@ |
|
// +build !nacl |
|
-// run |
|
+// runtarget |
|
|
|
// Copyright 2015 The Go Authors. All rights reserved. |
|
// Use of this source code is governed by a BSD-style |
|
@@ -10,12 +10,32 @@ |
|
package main |
|
|
|
import ( |
|
+ "flag" |
|
"os/exec" |
|
"strings" |
|
) |
|
|
|
+var target = flag.String("target", "", "if non empty, use 'go_target' to compile test files and 'go_target_exec' to run the binaries") |
|
+ |
|
+func goCmd() string { |
|
+ if *target != "" { |
|
+ return "go_" + *target |
|
+ } |
|
+ return "go" |
|
+} |
|
+ |
|
+func goRun(args ...string) *exec.Cmd { |
|
+ cmd := []string{"run"} |
|
+ if *target != "" { |
|
+ cmd = append(cmd, "-exec", "go_"+*target+"_exec") |
|
+ } |
|
+ cmd = append(cmd, args...) |
|
+ return exec.Command(goCmd(), cmd...) |
|
+} |
|
+ |
|
func main() { |
|
- out, err := exec.Command("go", "run", "fixedbugs/issue9862.go").CombinedOutput() |
|
+ flag.Parse() |
|
+ out, err := goRun("fixedbugs/issue9862.go").CombinedOutput() |
|
outstr := string(out) |
|
if err == nil { |
|
println("go run issue9862.go succeeded, should have failed\n", outstr) |
|
--- test/linkmain_run.go |
|
+++ test/linkmain_run.go |
|
@@ -1,5 +1,5 @@ |
|
// +build !nacl |
|
-// run |
|
+// runtarget |
|
|
|
// Copyright 2014 The Go Authors. All rights reserved. |
|
// Use of this source code is governed by a BSD-style |
|
@@ -10,12 +10,22 @@ |
|
package main |
|
|
|
import ( |
|
+ "flag" |
|
"fmt" |
|
"os" |
|
"os/exec" |
|
"strings" |
|
) |
|
|
|
+var target = flag.String("target", "", "if non empty, use 'go_target' to compile test files and 'go_target_exec' to run the binaries") |
|
+ |
|
+func goCmd() string { |
|
+ if *target != "" { |
|
+ return "go_" + *target |
|
+ } |
|
+ return "go" |
|
+} |
|
+ |
|
func cleanup() { |
|
os.Remove("linkmain.o") |
|
os.Remove("linkmain.a") |
|
@@ -51,16 +61,18 @@ func runFail(cmdline string) { |
|
} |
|
|
|
func main() { |
|
+ flag.Parse() |
|
+ |
|
// helloworld.go is package main |
|
- run("go tool compile -o linkmain.o helloworld.go") |
|
- run("go tool compile -pack -o linkmain.a helloworld.go") |
|
- run("go tool link -o linkmain.exe linkmain.o") |
|
- run("go tool link -o linkmain.exe linkmain.a") |
|
+ run(goCmd() + " tool compile -o linkmain.o helloworld.go") |
|
+ run(goCmd() + " tool compile -pack -o linkmain.a helloworld.go") |
|
+ run(goCmd() + " tool link -o linkmain.exe linkmain.o") |
|
+ run(goCmd() + " tool link -o linkmain.exe linkmain.a") |
|
|
|
// linkmain.go is not |
|
- run("go tool compile -o linkmain1.o linkmain.go") |
|
- run("go tool compile -pack -o linkmain1.a linkmain.go") |
|
- runFail("go tool link -o linkmain.exe linkmain1.o") |
|
- runFail("go tool link -o linkmain.exe linkmain1.a") |
|
+ run(goCmd() + " tool compile -o linkmain1.o linkmain.go") |
|
+ run(goCmd() + " tool compile -pack -o linkmain1.a linkmain.go") |
|
+ runFail(goCmd() + " tool link -o linkmain.exe linkmain1.o") |
|
+ runFail(goCmd() + " tool link -o linkmain.exe linkmain1.a") |
|
cleanup() |
|
} |
|
--- test/linkx_run.go |
|
+++ test/linkx_run.go |
|
@@ -1,5 +1,5 @@ |
|
// +build !nacl |
|
-// run |
|
+// runtarget |
|
|
|
// Copyright 2014 The Go Authors. All rights reserved. |
|
// Use of this source code is governed by a BSD-style |
|
@@ -11,20 +11,40 @@ package main |
|
|
|
import ( |
|
"bytes" |
|
+ "flag" |
|
"fmt" |
|
"os" |
|
"os/exec" |
|
"strings" |
|
) |
|
|
|
+var target = flag.String("target", "", "if non empty, use 'go_target' to compile test files and 'go_target_exec' to run the binaries") |
|
+ |
|
+func goCmd() string { |
|
+ if *target != "" { |
|
+ return "go_" + *target |
|
+ } |
|
+ return "go" |
|
+} |
|
+ |
|
+func goRun(args ...string) *exec.Cmd { |
|
+ cmd := []string{"run"} |
|
+ if *target != "" { |
|
+ cmd = append(cmd, "-exec", "go_"+*target+"_exec") |
|
+ } |
|
+ cmd = append(cmd, args...) |
|
+ return exec.Command(goCmd(), cmd...) |
|
+} |
|
+ |
|
func main() { |
|
+ flag.Parse() |
|
test(" ") // old deprecated syntax |
|
test("=") // new syntax |
|
} |
|
|
|
func test(sep string) { |
|
// Successful run |
|
- cmd := exec.Command("go", "run", "-ldflags=-X main.tbd"+sep+"hello -X main.overwrite"+sep+"trumped -X main.nosuchsymbol"+sep+"neverseen", "linkx.go") |
|
+ cmd := goRun("-ldflags=-X main.tbd"+sep+"hello -X main.overwrite"+sep+"trumped -X main.nosuchsymbol"+sep+"neverseen", "linkx.go") |
|
var out, errbuf bytes.Buffer |
|
cmd.Stdout = &out |
|
cmd.Stderr = &errbuf |
|
@@ -44,7 +64,7 @@ func test(sep string) { |
|
} |
|
|
|
// Issue 8810 |
|
- cmd = exec.Command("go", "run", "-ldflags=-X main.tbd", "linkx.go") |
|
+ cmd = goRun("-ldflags=-X main.tbd", "linkx.go") |
|
_, err = cmd.CombinedOutput() |
|
if err == nil { |
|
fmt.Println("-X linker flag should not accept keys without values") |
|
@@ -52,7 +72,7 @@ func test(sep string) { |
|
} |
|
|
|
// Issue 9621 |
|
- cmd = exec.Command("go", "run", "-ldflags=-X main.b=false -X main.x=42", "linkx.go") |
|
+ cmd = goRun("-ldflags=-X main.b=false -X main.x=42", "linkx.go") |
|
outx, err := cmd.CombinedOutput() |
|
if err == nil { |
|
fmt.Println("-X linker flag should not overwrite non-strings") |
|
--- test/nosplit.go |
|
+++ test/nosplit.go |
|
@@ -1,5 +1,5 @@ |
|
// +build !nacl |
|
-// run |
|
+// runtarget |
|
|
|
// Copyright 2014 The Go Authors. All rights reserved. |
|
// Use of this source code is governed by a BSD-style |
|
@@ -9,6 +9,7 @@ package main |
|
|
|
import ( |
|
"bytes" |
|
+ "flag" |
|
"fmt" |
|
"io/ioutil" |
|
"log" |
|
@@ -16,11 +17,28 @@ import ( |
|
"os/exec" |
|
"path/filepath" |
|
"regexp" |
|
- "runtime" |
|
"strconv" |
|
"strings" |
|
) |
|
|
|
+var target = flag.String("target", "", "if non empty, use 'go_target' to compile test files and 'go_target_exec' to run the binaries") |
|
+ |
|
+func goCmd() string { |
|
+ if *target != "" { |
|
+ return "go_" + *target |
|
+ } |
|
+ return "go" |
|
+} |
|
+ |
|
+func goArch() string { |
|
+ goarch, err := exec.Command(goCmd(), "env", "GOARCH").Output() |
|
+ if err != nil { |
|
+ bug() |
|
+ fmt.Printf("running go env GOARCH: %v\n", err) |
|
+ } |
|
+ return strings.TrimSpace(string(goarch)) |
|
+} |
|
+ |
|
var tests = ` |
|
# These are test cases for the linker analysis that detects chains of |
|
# nosplit functions that would cause a stack overflow. |
|
@@ -193,12 +211,13 @@ var ( |
|
) |
|
|
|
func main() { |
|
- goarch := os.Getenv("GOARCH") |
|
+ flag.Parse() |
|
+ goarch := goArch() |
|
if goarch == "" { |
|
- goarch = runtime.GOARCH |
|
+ return |
|
} |
|
|
|
- version, err := exec.Command("go", "tool", "compile", "-V").Output() |
|
+ version, err := exec.Command(goCmd(), "tool", "compile", "-V").Output() |
|
if err != nil { |
|
bug() |
|
fmt.Printf("running go tool compile -V: %v\n", err) |
|
@@ -338,7 +357,7 @@ TestCases: |
|
log.Fatal(err) |
|
} |
|
|
|
- cmd := exec.Command("go", "build") |
|
+ cmd := exec.Command(goCmd(), "build") |
|
cmd.Dir = dir |
|
output, err := cmd.CombinedOutput() |
|
if err == nil { |
|
--- test/run.go |
|
+++ test/run.go |
|
@@ -220,6 +220,16 @@ func goRun(runcmd runCmd, goname string, args ...string) (out []byte, err error) |
|
return runcmd(cmd...) |
|
} |
|
|
|
+func goRunTarget(runcmd runCmd, goname string, args ...string) (out []byte, err error) { |
|
+ cmd := []string{"go_local", "run"} |
|
+ cmd = append(cmd, goname) |
|
+ if *target != "" { |
|
+ cmd = append(cmd, "-target", *target) |
|
+ } |
|
+ cmd = append(cmd, args...) |
|
+ return runcmd(cmd...) |
|
+} |
|
+ |
|
// skipError describes why a test was skipped. |
|
type skipError string |
|
|
|
@@ -469,7 +479,7 @@ func (t *test) run() { |
|
case "cmpout": |
|
action = "run" // the run case already looks for <dir>/<test>.out files |
|
fallthrough |
|
- case "compile", "compiledir", "build", "run", "runoutput", "rundir": |
|
+ case "compile", "compiledir", "build", "run", "runtarget", "runoutput", "rundir": |
|
t.action = action |
|
case "errorcheck", "errorcheckdir", "errorcheckoutput": |
|
t.action = action |
|
@@ -653,6 +663,17 @@ func (t *test) run() { |
|
t.err = fmt.Errorf("incorrect output\n%s", out) |
|
} |
|
|
|
+ case "runtarget": |
|
+ useTmp = false |
|
+ out, err := goRunTarget(runcmd, t.goFileName(), args...) |
|
+ if err != nil { |
|
+ t.err = err |
|
+ return |
|
+ } |
|
+ if strings.Replace(string(out), "\r\n", "\n", -1) != t.expectedOutput() { |
|
+ t.err = fmt.Errorf("incorrect output\n%s", out) |
|
+ } |
|
+ |
|
case "runoutput": |
|
rungatec <- true |
|
defer func() { |
|
--- test/sinit_run.go |
|
+++ test/sinit_run.go |
|
@@ -1,5 +1,5 @@ |
|
// +build !nacl |
|
-// run |
|
+// runtarget |
|
|
|
// Copyright 2014 The Go Authors. All rights reserved. |
|
// Use of this source code is governed by a BSD-style |
|
@@ -11,13 +11,24 @@ package main |
|
|
|
import ( |
|
"bytes" |
|
+ "flag" |
|
"fmt" |
|
"os" |
|
"os/exec" |
|
) |
|
|
|
+var target = flag.String("target", "", "if non empty, use 'go_target' to compile test files and 'go_target_exec' to run the binaries") |
|
+ |
|
+func goCmd() string { |
|
+ if *target != "" { |
|
+ return "go_" + *target |
|
+ } |
|
+ return "go" |
|
+} |
|
+ |
|
func main() { |
|
- cmd := exec.Command("go", "tool", "compile", "-S", "sinit.go") |
|
+ flag.Parse() |
|
+ cmd := exec.Command(goCmd(), "tool", "compile", "-S", "sinit.go") |
|
out, err := cmd.CombinedOutput() |
|
if err != nil { |
|
fmt.Println(string(out))
|
|
|