From 023047d14b0f01cd220b4bd75a85b8e25f4b6dfe Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Mon, 13 Jul 2015 22:39:17 -0400 Subject: [PATCH] cmd/go: diagnose trivial test import cycle Was detecting only non-trivial ones. Fixes #9690. Change-Id: I662d81dd4818ddf29592057c090805772c84287b Reviewed-on: https://go-review.googlesource.com/12147 Reviewed-by: Rob Pike --- src/cmd/go/go_test.go | 3 +++ src/cmd/go/test.go | 2 +- src/cmd/go/testdata/src/testcycle/q1/q1.go | 1 + src/cmd/go/testdata/src/testcycle/q1/q1_test.go | 6 ++++++ 4 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 src/cmd/go/testdata/src/testcycle/q1/q1.go create mode 100644 src/cmd/go/testdata/src/testcycle/q1/q1_test.go diff --git a/src/cmd/go/go_test.go b/src/cmd/go/go_test.go index 59c2cffa9ff..bb22076ce4d 100644 --- a/src/cmd/go/go_test.go +++ b/src/cmd/go/go_test.go @@ -1848,6 +1848,9 @@ func TestGoTestDetectsTestOnlyImportCycles(t *testing.T) { tg.setenv("GOPATH", filepath.Join(tg.pwd(), "testdata")) tg.runFail("test", "-c", "testcycle/p3") tg.grepStderr("import cycle not allowed in test", "go test testcycle/p3 produced unexpected error") + + tg.runFail("test", "-c", "testcycle/q1") + tg.grepStderr("import cycle not allowed in test", "go test testcycle/q1 produced unexpected error") } func TestGoTestFooTestWorks(t *testing.T) { diff --git a/src/cmd/go/test.go b/src/cmd/go/test.go index 1f138bc3f5f..7ea8d53ad17 100644 --- a/src/cmd/go/test.go +++ b/src/cmd/go/test.go @@ -578,7 +578,7 @@ func (b *builder) test(p *Package) (buildAction, runAction, printAction *action, if p1.Error != nil { return nil, nil, nil, p1.Error } - if contains(p1.Deps, p.ImportPath) { + if contains(p1.Deps, p.ImportPath) || p1.ImportPath == p.ImportPath { // Same error that loadPackage returns (via reusePackage) in pkg.go. // Can't change that code, because that code is only for loading the // non-test copy of a package. diff --git a/src/cmd/go/testdata/src/testcycle/q1/q1.go b/src/cmd/go/testdata/src/testcycle/q1/q1.go new file mode 100644 index 00000000000..7a471f0cc05 --- /dev/null +++ b/src/cmd/go/testdata/src/testcycle/q1/q1.go @@ -0,0 +1 @@ +package q1 diff --git a/src/cmd/go/testdata/src/testcycle/q1/q1_test.go b/src/cmd/go/testdata/src/testcycle/q1/q1_test.go new file mode 100644 index 00000000000..ca81bd2bf80 --- /dev/null +++ b/src/cmd/go/testdata/src/testcycle/q1/q1_test.go @@ -0,0 +1,6 @@ +package q1 + +import "testing" +import _ "testcycle/q1" + +func Test(t *testing.T) {}