From: Andrei Tudor Călin Date: Thu, 23 Apr 2020 01:04:33 +0000 (+0300) Subject: testing: make TempDir work for subtests X-Git-Tag: go1.15beta1~433 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=952f7de3b403d2ffb45708ea5f69168bbdbfe1f0;p=gostls13.git 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 Run-TryBot: Brad Fitzpatrick TryBot-Result: Gobot Gobot --- diff --git a/src/testing/testing.go b/src/testing/testing.go index d546f56478..44bccd384e 100644 --- a/src/testing/testing.go +++ b/src/testing/testing.go @@ -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 { diff --git a/src/testing/testing_test.go b/src/testing/testing_test.go index afb35a96d4..07757a8482 100644 --- a/src/testing/testing_test.go +++ b/src/testing/testing_test.go @@ -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.