func (t *tester) testDirTest(dt *distTest, shard, shards int) error {
runtest.Do(func() {
- f, err := ioutil.TempFile("", "runtest-*.exe") // named exe for Windows, but harmless elsewhere
- if err != nil {
+ const exe = "runtest.exe" // named exe for Windows, but harmless elsewhere
+ cmd := t.dirCmd("test", "go", "build", "-o", exe, "run.go")
+ cmd.Env = append(os.Environ(), "GOOS="+gohostos, "GOARCH="+gohostarch)
+ runtest.exe = filepath.Join(cmd.Dir, exe)
+ if err := cmd.Run(); err != nil {
runtest.err = err
return
}
- f.Close()
-
- runtest.exe = f.Name()
xatexit(func() {
os.Remove(runtest.exe)
})
-
- cmd := t.dirCmd("test", "go", "build", "-o", runtest.exe, "run.go")
- cmd.Env = append(os.Environ(), "GOOS="+gohostos, "GOARCH="+gohostarch)
- runtest.err = cmd.Run()
})
if runtest.err != nil {
return runtest.err
import (
"fmt"
- "io/ioutil"
"os"
"os/exec"
"path/filepath"
)
-var tmpDir string
-
func main() {
- fb, err := filepath.Abs("fixedbugs")
- if err == nil {
- tmpDir, err = ioutil.TempDir("", "bug302")
- }
- if err != nil {
- fmt.Println(err)
- os.Exit(1)
- }
- defer os.RemoveAll(tmpDir)
-
- run("go", "tool", "compile", filepath.Join(fb, "bug302.dir", "p.go"))
+ 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(fb, "bug302.dir", "main.go"))
+ run("go", "tool", "compile", "-I", ".", filepath.Join("fixedbugs", "bug302.dir", "main.go"))
+ os.Remove("p.o")
+ os.Remove("pp.a")
+ os.Remove("main.o")
}
func run(cmd string, args ...string) {
- c := exec.Command(cmd, args...)
- c.Dir = tmpDir
- out, err := c.CombinedOutput()
+ out, err := exec.Command(cmd, args...).CombinedOutput()
if err != nil {
fmt.Println(string(out))
fmt.Println(err)
import (
"fmt"
- "io/ioutil"
"os"
"os/exec"
"path/filepath"
err := os.Chdir(filepath.Join(".", "fixedbugs", "bug369.dir"))
check(err)
- tmpDir, err := ioutil.TempDir("", "bug369")
- check(err)
- defer os.RemoveAll(tmpDir)
-
- tmp := func(name string) string {
- return filepath.Join(tmpDir, name)
- }
+ 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("go", "tool", "compile", "-N", "-o", tmp("slow.o"), "pkg.go")
- run("go", "tool", "compile", "-o", tmp("fast.o"), "pkg.go")
- run("go", "tool", "compile", "-D", tmpDir, "-o", tmp("main.o"), "main.go")
- run("go", "tool", "link", "-o", tmp("a.exe"), tmp("main.o"))
- run(tmp("a.exe"))
+ os.Remove("slow.o")
+ os.Remove("fast.o")
+ os.Remove("main.o")
+ os.Remove("a.exe")
}
func run(name string, args ...string) {
err := os.Chdir(filepath.Join("fixedbugs", "issue9355.dir"))
check(err)
- out := run("go", "tool", "compile", "-o", os.DevNull, "-S", "a.go")
+ out := run("go", "tool", "compile", "-S", "a.go")
+ os.Remove("a.o")
// 6g/8g print the offset as dec, but 5g/9g print the offset as hex.
patterns := []string{
import (
"fmt"
- "io/ioutil"
"os"
"os/exec"
- "path/filepath"
"strings"
)
-var tmpDir string
-
func cleanup() {
- os.RemoveAll(tmpDir)
+ os.Remove("linkmain.o")
+ os.Remove("linkmain.a")
+ os.Remove("linkmain1.o")
+ os.Remove("linkmain1.a")
+ os.Remove("linkmain.exe")
}
-func run(cmdline ...string) {
- args := strings.Fields(strings.Join(cmdline, " "))
+func run(cmdline string) {
+ args := strings.Fields(cmdline)
cmd := exec.Command(args[0], args[1:]...)
out, err := cmd.CombinedOutput()
if err != nil {
}
}
-func runFail(cmdline ...string) {
- args := strings.Fields(strings.Join(cmdline, " "))
+func runFail(cmdline string) {
+ args := strings.Fields(cmdline)
cmd := exec.Command(args[0], args[1:]...)
out, err := cmd.CombinedOutput()
if err == nil {
}
func main() {
- var err error
- tmpDir, err = ioutil.TempDir("", "")
- if err != nil {
- fmt.Println(err)
- os.Exit(1)
- }
- tmp := func(name string) string {
- return filepath.Join(tmpDir, name)
- }
-
// helloworld.go is package main
- run("go tool compile -o", tmp("linkmain.o"), "helloworld.go")
- run("go tool compile -pack -o", tmp("linkmain.a"), "helloworld.go")
- run("go tool link -o", tmp("linkmain.exe"), tmp("linkmain.o"))
- run("go tool link -o", tmp("linkmain.exe"), tmp("linkmain.a"))
+ 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")
// linkmain.go is not
- run("go tool compile -o", tmp("linkmain1.o"), "linkmain.go")
- run("go tool compile -pack -o", tmp("linkmain1.a"), "linkmain.go")
- runFail("go tool link -o", tmp("linkmain.exe"), tmp("linkmain1.o"))
- runFail("go tool link -o", tmp("linkmain.exe"), tmp("linkmain1.a"))
+ 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")
cleanup()
}
)
func main() {
- cmd := exec.Command("go", "tool", "compile", "-o", os.DevNull, "-S", "sinit.go")
+ cmd := exec.Command("go", "tool", "compile", "-S", "sinit.go")
out, err := cmd.CombinedOutput()
if err != nil {
fmt.Println(string(out))
fmt.Println(err)
os.Exit(1)
}
+ os.Remove("sinit.o")
- if len(bytes.TrimSpace(out)) == 0 {
- fmt.Println("'go tool compile -S sinit.go' printed no output")
- os.Exit(1)
- }
if bytes.Contains(out, []byte("initdone")) {
fmt.Println("sinit generated an init function")
os.Exit(1)