[go] cmd/go: convert TestCaseCollisions to the script framework

1 view
Skip to first unread message

Michael Matloob (Gerrit)

unread,
Apr 17, 2020, 4:48:40 PM4/17/20
to goph...@pubsubhelper.golang.org, golang-...@googlegroups.com, Jay Conrod, Bryan C. Mills, Gobot Gobot, golang-co...@googlegroups.com

Michael Matloob submitted this change.

View Change

Approvals: Jay Conrod: Looks good to me, approved Michael Matloob: Run TryBots Gobot Gobot: TryBots succeeded
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 <mat...@golang.org>
TryBot-Result: Gobot Gobot <go...@golang.org>
Reviewed-by: Jay Conrod <jayc...@google.com>
---
M src/cmd/go/go_test.go
A src/cmd/go/testdata/script/list_case_collision.txt
2 files changed, 36 insertions(+), 46 deletions(-)

diff --git a/src/cmd/go/go_test.go b/src/cmd/go/go_test.go
index 723e1d9..e1cf1f8 100644
--- a/src/cmd/go/go_test.go
+++ b/src/cmd/go/go_test.go
@@ -1475,52 +1475,6 @@
}
}

-// 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 0000000..f33afa8
--- /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

To view, visit change 228783. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: go
Gerrit-Branch: master
Gerrit-Change-Id: I48bb36f86f19898618681515ac448c3bb4735857
Gerrit-Change-Number: 228783
Gerrit-PatchSet: 2
Gerrit-Owner: Michael Matloob <mat...@golang.org>
Gerrit-Reviewer: Bryan C. Mills <bcm...@google.com>
Gerrit-Reviewer: Gobot Gobot <go...@golang.org>
Gerrit-Reviewer: Jay Conrod <jayc...@google.com>
Gerrit-Reviewer: Michael Matloob <mat...@golang.org>
Gerrit-MessageType: merged
Reply all
Reply to author
Forward
0 new messages