mirror of
https://github.com/golang/go
synced 2024-09-29 19:24:33 -06:00
cmd/go: roll forward "convert TestShadowingLogic to the script framework"
This rolls forward the change golang.org/cl/214431, which was reverted in golang.org/cl/220217. The cl was broken because TestVersionControlErrorMessageIncludesCorrectDirectory, which is going to be removed in golang.org/cl/214429 hadn't been submitted yet. Original change description: Part of converting all tests to script framework to improve test parallelism. Updates #36320 Updates #17751 Change-Id: I87b3f9acb8575fbcbd58d454b5f9bac4923429b3 Reviewed-on: https://go-review.googlesource.com/c/go/+/220178 Run-TryBot: Michael Matloob <matloob@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Bryan C. Mills <bcmills@google.com>
This commit is contained in:
parent
6ef25c2ad3
commit
a1e057e585
@ -1543,51 +1543,6 @@ func TestSymlinkWarning(t *testing.T) {
|
||||
tg.grepStderr("ignoring symlink", "list should have reported symlink")
|
||||
}
|
||||
|
||||
func TestShadowingLogic(t *testing.T) {
|
||||
skipIfGccgo(t, "gccgo has no standard packages")
|
||||
tg := testgo(t)
|
||||
defer tg.cleanup()
|
||||
pwd := tg.pwd()
|
||||
sep := string(filepath.ListSeparator)
|
||||
tg.setenv("GOPATH", filepath.Join(pwd, "testdata", "shadow", "root1")+sep+filepath.Join(pwd, "testdata", "shadow", "root2"))
|
||||
|
||||
// The math in root1 is not "math" because the standard math is.
|
||||
tg.run("list", "-f", "({{.ImportPath}}) ({{.ConflictDir}})", "./testdata/shadow/root1/src/math")
|
||||
pwdForwardSlash := strings.ReplaceAll(pwd, string(os.PathSeparator), "/")
|
||||
if !strings.HasPrefix(pwdForwardSlash, "/") {
|
||||
pwdForwardSlash = "/" + pwdForwardSlash
|
||||
}
|
||||
// The output will have makeImportValid applies, but we only
|
||||
// bother to deal with characters we might reasonably see.
|
||||
for _, r := range " :" {
|
||||
pwdForwardSlash = strings.ReplaceAll(pwdForwardSlash, string(r), "_")
|
||||
}
|
||||
want := "(_" + pwdForwardSlash + "/testdata/shadow/root1/src/math) (" + filepath.Join(runtime.GOROOT(), "src", "math") + ")"
|
||||
if strings.TrimSpace(tg.getStdout()) != want {
|
||||
t.Error("shadowed math is not shadowed; looking for", want)
|
||||
}
|
||||
|
||||
// The foo in root1 is "foo".
|
||||
tg.run("list", "-f", "({{.ImportPath}}) ({{.ConflictDir}})", "./testdata/shadow/root1/src/foo")
|
||||
if strings.TrimSpace(tg.getStdout()) != "(foo) ()" {
|
||||
t.Error("unshadowed foo is shadowed")
|
||||
}
|
||||
|
||||
// The foo in root2 is not "foo" because the foo in root1 got there first.
|
||||
tg.run("list", "-f", "({{.ImportPath}}) ({{.ConflictDir}})", "./testdata/shadow/root2/src/foo")
|
||||
want = "(_" + pwdForwardSlash + "/testdata/shadow/root2/src/foo) (" + filepath.Join(pwd, "testdata", "shadow", "root1", "src", "foo") + ")"
|
||||
if strings.TrimSpace(tg.getStdout()) != want {
|
||||
t.Error("shadowed foo is not shadowed; looking for", want)
|
||||
}
|
||||
|
||||
// The error for go install should mention the conflicting directory.
|
||||
tg.runFail("install", "./testdata/shadow/root2/src/foo")
|
||||
want = "go install: no install location for " + filepath.Join(pwd, "testdata", "shadow", "root2", "src", "foo") + ": hidden by " + filepath.Join(pwd, "testdata", "shadow", "root1", "src", "foo")
|
||||
if strings.TrimSpace(tg.getStderr()) != want {
|
||||
t.Error("wrong shadowed install error; looking for", want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestCgoDependsOnSyscall(t *testing.T) {
|
||||
if testing.Short() {
|
||||
t.Skip("skipping test that removes $GOROOT/pkg/*_race in short mode")
|
||||
|
25
src/cmd/go/testdata/script/list_shadow.txt
vendored
Normal file
25
src/cmd/go/testdata/script/list_shadow.txt
vendored
Normal file
@ -0,0 +1,25 @@
|
||||
env GO111MODULE=off
|
||||
env GOPATH=$WORK/gopath/src/shadow/root1${:}$WORK/gopath/src/shadow/root2
|
||||
|
||||
# The math in root1 is not "math" because the standard math is.
|
||||
go list -f '({{.ImportPath}}) ({{.ConflictDir}})' ./shadow/root1/src/math
|
||||
stdout '^\(.*(\\|/)src(\\|/)shadow(\\|/)root1(\\|/)src(\\|/)math\) \('$GOROOT'(\\|/)?src(\\|/)math\)$'
|
||||
|
||||
# The foo in root1 is "foo".
|
||||
go list -f '({{.ImportPath}}) ({{.ConflictDir}})' ./shadow/root1/src/foo
|
||||
stdout '^\(foo\) \(\)$'
|
||||
|
||||
# The foo in root2 is not "foo" because the foo in root1 got there first.
|
||||
go list -f '({{.ImportPath}}) ({{.ConflictDir}})' ./shadow/root2/src/foo
|
||||
stdout '^\(.*gopath(\\|/)src(\\|/)shadow(\\|/)root2(\\|/)src(\\|/)foo\) \('$WORK'(\\|/)?gopath(\\|/)src(\\|/)shadow(\\|/)root1(\\|/)src(\\|/)foo\)$'
|
||||
|
||||
# The error for go install should mention the conflicting directory.
|
||||
! go install -n ./shadow/root2/src/foo
|
||||
stderr 'go install: no install location for '$WORK'(\\|/)?gopath(\\|/)src(\\|/)shadow(\\|/)root2(\\|/)src(\\|/)foo: hidden by '$WORK'(\\|/)?gopath(\\|/)src(\\|/)shadow(\\|/)root1(\\|/)src(\\|/)foo'
|
||||
|
||||
-- shadow/root1/src/foo/foo.go --
|
||||
package foo
|
||||
-- shadow/root1/src/math/math.go --
|
||||
package math
|
||||
-- shadow/root2/src/foo/foo.go --
|
||||
package foo
|
@ -1 +0,0 @@
|
||||
package foo
|
@ -1 +0,0 @@
|
||||
package math
|
@ -1 +0,0 @@
|
||||
package foo
|
Loading…
Reference in New Issue
Block a user