]> Cypherpunks repositories - gostls13.git/commitdiff
path/filepath: support multiple TestAbs runs on Windows
authorqmuntal <quimmuntal@gmail.com>
Fri, 23 Feb 2024 12:38:27 +0000 (13:38 +0100)
committerQuim Muntal <quimmuntal@gmail.com>
Mon, 26 Feb 2024 07:59:11 +0000 (07:59 +0000)
TestAbs modifies the absTests global variable on Windows, which makes
the test to fail if it is run more than once, i.e. executing
"go test -run ^TestAbs$ -count 2 path/filepath".

This CL fixes the issue by clipping the absTests slices before
appending more elements to it.

Change-Id: I8f1144b2f10b8fa1b847e6639c0bda7baafc2dac
Reviewed-on: https://go-review.googlesource.com/c/go/+/566396
Reviewed-by: Bryan Mills <bcmills@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Damien Neil <dneil@google.com>
src/path/filepath/path_test.go

index ed3990859bfb920eecb2db255f54e578597d021f..c96a758c69528e323b50a6a526fec436d2bf6508 100644 (file)
@@ -1403,6 +1403,9 @@ func TestAbs(t *testing.T) {
                }
        }
 
+       // Make sure the global absTests slice is not
+       // modified by multiple invocations of TestAbs.
+       tests := absTests
        if runtime.GOOS == "windows" {
                vol := filepath.VolumeName(root)
                var extra []string
@@ -1413,7 +1416,7 @@ func TestAbs(t *testing.T) {
                        path = vol + path
                        extra = append(extra, path)
                }
-               absTests = append(absTests, extra...)
+               tests = append(slices.Clip(tests), extra...)
        }
 
        err = os.Chdir(absTestDirs[0])
@@ -1421,7 +1424,7 @@ func TestAbs(t *testing.T) {
                t.Fatal("chdir failed: ", err)
        }
 
-       for _, path := range absTests {
+       for _, path := range tests {
                path = strings.ReplaceAll(path, "$", root)
                info, err := os.Stat(path)
                if err != nil {