feat: add windows functional test coverage and fix some windows behavior

This change adds Windows functional test execution in CI and updates
backend handling so windows filesystem error/path semantics map correctly
to expected S3 outcomes.

The only meta supported on windows right now is sidecar, so the tests
in windows mode also skip sidecar skips.

Future work is to address the skips and/or more clearly document
the unsupported/incompatible behavior on windows.

The windows support will still remain best effort, but these tests
should at least flag when future changes introduce incompatible
behavior on windows.
This commit is contained in:
Ben McClelland
2026-06-18 11:34:05 -07:00
parent 7bde76e982
commit 27f04ad5ea
18 changed files with 674 additions and 130 deletions
+27
View File
@@ -44,6 +44,7 @@ var (
azureTests bool
tlsStatus bool
parallel bool
windowsTests bool
sidecarTests bool
)
@@ -121,6 +122,12 @@ func initTestCommands() []*cli.Command {
Destination: &azureTests,
Aliases: []string{"azure"},
},
&cli.BoolFlag{
Name: "windows-test-mode",
Usage: "Skips tests that are not supported on Windows",
Destination: &windowsTests,
Aliases: []string{"windows"},
},
&cli.BoolFlag{
Name: "sidecar-test-mode",
Usage: "Skips tests that are not supported by Sidecar",
@@ -176,6 +183,12 @@ func initTestCommands() []*cli.Command {
Destination: &versioningEnabled,
Aliases: []string{"vs"},
},
&cli.BoolFlag{
Name: "windows-test-mode",
Usage: "Skips tests that are not supported on Windows",
Destination: &windowsTests,
Aliases: []string{"windows"},
},
},
},
{
@@ -421,6 +434,10 @@ func getAction(tf testFunc) func(ctx *cli.Context) error {
if azureTests {
opts = append(opts, integration.WithAzureMode())
}
if windowsTests {
opts = append(opts, integration.WithWindowsMode())
opts = append(opts, integration.WithSidecarMode())
}
if sidecarTests {
opts = append(opts, integration.WithSidecarMode())
}
@@ -470,6 +487,10 @@ func extractIntTests() (commands []*cli.Command) {
if azureTests {
opts = append(opts, integration.WithAzureMode())
}
if windowsTests {
opts = append(opts, integration.WithWindowsMode())
opts = append(opts, integration.WithSidecarMode())
}
if sidecarTests {
opts = append(opts, integration.WithSidecarMode())
}
@@ -497,6 +518,12 @@ func extractIntTests() (commands []*cli.Command) {
Destination: &sidecarTests,
Aliases: []string{"sidecar"},
},
&cli.BoolFlag{
Name: "windows-test-mode",
Usage: "Skips tests that are not supported on Windows",
Destination: &windowsTests,
Aliases: []string{"windows"},
},
},
})
}