Commit 2b64e00f authored by Russ Cox's avatar Russ Cox

cmd/go: rebuild external test package dependencies

Was missing recompilation of packages imported only
by external test packages (package foo_test), primarily
because Root was not set, so those packages looked like
they were from a different Go tree, so they were not
recompiled if they already existed.

Also clean things up so that only one call to computeStale
is needed.

Fixes #3238.

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/5786048
parent 5ca13f63
...@@ -258,6 +258,9 @@ func runTest(cmd *Command, args []string) { ...@@ -258,6 +258,9 @@ func runTest(cmd *Command, args []string) {
for _, path := range p.TestImports { for _, path := range p.TestImports {
deps[path] = true deps[path] = true
} }
for _, path := range p.XTestImports {
deps[path] = true
}
} }
// translate C to runtime/cgo // translate C to runtime/cgo
...@@ -454,12 +457,6 @@ func (b *builder) test(p *Package) (buildAction, runAction, printAction *action, ...@@ -454,12 +457,6 @@ func (b *builder) test(p *Package) (buildAction, runAction, printAction *action,
m[k] = append(m[k], v...) m[k] = append(m[k], v...)
} }
ptest.build.ImportPos = m ptest.build.ImportPos = m
computeStale(ptest)
a := b.action(modeBuild, modeBuild, ptest)
a.objdir = testDir + string(filepath.Separator)
a.objpkg = ptestObj
a.target = ptestObj
a.link = false
} else { } else {
ptest = p ptest = p
} }
...@@ -470,6 +467,7 @@ func (b *builder) test(p *Package) (buildAction, runAction, printAction *action, ...@@ -470,6 +467,7 @@ func (b *builder) test(p *Package) (buildAction, runAction, printAction *action,
Name: p.Name + "_test", Name: p.Name + "_test",
ImportPath: p.ImportPath + "_test", ImportPath: p.ImportPath + "_test",
localPrefix: p.localPrefix, localPrefix: p.localPrefix,
Root: p.Root,
Dir: p.Dir, Dir: p.Dir,
GoFiles: p.XTestGoFiles, GoFiles: p.XTestGoFiles,
Imports: p.XTestImports, Imports: p.XTestImports,
...@@ -481,11 +479,6 @@ func (b *builder) test(p *Package) (buildAction, runAction, printAction *action, ...@@ -481,11 +479,6 @@ func (b *builder) test(p *Package) (buildAction, runAction, printAction *action,
fake: true, fake: true,
Stale: true, Stale: true,
} }
computeStale(pxtest)
a := b.action(modeBuild, modeBuild, pxtest)
a.objdir = testDir + string(filepath.Separator)
a.objpkg = buildToolchain.pkgpath(testDir, pxtest)
a.target = a.objpkg
} }
// Action for building pkg.test. // Action for building pkg.test.
...@@ -494,6 +487,7 @@ func (b *builder) test(p *Package) (buildAction, runAction, printAction *action, ...@@ -494,6 +487,7 @@ func (b *builder) test(p *Package) (buildAction, runAction, printAction *action,
Dir: testDir, Dir: testDir,
GoFiles: []string{"_testmain.go"}, GoFiles: []string{"_testmain.go"},
ImportPath: "testmain", ImportPath: "testmain",
Root: p.Root,
imports: []*Package{ptest}, imports: []*Package{ptest},
build: &build.Package{}, build: &build.Package{},
fake: true, fake: true,
...@@ -516,6 +510,21 @@ func (b *builder) test(p *Package) (buildAction, runAction, printAction *action, ...@@ -516,6 +510,21 @@ func (b *builder) test(p *Package) (buildAction, runAction, printAction *action,
pmain.imports = append(pmain.imports, ptesting, pregexp) pmain.imports = append(pmain.imports, ptesting, pregexp)
computeStale(pmain) computeStale(pmain)
if ptest != p {
a := b.action(modeBuild, modeBuild, ptest)
a.objdir = testDir + string(filepath.Separator)
a.objpkg = ptestObj
a.target = ptestObj
a.link = false
}
if pxtest != nil {
a := b.action(modeBuild, modeBuild, pxtest)
a.objdir = testDir + string(filepath.Separator)
a.objpkg = buildToolchain.pkgpath(testDir, pxtest)
a.target = a.objpkg
}
a := b.action(modeBuild, modeBuild, pmain) a := b.action(modeBuild, modeBuild, pmain)
a.objdir = testDir + string(filepath.Separator) a.objdir = testDir + string(filepath.Separator)
a.objpkg = filepath.Join(testDir, "main.a") a.objpkg = filepath.Join(testDir, "main.a")
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment