Repository navigation
Conversation
The test-windows job's unit-test step ran under the default pwsh shell, which splits a native argument at a dot: -test.v reached go as -test .v. go test took the unknown -test as the end of the package list, so it tested only the root package, which has no Windows test files, and passed. Every other root-module package went untested on Windows. Run it under bash like the neighbouring steps, drop -test.v, and fail the step unless every package go list names reported a result line. Co-Authored-By: Claude <noreply@anthropic.com>
Coverage Report for CI Build 38068524885Coverage remained the same at 57.675%Details
Uncovered Changes
Coverage RegressionsNo coverage regressions found. Coverage Stats
💛 - Coveralls |
…URLs The first Windows run of these packages found one code bug and a set of tests that assumed Unix. Code: ResolveLocalPath turned file:///C:/spec.json into /C:/spec.json, which filepath.Abs then put under the current drive. It now drops the slash before a drive letter. Tests: paths and error text spelled the Unix way (separators, otto.exe, the .exe.zip download, "no such file or directory"), tar entry names built with filepath.Join though Tar writes them slash-separated, a directory named "..." that Windows strips to nothing, a launcher test that read a symlink where Windows makes a copy, and a cwd helper that expanded the 8.3 short name DetectAirflow compares against. The git-sync fixtures under cmd/apc/testfiles are pinned to LF, and the two tests that rely on POSIX mode bits skip on Windows. Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
Compare the set of packages go list names against the set with a result line, not their counts, and print the missing ones in the error. The pattern now matches the module path exactly, followed by / or whitespace, and an empty match reaches the error instead of ending the step under pipefail. Co-Authored-By: Claude <noreply@anthropic.com>
…ndows tests - readSSHKeyFile turns CRLF into LF, so a key saved on Windows reaches git-sync in the form OpenSSH reads. A test writes its own CRLF key instead of relying on how the checkout ends lines. - ResolveLocalPath percent-decodes a file:// path before it strips the slash in front of a drive letter, and expands ~\ as well as ~/ on Windows. Off Windows, file:///C:/spec.json stays /C:/spec.json. - The ReadFileToString test chooses its branch on the expected error alone and requires that an error came back. - The hostname-fallback test keeps "..." off Windows and uses "_._" only on Windows, which strips trailing dots. - The launcher test skips when Windows refuses the symlink for want of the privilege, rather than failing. Co-Authored-By: Claude <noreply@anthropic.com>
schnie
marked this pull request as ready for review
October 10, 2026 16:45
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
The test-windows job's "Run unit tests" step ran under the default pwsh shell. PowerShell splits a native argument at a dot, so
-test.vreached go as-test .v.go testtreats the unknown-testas the end of the package list (seecmd/go/internal/test/testflag.go): it reads.vas that flag's value and passes./...to the test binary. That left only the current directory to test, which is the root package. Its one test file is//go:build !windows, so no test binary ran, and the step exited 0.In the log of run 38066008856, the whole step is one line,
github.com/astronomer/astro-cli coverage: 0.0% of statements, after 34s. The same misparse is easy to see on Linux:go test -cover -test .v ./...there builds only the root package and hands.v ./...to its binary. So cmd/, cmd/local and internal/... had never run on Windows.What
CI
-test.v.go list ./...names with the set that reported a result line (ok, FAIL, "no test files" or a bare coverage line). It fails the step and names any package that is missing.Code bugs found by the first real Windows run
openapi.ResolveLocalPath:file:///C:/spec.jsoninto/C:/spec.json, whichfilepath.Absthen put under the current drive. It now drops the slash before a drive letter. This is a no-op off Windows, becausefilepath.VolumeNameis always empty there.%20).~\as well as~/on Windows.readSSHKeyFilenow normalizes CRLF to LF, so a key saved on Windows reaches git-sync in the form OpenSSH reads.Tests that assumed Unix
otto.exeand the.exe.zipdownload.RUNNER~1) thatDetectAirflowcompares against.ErrorIs(os.ErrNotExist).Tarcorrectly writes them with slashes...., which Windows strips to an empty name. The test keeps...elsewhere and uses_._on Windows.Fixtures:
cmd/apc/testfiles/**is pinned to LF in.gitattributes.Skipped on Windows: two tests that rely on POSIX mode bits (
chmod 000, and a 0600 check). Each skip states the reason.Follow-up
The
go testflags are now spelled three times: the Makefile'stesttarget, the Linuxtestjob and this Windows step. One script that all three call, likescripts/test-submodules.shalready is for the sub-modules, would keep them from drifting. Keeping that script's arguments out of pwsh would also prevent this bug from coming back.Gates: make test, make lint, make lint-goos, make deadcode, plus
GOOS=windows go vet ./...andGOOS=windows go build ./....