diff options
Diffstat (limited to 'misc/cgo/testgodefs/testgodefs_test.go')
-rw-r--r-- | misc/cgo/testgodefs/testgodefs_test.go | 112 |
1 files changed, 0 insertions, 112 deletions
diff --git a/misc/cgo/testgodefs/testgodefs_test.go b/misc/cgo/testgodefs/testgodefs_test.go deleted file mode 100644 index d03769ea87..0000000000 --- a/misc/cgo/testgodefs/testgodefs_test.go +++ /dev/null @@ -1,112 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package testgodefs - -import ( - "bytes" - "os" - "os/exec" - "path/filepath" - "runtime" - "strings" - "testing" -) - -// We are testing cgo -godefs, which translates Go files that use -// import "C" into Go files with Go definitions of types defined in the -// import "C" block. Add more tests here. -var filePrefixes = []string{ - "anonunion", - "bitfields", - "issue8478", - "fieldtypedef", - "issue37479", - "issue37621", - "issue38649", - "issue39534", - "issue48396", -} - -func TestGoDefs(t *testing.T) { - testdata, err := filepath.Abs("testdata") - if err != nil { - t.Fatal(err) - } - - gopath, err := os.MkdirTemp("", "testgodefs-gopath") - if err != nil { - t.Fatal(err) - } - defer os.RemoveAll(gopath) - - dir := filepath.Join(gopath, "src", "testgodefs") - if err := os.MkdirAll(dir, 0755); err != nil { - t.Fatal(err) - } - - for _, fp := range filePrefixes { - cmd := exec.Command("go", "tool", "cgo", - "-godefs", - "-srcdir", testdata, - "-objdir", dir, - fp+".go") - cmd.Stderr = new(bytes.Buffer) - - out, err := cmd.Output() - if err != nil { - t.Fatalf("%s: %v\n%s", strings.Join(cmd.Args, " "), err, cmd.Stderr) - } - - fn := fp + "_defs.go" - if err := os.WriteFile(filepath.Join(dir, fn), out, 0644); err != nil { - t.Fatal(err) - } - - // Verify that command line arguments are not rewritten in the generated comment, - // see go.dev/issue/52063 - hasGeneratedByComment := false - for _, line := range strings.Split(strings.TrimSpace(string(out)), "\n") { - cgoExe := "cgo" - if runtime.GOOS == "windows" { - cgoExe = "cgo.exe" - } - if !strings.HasPrefix(line, "// "+cgoExe+" -godefs") { - continue - } - if want := "// " + cgoExe + " " + strings.Join(cmd.Args[3:], " "); line != want { - t.Errorf("%s: got generated comment %q, want %q", fn, line, want) - } - hasGeneratedByComment = true - break - } - - if !hasGeneratedByComment { - t.Errorf("%s: comment with generating cgo -godefs command not found", fn) - } - } - - main, err := os.ReadFile(filepath.Join("testdata", "main.go")) - if err != nil { - t.Fatal(err) - } - if err := os.WriteFile(filepath.Join(dir, "main.go"), main, 0644); err != nil { - t.Fatal(err) - } - - if err := os.WriteFile(filepath.Join(dir, "go.mod"), []byte("module testgodefs\ngo 1.14\n"), 0644); err != nil { - t.Fatal(err) - } - - // Use 'go run' to build and run the resulting binary in a single step, - // instead of invoking 'go build' and the resulting binary separately, so that - // this test can pass on mobile builders, which do not copy artifacts back - // from remote invocations. - cmd := exec.Command("go", "run", ".") - cmd.Env = append(os.Environ(), "GOPATH="+gopath) - cmd.Dir = dir - if out, err := cmd.CombinedOutput(); err != nil { - t.Fatalf("%s [%s]: %v\n%s", strings.Join(cmd.Args, " "), dir, err, out) - } -} |