]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: convert TestCaseCollisions to the script framework
authorMichael Matloob <matloob@golang.org>
Fri, 17 Apr 2020 17:32:20 +0000 (13:32 -0400)
committerMichael Matloob <matloob@golang.org>
Fri, 17 Apr 2020 20:48:37 +0000 (20:48 +0000)
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 <matloob@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Jay Conrod <jayconrod@google.com>
src/cmd/go/go_test.go
src/cmd/go/testdata/script/list_case_collision.txt [new file with mode: 0644]

index 723e1d91220b8dac429a255a19bfd6c33b247c54..e1cf1f8ff5952f020d8823f450ff18825566fa21 100644 (file)
@@ -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 (file)
index 0000000..f33afa8
--- /dev/null
@@ -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