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-04-15 14:55:30 -07:00
parent 7bde76e982
commit 27f04ad5ea
18 changed files with 674 additions and 130 deletions
+38
View File
@@ -0,0 +1,38 @@
name: functional tests (windows)
permissions: {}
on: pull_request
jobs:
build:
name: RunTestsWindows
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Set up Go
uses: actions/setup-go@v6
with:
go-version: 'stable'
id: go
- name: Get Dependencies
run: go mod download
- name: Build
run: |
$version = if (Test-Path VERSION) { Get-Content VERSION } else { git describe --abbrev=0 --tags HEAD }
$build = git rev-parse --short HEAD
$time = (Get-Date -Format "yyyy-MM-dd_hh:mm:sstt")
go build -ldflags "-X=main.Build=$build -X=main.BuildTime=$time -X=main.Version=$version" `
-o versitygw.exe -cover -race ./cmd/versitygw
shell: pwsh
- name: Run Tests
run: pwsh -File .\runtests.ps1
shell: pwsh
- name: Coverage Report
run: go tool covdata percent -i="$env:TEMP\covdata"
shell: pwsh