mirror of
https://github.com/golang/go
synced 2024-11-26 21:21:34 -07:00
misc/cgo/testcarchive: do not use same executable name in TestInstall
Fixes #17439 Change-Id: I7caa28519f38692f9ca306f0789cbb975fa1d7c4 Reviewed-on: https://go-review.googlesource.com/31112 Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> Run-TryBot: Alex Brainman <alex.brainman@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
42f5ee4cbf
commit
d8cbc2c918
@ -35,13 +35,9 @@ var GOOS, GOARCH string
|
||||
var libgodir string
|
||||
|
||||
func init() {
|
||||
bin = []string{"./testp"}
|
||||
GOOS = goEnv("GOOS")
|
||||
GOARCH = goEnv("GOARCH")
|
||||
execScript := "go_" + GOOS + "_" + GOARCH + "_exec"
|
||||
if executor, err := exec.LookPath(execScript); err == nil {
|
||||
bin = []string{executor, "./testp"}
|
||||
}
|
||||
bin = cmdToRun("./testp")
|
||||
|
||||
ccOut := goEnv("CC")
|
||||
cc = []string{string(ccOut)}
|
||||
@ -126,81 +122,62 @@ func goEnv(key string) string {
|
||||
return strings.TrimSpace(string(out))
|
||||
}
|
||||
|
||||
func compilemain(t *testing.T, libgo string) {
|
||||
ccArgs := append(cc, "-o", "testp"+exeSuffix, "main.c")
|
||||
func cmdToRun(name string) []string {
|
||||
execScript := "go_" + goEnv("GOOS") + "_" + goEnv("GOARCH") + "_exec"
|
||||
executor, err := exec.LookPath(execScript)
|
||||
if err != nil {
|
||||
return []string{name}
|
||||
}
|
||||
return []string{executor, name}
|
||||
}
|
||||
|
||||
func testInstall(t *testing.T, exe, libgoa, libgoh string, buildcmd ...string) {
|
||||
cmd := exec.Command(buildcmd[0], buildcmd[1:]...)
|
||||
cmd.Env = gopathEnv
|
||||
if out, err := cmd.CombinedOutput(); err != nil {
|
||||
t.Logf("%s", out)
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer func() {
|
||||
os.Remove(libgoa)
|
||||
os.Remove(libgoh)
|
||||
}()
|
||||
|
||||
ccArgs := append(cc, "-o", exe, "main.c")
|
||||
if GOOS == "windows" {
|
||||
ccArgs = append(ccArgs, "main_windows.c", libgo, "-lntdll", "-lws2_32", "-lwinmm")
|
||||
ccArgs = append(ccArgs, "main_windows.c", libgoa, "-lntdll", "-lws2_32", "-lwinmm")
|
||||
} else {
|
||||
ccArgs = append(ccArgs, "main_unix.c", libgo)
|
||||
ccArgs = append(ccArgs, "main_unix.c", libgoa)
|
||||
}
|
||||
t.Log(ccArgs)
|
||||
|
||||
if out, err := exec.Command(ccArgs[0], ccArgs[1:]...).CombinedOutput(); err != nil {
|
||||
t.Logf("%s", out)
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer os.Remove(exe)
|
||||
|
||||
binArgs := append(cmdToRun(exe), "arg1", "arg2")
|
||||
if out, err := exec.Command(binArgs[0], binArgs[1:]...).CombinedOutput(); err != nil {
|
||||
t.Logf("%s", out)
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestInstall(t *testing.T) {
|
||||
defer func() {
|
||||
os.Remove("libgo.a")
|
||||
os.Remove("libgo.h")
|
||||
os.Remove("testp")
|
||||
os.RemoveAll("pkg")
|
||||
}()
|
||||
defer os.RemoveAll("pkg")
|
||||
|
||||
cmd := exec.Command("go", "install", "-buildmode=c-archive", "libgo")
|
||||
cmd.Env = gopathEnv
|
||||
if out, err := cmd.CombinedOutput(); err != nil {
|
||||
t.Logf("%s", out)
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
compilemain(t, filepath.Join("pkg", libgodir, "libgo.a"))
|
||||
|
||||
binArgs := append(bin, "arg1", "arg2")
|
||||
if out, err := exec.Command(binArgs[0], binArgs[1:]...).CombinedOutput(); err != nil {
|
||||
t.Logf("%s", out)
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
os.Remove("libgo.a")
|
||||
os.Remove("libgo.h")
|
||||
os.Remove("testp")
|
||||
testInstall(t, "./testp1"+exeSuffix,
|
||||
filepath.Join("pkg", libgodir, "libgo.a"),
|
||||
filepath.Join("pkg", libgodir, "libgo.h"),
|
||||
"go", "install", "-buildmode=c-archive", "libgo")
|
||||
|
||||
// Test building libgo other than installing it.
|
||||
// Header files are now present.
|
||||
cmd = exec.Command("go", "build", "-buildmode=c-archive", filepath.Join("src", "libgo", "libgo.go"))
|
||||
cmd.Env = gopathEnv
|
||||
if out, err := cmd.CombinedOutput(); err != nil {
|
||||
t.Logf("%s", out)
|
||||
t.Fatal(err)
|
||||
}
|
||||
testInstall(t, "./testp2"+exeSuffix, "libgo.a", "libgo.h",
|
||||
"go", "build", "-buildmode=c-archive", filepath.Join("src", "libgo", "libgo.go"))
|
||||
|
||||
compilemain(t, "libgo.a")
|
||||
|
||||
if out, err := exec.Command(binArgs[0], binArgs[1:]...).CombinedOutput(); err != nil {
|
||||
t.Logf("%s", out)
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
os.Remove("libgo.a")
|
||||
os.Remove("libgo.h")
|
||||
os.Remove("testp")
|
||||
|
||||
cmd = exec.Command("go", "build", "-buildmode=c-archive", "-o", "libgo.a", "libgo")
|
||||
cmd.Env = gopathEnv
|
||||
if out, err := cmd.CombinedOutput(); err != nil {
|
||||
t.Logf("%s", out)
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
compilemain(t, "libgo.a")
|
||||
|
||||
if out, err := exec.Command(binArgs[0], binArgs[1:]...).CombinedOutput(); err != nil {
|
||||
t.Logf("%s", out)
|
||||
t.Fatal(err)
|
||||
}
|
||||
testInstall(t, "./testp3"+exeSuffix, "libgo.a", "libgo.h",
|
||||
"go", "build", "-buildmode=c-archive", "-o", "libgo.a", "libgo")
|
||||
}
|
||||
|
||||
func TestEarlySignalHandler(t *testing.T) {
|
||||
|
Loading…
Reference in New Issue
Block a user