mirror of
https://github.com/golang/go
synced 2024-11-25 05:38:01 -07:00
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
This commit is contained in:
parent
5ca13f6378
commit
2b64e00f16
@ -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,
|
|||||||
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,
|
|||||||
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,
|
|||||||
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,
|
|||||||
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,
|
|||||||
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")
|
||||||
|
Loading…
Reference in New Issue
Block a user