aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBryan C. Mills <bcmills@google.com>2018-08-06 14:55:12 -0400
committerBryan C. Mills <bcmills@google.com>2018-08-09 18:40:14 +0000
commit8c0fd83f72d0f8804001aeab52489130cb33b90a (patch)
treef74c8ab129131d8f2e80cd6693064b0efc2d65ab
parent79fe6f98545219d14f92c8c87159133c4c1b1a78 (diff)
downloadgo-8c0fd83f72d0f8804001aeab52489130cb33b90a.tar.gz
go-8c0fd83f72d0f8804001aeab52489130cb33b90a.zip
cmd/go: add test cases for 'go list' with bad import paths
Change-Id: I45a675c5f699b23284a2a50b33cb22882f4b3b80 Reviewed-on: https://go-review.googlesource.com/128016 Reviewed-by: Russ Cox <rsc@golang.org>
-rw-r--r--src/cmd/go/testdata/script/list_bad_import.txt67
-rw-r--r--src/cmd/go/testdata/script/mod_list_bad_import.txt59
2 files changed, 126 insertions, 0 deletions
diff --git a/src/cmd/go/testdata/script/list_bad_import.txt b/src/cmd/go/testdata/script/list_bad_import.txt
new file mode 100644
index 0000000000..ba66b0937f
--- /dev/null
+++ b/src/cmd/go/testdata/script/list_bad_import.txt
@@ -0,0 +1,67 @@
+# This test matches mod_list_bad_import, but in GOPATH mode.
+# Please keep them in sync.
+
+env GO111MODULE=off
+cd example.com
+
+# Without -e, listing an otherwise-valid package with an unsatisfied direct import should fail.
+# BUG: Today it succeeds.
+go list -f '{{if .Error}}error{{end}} {{if .Incomplete}}incomplete{{end}} {{range .DepsErrors}}bad dep: {{.Err}}{{end}}' example.com/direct
+! stdout ^error
+stdout 'incomplete'
+stdout 'bad dep: .*example.com[/\\]notfound'
+
+# Listing with -deps should also fail.
+# BUG: Today, it does not.
+# ! go list -deps example.com/direct
+# stderr example.com[/\\]notfound
+go list -deps example.com/direct
+stdout example.com/notfound
+
+
+# Listing an otherwise-valid package that imports some *other* package with an
+# unsatisfied import should also fail.
+# BUG: Today, it succeeds.
+go list -f '{{if .Error}}error{{end}} {{if .Incomplete}}incomplete{{end}} {{range .DepsErrors}}bad dep: {{.Err}}{{end}}' example.com/indirect
+! stdout ^error
+stdout incomplete
+stdout 'bad dep: .*example.com[/\\]notfound'
+
+# Again, -deps should fail.
+# BUG: Again, it does not.
+# ! go list -deps example.com/indirect
+# stderr example.com[/\\]notfound
+go list -deps example.com/indirect
+stdout example.com/notfound
+
+
+# Listing the missing dependency directly should fail outright...
+! go list -f '{{if .Error}}error{{end}} {{if .Incomplete}}incomplete{{end}}' example.com/notfound
+stderr 'no Go files in .*example.com[/\\]notfound'
+! stdout error
+! stdout incomplete
+
+# ...but listing with -e should succeed.
+go list -e -f '{{if .Error}}error{{end}} {{if .Incomplete}}incomplete{{end}}' example.com/notfound
+stdout error
+stdout incomplete
+
+
+# The pattern "all" should match only packages that acutally exist,
+# ignoring those whose existence is merely implied by imports.
+go list -e -f '{{.ImportPath}}' all
+stdout example.com/direct
+stdout example.com/indirect
+! stdout example.com/notfound
+
+
+-- example.com/direct/direct.go --
+package direct
+import _ "example.com/notfound"
+
+-- example.com/indirect/indirect.go --
+package indirect
+import _ "example.com/direct"
+
+-- example.com/notfound/README --
+This directory intentionally left blank.
diff --git a/src/cmd/go/testdata/script/mod_list_bad_import.txt b/src/cmd/go/testdata/script/mod_list_bad_import.txt
new file mode 100644
index 0000000000..c05fdea99a
--- /dev/null
+++ b/src/cmd/go/testdata/script/mod_list_bad_import.txt
@@ -0,0 +1,59 @@
+# This test matches list_bad_import, but in module mode.
+# Please keep them in sync.
+
+env GO111MODULE=on
+cd example.com
+
+# Listing an otherwise-valid package with an unsatisfied direct import should succeed,
+# but name that package in DepsErrors.
+! go list -f '{{if .Error}}error{{end}} {{if .Incomplete}}incomplete{{end}} {{range .DepsErrors}}bad dep: {{.Err}}{{end}}' example.com/direct
+stderr example.com[/\\]notfound
+
+# Listing with -deps should also fail.
+! go list -deps example.com/direct
+stderr example.com[/\\]notfound
+
+
+# Listing an otherwise-valid package that imports some *other* package with an
+# unsatisfied import should also succeed.
+# NOTE: This behavior differs between GOPATH mode and module mode.
+! go list -f '{{if .Error}}error{{end}} {{if .Incomplete}}incomplete{{end}} {{range .DepsErrors}}bad dep: {{.Err}}{{end}}' example.com/indirect
+stderr example.com[/\\]notfound
+
+# Again, -deps should fail.
+! go list -deps example.com/indirect
+stderr example.com[/\\]notfound
+
+
+# Listing the missing dependency directly should fail outright...
+! go list -f '{{if .Error}}error{{end}} {{if .Incomplete}}incomplete{{end}}' example.com/notfound
+stderr 'cannot find module providing package example.com/notfound'
+! stdout error
+! stdout incomplete
+
+# ...but listing with -e should succeed.
+# BUG: Today, it fails.
+! go list -e -f '{{if .Error}}error{{end}} {{if .Incomplete}}incomplete{{end}}' example.com/notfound
+stderr example.com[/\\]notfound
+
+
+# The pattern "all" should match only packages that acutally exist,
+# ignoring those whose existence is merely implied by imports.
+# BUG: Today, `go list -e` fails if there are any unresolved imports.
+! go list -e -f '{{.ImportPath}}' all
+stderr example.com[/\\]notfound
+
+
+-- example.com/go.mod --
+module example.com
+
+-- example.com/direct/direct.go --
+package direct
+import _ "example.com/notfound"
+
+-- example.com/indirect/indirect.go --
+package indirect
+import _ "example.com/direct"
+
+-- example.com/notfound/README --
+This directory intentionally left blank.