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:
parent
f049d911e9
commit
952f7de3b4
@ -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 {
|
||||
|
@ -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.
|
||||
|
Loading…
Reference in New Issue
Block a user