1
0
mirror of https://github.com/golang/go synced 2024-11-22 04:04:40 -07:00

cmd/go: clean test directories as they complete

A go build currently generates around 400MB of test output prior to
cleaning up. With this change we use a maximum of ~15MB.

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/5588044
This commit is contained in:
Joel Sing 2012-01-31 10:37:21 -05:00 committed by Russ Cox
parent 28397befab
commit 6f428f0979

View File

@ -442,9 +442,14 @@ func (b *builder) test(p *Package) (buildAction, runAction, printAction *action,
p: p, p: p,
ignoreFail: true, ignoreFail: true,
} }
cleanAction := &action{
f: (*builder).cleanTest,
deps: []*action{runAction},
p: p,
}
printAction = &action{ printAction = &action{
f: (*builder).printTest, f: (*builder).printTest,
deps: []*action{runAction}, deps: []*action{cleanAction},
p: p, p: p,
} }
} }
@ -521,12 +526,22 @@ func (b *builder) runTest(a *action) error {
} else { } else {
fmt.Fprintf(a.testOutput, "%s\n", err) fmt.Fprintf(a.testOutput, "%s\n", err)
} }
return nil
}
// cleanTest is the action for cleaning up after a test.
func (b *builder) cleanTest(a *action) error {
run := a.deps[0]
testDir := filepath.Join(b.work, filepath.FromSlash(run.p.ImportPath+"/_test"))
os.RemoveAll(testDir)
return nil return nil
} }
// printTest is the action for printing a test result. // printTest is the action for printing a test result.
func (b *builder) printTest(a *action) error { func (b *builder) printTest(a *action) error {
run := a.deps[0] clean := a.deps[0]
run := clean.deps[0]
os.Stdout.Write(run.testOutput.Bytes()) os.Stdout.Write(run.testOutput.Bytes())
run.testOutput = nil run.testOutput = nil
return nil return nil