}
}
-// 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)
--- /dev/null
+# 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