]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: add sync/atomic dependency when needed by test coverage
authorRuss Cox <rsc@golang.org>
Wed, 4 Jan 2017 15:30:28 +0000 (10:30 -0500)
committerRuss Cox <rsc@golang.org>
Wed, 4 Jan 2017 20:01:46 +0000 (20:01 +0000)
Fixes #18486.

Change-Id: I359dc4169e04b4123bd41679ea939b06fa754ac2
Reviewed-on: https://go-review.googlesource.com/34830
Run-TryBot: Russ Cox <rsc@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
14 files changed:
src/cmd/go/go_test.go
src/cmd/go/pkg.go
src/cmd/go/testdata/src/empty/pkg/pkg.go [new file with mode: 0644]
src/cmd/go/testdata/src/empty/pkgtest/pkg.go [new file with mode: 0644]
src/cmd/go/testdata/src/empty/pkgtest/test_test.go [new file with mode: 0644]
src/cmd/go/testdata/src/empty/pkgtestxtest/pkg.go [new file with mode: 0644]
src/cmd/go/testdata/src/empty/pkgtestxtest/test_test.go [new file with mode: 0644]
src/cmd/go/testdata/src/empty/pkgtestxtest/xtest_test.go [new file with mode: 0644]
src/cmd/go/testdata/src/empty/pkgxtest/pkg.go [new file with mode: 0644]
src/cmd/go/testdata/src/empty/pkgxtest/xtest_test.go [new file with mode: 0644]
src/cmd/go/testdata/src/empty/test/test_test.go [new file with mode: 0644]
src/cmd/go/testdata/src/empty/testxtest/test_test.go [new file with mode: 0644]
src/cmd/go/testdata/src/empty/testxtest/xtest_test.go [new file with mode: 0644]
src/cmd/go/testdata/src/empty/xtest/xtest_test.go [new file with mode: 0644]

index 5665eb745ab368eda4a34276ad89d98749eefbe4..f7ea6c8bbd6cb514480e54c89a036bad250bb8bf 100644 (file)
@@ -2247,6 +2247,28 @@ func TestCoverageImportMainLoop(t *testing.T) {
        tg.grepStderr("not an importable package", "did not detect import main")
 }
 
+func TestTestEmpty(t *testing.T) {
+       if !canRace {
+               t.Skip("no race detector")
+       }
+
+       wd, _ := os.Getwd()
+       testdata := filepath.Join(wd, "testdata")
+
+       for _, dir := range []string{"pkg", "test", "xtest", "pkgtest", "pkgxtest", "pkgtestxtest", "testxtest"} {
+               t.Run(dir, func(t *testing.T) {
+                       tg := testgo(t)
+                       defer tg.cleanup()
+                       tg.setenv("GOPATH", testdata)
+                       tg.cd(filepath.Join(testdata, "src/empty/"+dir))
+                       tg.run("test", "-cover", "-coverpkg=.", "-race")
+               })
+               if testing.Short() {
+                       break
+               }
+       }
+}
+
 func TestBuildDryRunWithCgo(t *testing.T) {
        if !canCgo {
                t.Skip("skipping because cgo not enabled")
index 98e722b9f5874d24e7e964d844ccb179777bafcc..d69fa5118f520c374f305b02a8f422b7df861bc2 100644 (file)
@@ -955,6 +955,10 @@ func (p *Package) load(stk *importStack, bp *build.Package, err error) *Package
                if p.Name == "main" && goarch == "arm" {
                        importPaths = append(importPaths, "math")
                }
+               // In coverage atomic mode everything depends on sync/atomic.
+               if testCoverMode == "atomic" && (!p.Standard || (p.ImportPath != "runtime/cgo" && p.ImportPath != "runtime/race" && p.ImportPath != "sync/atomic")) {
+                       importPaths = append(importPaths, "sync/atomic")
+               }
        }
 
        // Runtime and its internal packages depend on runtime/internal/sys,
diff --git a/src/cmd/go/testdata/src/empty/pkg/pkg.go b/src/cmd/go/testdata/src/empty/pkg/pkg.go
new file mode 100644 (file)
index 0000000..c89cd18
--- /dev/null
@@ -0,0 +1 @@
+package p
diff --git a/src/cmd/go/testdata/src/empty/pkgtest/pkg.go b/src/cmd/go/testdata/src/empty/pkgtest/pkg.go
new file mode 100644 (file)
index 0000000..c89cd18
--- /dev/null
@@ -0,0 +1 @@
+package p
diff --git a/src/cmd/go/testdata/src/empty/pkgtest/test_test.go b/src/cmd/go/testdata/src/empty/pkgtest/test_test.go
new file mode 100644 (file)
index 0000000..c89cd18
--- /dev/null
@@ -0,0 +1 @@
+package p
diff --git a/src/cmd/go/testdata/src/empty/pkgtestxtest/pkg.go b/src/cmd/go/testdata/src/empty/pkgtestxtest/pkg.go
new file mode 100644 (file)
index 0000000..c89cd18
--- /dev/null
@@ -0,0 +1 @@
+package p
diff --git a/src/cmd/go/testdata/src/empty/pkgtestxtest/test_test.go b/src/cmd/go/testdata/src/empty/pkgtestxtest/test_test.go
new file mode 100644 (file)
index 0000000..c89cd18
--- /dev/null
@@ -0,0 +1 @@
+package p
diff --git a/src/cmd/go/testdata/src/empty/pkgtestxtest/xtest_test.go b/src/cmd/go/testdata/src/empty/pkgtestxtest/xtest_test.go
new file mode 100644 (file)
index 0000000..9b64e8e
--- /dev/null
@@ -0,0 +1 @@
+package p_test
diff --git a/src/cmd/go/testdata/src/empty/pkgxtest/pkg.go b/src/cmd/go/testdata/src/empty/pkgxtest/pkg.go
new file mode 100644 (file)
index 0000000..c89cd18
--- /dev/null
@@ -0,0 +1 @@
+package p
diff --git a/src/cmd/go/testdata/src/empty/pkgxtest/xtest_test.go b/src/cmd/go/testdata/src/empty/pkgxtest/xtest_test.go
new file mode 100644 (file)
index 0000000..9b64e8e
--- /dev/null
@@ -0,0 +1 @@
+package p_test
diff --git a/src/cmd/go/testdata/src/empty/test/test_test.go b/src/cmd/go/testdata/src/empty/test/test_test.go
new file mode 100644 (file)
index 0000000..c89cd18
--- /dev/null
@@ -0,0 +1 @@
+package p
diff --git a/src/cmd/go/testdata/src/empty/testxtest/test_test.go b/src/cmd/go/testdata/src/empty/testxtest/test_test.go
new file mode 100644 (file)
index 0000000..c89cd18
--- /dev/null
@@ -0,0 +1 @@
+package p
diff --git a/src/cmd/go/testdata/src/empty/testxtest/xtest_test.go b/src/cmd/go/testdata/src/empty/testxtest/xtest_test.go
new file mode 100644 (file)
index 0000000..9b64e8e
--- /dev/null
@@ -0,0 +1 @@
+package p_test
diff --git a/src/cmd/go/testdata/src/empty/xtest/xtest_test.go b/src/cmd/go/testdata/src/empty/xtest/xtest_test.go
new file mode 100644 (file)
index 0000000..9b64e8e
--- /dev/null
@@ -0,0 +1 @@
+package p_test