mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
testing: return unique directory inside same base root for TempDir
We use a single parent directory for all temporary directories created by a test so they're all kept together. Fixes #38850 Change-Id: If8edae10c5136efcbcf6fd632487d198b9e3a868 Reviewed-on: https://go-review.googlesource.com/c/go/+/231958 Reviewed-by: Russ Cox <rsc@golang.org>
This commit is contained in:
parent
8fa468d511
commit
6d6e4827c0
2 changed files with 15 additions and 3 deletions
|
|
@ -372,6 +372,7 @@ type common struct {
|
|||
tempDirOnce sync.Once
|
||||
tempDir string
|
||||
tempDirErr error
|
||||
tempDirSeq int32
|
||||
}
|
||||
|
||||
// Short reports whether the -test.short flag is set.
|
||||
|
|
@ -827,6 +828,8 @@ var tempDirReplacer struct {
|
|||
// The directory is automatically removed by Cleanup when the test and
|
||||
// all its subtests complete.
|
||||
func (c *common) TempDir() string {
|
||||
// Use a single parent directory for all the temporary directories
|
||||
// created by a test, each numbered sequentially.
|
||||
c.tempDirOnce.Do(func() {
|
||||
c.Helper()
|
||||
|
||||
|
|
@ -849,7 +852,12 @@ func (c *common) TempDir() string {
|
|||
if c.tempDirErr != nil {
|
||||
c.Fatalf("TempDir: %v", c.tempDirErr)
|
||||
}
|
||||
return c.tempDir
|
||||
seq := atomic.AddInt32(&c.tempDirSeq, 1)
|
||||
dir := fmt.Sprintf("%s%c%03d", c.tempDir, os.PathSeparator, seq)
|
||||
if err := os.Mkdir(dir, 0777); err != nil {
|
||||
c.Fatalf("TempDir: %v", err)
|
||||
}
|
||||
return dir
|
||||
}
|
||||
|
||||
// panicHanding is an argument to runCleanup.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue