diff --git a/misc/cgo/errors/badsym_test.go b/misc/cgo/errors/badsym_test.go index fc687567bf..bc3ba2b489 100644 --- a/misc/cgo/errors/badsym_test.go +++ b/misc/cgo/errors/badsym_test.go @@ -201,6 +201,10 @@ func cCompilerCmd(t *testing.T) []string { if !lastSpace { cc = append(cc, s[start:]) } + + // Force reallocation (and avoid aliasing bugs) for tests that append to cc. + cc = cc[:len(cc):len(cc)] + return cc } diff --git a/misc/cgo/testcarchive/carchive_test.go b/misc/cgo/testcarchive/carchive_test.go index a821396c77..d36b97b70e 100644 --- a/misc/cgo/testcarchive/carchive_test.go +++ b/misc/cgo/testcarchive/carchive_test.go @@ -11,7 +11,6 @@ import ( "flag" "fmt" "io" - "io/fs" "log" "os" "os/exec" @@ -141,6 +140,9 @@ func testMain(m *testing.M) int { libgodir = filepath.Join(GOPATH, "pkg", libbase, "testcarchive") cc = append(cc, "-I", libgodir) + // Force reallocation (and avoid aliasing bugs) for parallel tests that append to cc. + cc = cc[:len(cc):len(cc)] + if GOOS == "windows" { exeSuffix = ".exe" } @@ -248,29 +250,6 @@ func testInstall(t *testing.T, exe, libgoa, libgoh string, buildcmd ...string) { var badLineRegexp = regexp.MustCompile(`(?m)^#line [0-9]+ "/.*$`) -// checkIsExecutable verifies that exe exists and has execute permission. -// -// (https://golang.org/issue/49693 notes failures with "no such file or -// directory", so we want to double-check that the executable actually exists -// immediately after we build it in order to better understand that failure -// mode.) -func checkIsExecutable(t *testing.T, exe string) { - t.Helper() - fi, err := os.Stat(exe) - if err != nil { - t.Fatal(err) - } - if runtime.GOOS == "windows" { - // os.File doesn't check the "execute" permission on Windows files - // and as a result doesn't set that bit in a file's permissions. - // Assume that if the file exists it is “executable enough”. - return - } - if fi.Mode()&0111 == 0 { - t.Fatalf("%s is not executable: %0o", exe, fi.Mode()&fs.ModePerm) - } -} - // checkLineComments checks that the export header generated by // -buildmode=c-archive doesn't have any absolute paths in the #line // comments. We don't want those paths because they are unhelpful for @@ -964,7 +943,6 @@ func TestSIGPROF(t *testing.T) { if err != nil { t.Fatal(err) } - checkIsExecutable(t, "./testp6"+exeSuffix) argv := cmdToRun("./testp6") cmd = exec.Command(argv[0], argv[1:]...) @@ -1113,7 +1091,6 @@ func TestManyCalls(t *testing.T) { if err != nil { t.Fatal(err) } - checkIsExecutable(t, "./testp7"+exeSuffix) argv := cmdToRun("./testp7") cmd = exec.Command(argv[0], argv[1:]...) @@ -1170,7 +1147,6 @@ func TestPreemption(t *testing.T) { if err != nil { t.Fatal(err) } - checkIsExecutable(t, "./testp8"+exeSuffix) argv := cmdToRun("./testp8") cmd = exec.Command(argv[0], argv[1:]...) diff --git a/misc/cgo/testcshared/cshared_test.go b/misc/cgo/testcshared/cshared_test.go index 13ec8761e8..c9e9e5fe63 100644 --- a/misc/cgo/testcshared/cshared_test.go +++ b/misc/cgo/testcshared/cshared_test.go @@ -117,6 +117,9 @@ func testMain(m *testing.M) int { } cc = append(cc, "-I", filepath.Join("pkg", libgodir)) + // Force reallocation (and avoid aliasing bugs) for parallel tests that append to cc. + cc = cc[:len(cc):len(cc)] + if GOOS == "windows" { exeSuffix = ".exe" }