From 9b56d3e536839f5b1b55d0451e25adc58694dda7 Mon Sep 17 00:00:00 2001 From: Michael Matloob Date: Fri, 17 Apr 2020 13:32:20 -0400 Subject: [PATCH] cmd/go: convert TestCaseCollisions to the script framework I'm planning to modify this test in a follow-up CL, so we might as well convert it to a script test. I don't think there's an easy way to detect whether we have a case-insensitive file system, without adding a new condition to the script framework, so the test is just guessing that darwin and windows could have case-insensitive file systems. Change-Id: I48bb36f86f19898618681515ac448c3bb4735857 Reviewed-on: https://go-review.googlesource.com/c/go/+/228783 Run-TryBot: Michael Matloob TryBot-Result: Gobot Gobot Reviewed-by: Jay Conrod --- src/cmd/go/go_test.go | 46 ------------------- .../testdata/script/list_case_collision.txt | 36 +++++++++++++++ 2 files changed, 36 insertions(+), 46 deletions(-) create mode 100644 src/cmd/go/testdata/script/list_case_collision.txt diff --git a/src/cmd/go/go_test.go b/src/cmd/go/go_test.go index 723e1d9122..e1cf1f8ff5 100644 --- a/src/cmd/go/go_test.go +++ b/src/cmd/go/go_test.go @@ -1475,52 +1475,6 @@ func TestInstallWithTags(t *testing.T) { } } -// Issue 4773 -func TestCaseCollisions(t *testing.T) { - tg := testgo(t) - defer tg.cleanup() - tg.parallel() - tg.tempDir("src/example/a/pkg") - tg.tempDir("src/example/a/Pkg") - tg.tempDir("src/example/b") - tg.setenv("GOPATH", tg.path(".")) - tg.tempFile("src/example/a/a.go", `package p - import ( - _ "example/a/pkg" - _ "example/a/Pkg" - )`) - tg.tempFile("src/example/a/pkg/pkg.go", `package pkg`) - tg.tempFile("src/example/a/Pkg/pkg.go", `package pkg`) - tg.run("list", "-json", "example/a") - tg.grepStdout("case-insensitive import collision", "go list -json example/a did not report import collision") - tg.runFail("build", "example/a") - tg.grepStderr("case-insensitive import collision", "go build example/a did not report import collision") - tg.tempFile("src/example/b/file.go", `package b`) - tg.tempFile("src/example/b/FILE.go", `package b`) - f, err := os.Open(tg.path("src/example/b")) - tg.must(err) - names, err := f.Readdirnames(0) - tg.must(err) - tg.check(f.Close()) - args := []string{"list"} - if len(names) == 2 { - // case-sensitive file system, let directory read find both files - args = append(args, "example/b") - } else { - // case-insensitive file system, list files explicitly on command line - args = append(args, tg.path("src/example/b/file.go"), tg.path("src/example/b/FILE.go")) - } - tg.runFail(args...) - tg.grepStderr("case-insensitive file name collision", "go list example/b did not report file name collision") - - tg.runFail("list", "example/a/pkg", "example/a/Pkg") - tg.grepStderr("case-insensitive import collision", "go list example/a/pkg example/a/Pkg did not report import collision") - tg.run("list", "-json", "-e", "example/a/pkg", "example/a/Pkg") - tg.grepStdout("case-insensitive import collision", "go list -json -e example/a/pkg example/a/Pkg did not report import collision") - tg.runFail("build", "example/a/pkg", "example/a/Pkg") - tg.grepStderr("case-insensitive import collision", "go build example/a/pkg example/a/Pkg did not report import collision") -} - // Issue 17451, 17662. func TestSymlinkWarning(t *testing.T) { tg := testgo(t) diff --git a/src/cmd/go/testdata/script/list_case_collision.txt b/src/cmd/go/testdata/script/list_case_collision.txt new file mode 100644 index 0000000000..f33afa857f --- /dev/null +++ b/src/cmd/go/testdata/script/list_case_collision.txt @@ -0,0 +1,36 @@ +# Tests golang.org/issue/4773 + +go list -json example/a +stdout 'case-insensitive import collision' + +! go build example/a +stderr 'case-insensitive import collision' + +# If we're not guaranteed to have a case-sensitive file system, list files explicitly on command line. +# Otherwise, let directory read find both files. +[darwin] ! go list example/b/file.go example/b/FILE.go +[windows] ! go list example/b/file.go example/b/FILE.go +[!darwin] [!windows] ! go list example/b +stderr 'case-insensitive file name collision' + +! go list example/a/pkg example/a/Pkg +stderr 'case-insensitive import collision' +go list -json -e example/a/pkg example/a/Pkg +stdout 'case-insensitive import collision' +! go build example/a/pkg example/a/Pkg +stderr 'case-insensitive import collision' + +-- example/a/a.go -- +package p +import ( + _ "example/a/pkg" + _ "example/a/Pkg" +) +-- example/a/pkg/pkg.go -- +package pkg +-- example/a/Pkg/pkg.go -- +package pkg +-- example/b/file.go -- +package b +-- example/b/FILE.go -- +package b \ No newline at end of file -- 2.50.0