From f7aca72155e65012f59a315e37fa92184ef326a0 Mon Sep 17 00:00:00 2001 From: Claudiu Belu Date: Thu, 15 Dec 2022 16:03:37 +0000 Subject: [PATCH] unittests: Fixes unit tests for Windows (part 8) Currently, there are some unit tests that are failing on Windows due to various reasons: - flexvolume coverts its paths to absolute paths, which means that on Windows the C:\ prefix will be added. This becomes an issue when prober.fs.Walk is called, which will join 2 absolute paths, both containing the C:\ prefix, resulting in an incorrect path. --- pkg/volume/flexvolume/probe.go | 4 ++++ pkg/volume/flexvolume/probe_test.go | 15 --------------- 2 files changed, 4 insertions(+), 15 deletions(-) diff --git a/pkg/volume/flexvolume/probe.go b/pkg/volume/flexvolume/probe.go index 5dc1fa35cab..2c4c5d0f98c 100644 --- a/pkg/volume/flexvolume/probe.go +++ b/pkg/volume/flexvolume/probe.go @@ -228,6 +228,10 @@ func (prober *flexVolumeProber) updateEventsMap(eventDirAbs string, op volume.Pr // Each file or directory change triggers two events: one from the watch on itself, another from the watch // on its parent directory. func (prober *flexVolumeProber) addWatchRecursive(filename string) error { + // this may be called with an actual absolute path on Windows (with a C:\ prefix). + // But the prober.fs.Walk below will execute filepath.Join(fs.root, filenameAbove), which + // will result in an incorrect path, you can't join C:\path and C:\another\path. + filename = strings.TrimPrefix(filename, `C:\`) addWatch := func(path string, info os.FileInfo, err error) error { if err == nil && info.IsDir() { if err := prober.watcher.AddWatch(path); err != nil { diff --git a/pkg/volume/flexvolume/probe_test.go b/pkg/volume/flexvolume/probe_test.go index 655c761987a..e79c4aaa70a 100644 --- a/pkg/volume/flexvolume/probe_test.go +++ b/pkg/volume/flexvolume/probe_test.go @@ -72,11 +72,6 @@ func TestProberExistingDriverBeforeInit(t *testing.T) { // Probes newly added drivers after prober is running. func TestProberAddRemoveDriver(t *testing.T) { - // Skip tests that fail on Windows, as discussed during the SIG Testing meeting from January 10, 2023 - if goruntime.GOOS == "windows" { - t.Skip("Skipping test that fails on Windows") - } - // Arrange _, fs, watcher, prober := initTestEnvironment(t) prober.Probe() @@ -210,11 +205,6 @@ func TestEmptyPluginDir(t *testing.T) { // Issue an event to remove plugindir. New directory should still be watched. func TestRemovePluginDir(t *testing.T) { - // Skip tests that fail on Windows, as discussed during the SIG Testing meeting from January 10, 2023 - if goruntime.GOOS == "windows" { - t.Skip("Skipping test that fails on Windows") - } - // Arrange driverPath, fs, watcher, _ := initTestEnvironment(t) err := fs.RemoveAll(pluginDir) @@ -236,11 +226,6 @@ func TestRemovePluginDir(t *testing.T) { // Issue an event to remove plugindir. New directory should still be watched. func TestNestedDriverDir(t *testing.T) { - // Skip tests that fail on Windows, as discussed during the SIG Testing meeting from January 10, 2023 - if goruntime.GOOS == "windows" { - t.Skip("Skipping test that fails on Windows") - } - // Arrange _, fs, watcher, _ := initTestEnvironment(t) // Assert