]> Cypherpunks repositories - gostls13.git/commitdiff
testing: replace all GOOS-specific path separators in TempDir
authorTobias Klauser <tklauser@distanz.ch>
Fri, 24 Apr 2020 10:17:01 +0000 (12:17 +0200)
committerTobias Klauser <tobias.klauser@gmail.com>
Sat, 25 Apr 2020 10:38:47 +0000 (10:38 +0000)
For GOOS=windows the path separator characters '\' and ':' also need be
replaced.

Updates #38465

Change-Id: If7c8cf93058c87d7df6cda140e82fd76578fe699
Reviewed-on: https://go-review.googlesource.com/c/go/+/229837
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
src/testing/testing.go
src/testing/testing_test.go

index 44bccd384ed8df6ef8fe780b17832abfa6c8487f..8dfb61bcc3a1f32327f298942de4e4dfe0746042 100644 (file)
@@ -797,6 +797,11 @@ func (c *common) Cleanup(f func()) {
        }
 }
 
+var (
+       rOnce sync.Once
+       r     *strings.Replacer
+)
+
 // TempDir returns a temporary directory for the test to use.
 // It is lazily created on first access, and calls t.Fatal if the directory
 // creation fails.
@@ -809,7 +814,10 @@ func (c *common) TempDir() string {
 
                // ioutil.TempDir doesn't like path separators in its pattern,
                // so mangle the name to accommodate subtests.
-               pattern := strings.ReplaceAll(c.Name(), "/", "_")
+               rOnce.Do(func() {
+                       r = strings.NewReplacer("/", "_", "\\", "_", ":", "_")
+               })
+               pattern := r.Replace(c.Name())
 
                c.tempDir, c.tempDirErr = ioutil.TempDir("", pattern)
                if c.tempDirErr == nil {
index 07757a8482f2b31611a8f6fdaa132246bee5fbcd..1340dae5c4d2a72c1c5c6599a111d84a71ac44bf 100644 (file)
@@ -21,6 +21,11 @@ func TestMain(m *testing.M) {
 func TestTempDir(t *testing.T) {
        testTempDir(t)
        t.Run("InSubtest", testTempDir)
+       t.Run("test/subtest", testTempDir)
+       t.Run("test\\subtest", testTempDir)
+       t.Run("test:subtest", testTempDir)
+       t.Run("test/..", testTempDir)
+       t.Run("../test", testTempDir)
 }
 
 func testTempDir(t *testing.T) {