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

testing: make TempDir work for subtests

ioutil.TempDir doesn't like path separators in its pattern. Modify
(*common).TempDir to replace path separators with underscores before
using the test name as a pattern for ioutil.TempDir.

Fixes #38465.

Change-Id: I9e8ae48b99648b2bf9f561762e845165aff01972
Reviewed-on: https://go-review.googlesource.com/c/go/+/229399
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
Andrei Tudor Călin 2020-04-23 04:04:33 +03:00 committed by Brad Fitzpatrick
parent f049d911e9
commit 952f7de3b4
2 changed files with 11 additions and 1 deletions

View File

@ -806,7 +806,12 @@ func (c *common) Cleanup(f func()) {
func (c *common) TempDir() string {
c.tempDirOnce.Do(func() {
c.Helper()
c.tempDir, c.tempDirErr = ioutil.TempDir("", c.Name())
// ioutil.TempDir doesn't like path separators in its pattern,
// so mangle the name to accommodate subtests.
pattern := strings.ReplaceAll(c.Name(), "/", "_")
c.tempDir, c.tempDirErr = ioutil.TempDir("", pattern)
if c.tempDirErr == nil {
c.Cleanup(func() {
if err := os.RemoveAll(c.tempDir); err != nil {

View File

@ -19,6 +19,11 @@ func TestMain(m *testing.M) {
}
func TestTempDir(t *testing.T) {
testTempDir(t)
t.Run("InSubtest", testTempDir)
}
func testTempDir(t *testing.T) {
dirCh := make(chan string, 1)
t.Cleanup(func() {
// Verify directory has been removed.