mirror of
https://github.com/golang/go.git
synced 2025-05-30 19:52:53 +00: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 {
|
func (c *common) TempDir() string {
|
||||||
c.tempDirOnce.Do(func() {
|
c.tempDirOnce.Do(func() {
|
||||||
c.Helper()
|
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 {
|
if c.tempDirErr == nil {
|
||||||
c.Cleanup(func() {
|
c.Cleanup(func() {
|
||||||
if err := os.RemoveAll(c.tempDir); err != nil {
|
if err := os.RemoveAll(c.tempDir); err != nil {
|
||||||
|
@ -19,6 +19,11 @@ func TestMain(m *testing.M) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestTempDir(t *testing.T) {
|
func TestTempDir(t *testing.T) {
|
||||||
|
testTempDir(t)
|
||||||
|
t.Run("InSubtest", testTempDir)
|
||||||
|
}
|
||||||
|
|
||||||
|
func testTempDir(t *testing.T) {
|
||||||
dirCh := make(chan string, 1)
|
dirCh := make(chan string, 1)
|
||||||
t.Cleanup(func() {
|
t.Cleanup(func() {
|
||||||
// Verify directory has been removed.
|
// Verify directory has been removed.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user