From 7db8b9e518311c1ee707a3f2fe6343e7c595c936 Mon Sep 17 00:00:00 2001 From: qmuntal Date: Fri, 23 Feb 2024 13:38:27 +0100 Subject: [PATCH] path/filepath: support multiple TestAbs runs on Windows 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 LUCI-TryBot-Result: Go LUCI Reviewed-by: Damien Neil --- src/path/filepath/path_test.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/path/filepath/path_test.go b/src/path/filepath/path_test.go index ed3990859bf..c96a758c695 100644 --- a/src/path/filepath/path_test.go +++ b/src/path/filepath/path_test.go @@ -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 {