Repository navigation
fix(test): give the devlore-test binary its .exe suffix on Windows - #378
Merged
Merged
Conversation
Phase 3 of issue #373, taking the largest cluster first. The first three-platform run (PR #375, commit f8b28c8) passed on macOS and ubuntu and failed on Windows with 63 --- FAIL lines. Roughly 37 of them were one bug. `go build -o` appends .exe on Windows, so the binary landed at devlore-test.exe while TestMain kept exec'ing devlore-test. Every invocation failed to start, reporting `exit code = -1` with empty output — which is why all 30 TestCLI_* cases failed at 0.00s, along with the 5 "no JSON summary" and 2 "missing Hello World!" assertions that depend on the same process running. The plan's phase 2 triage is recorded in the same commit. Two genuine product defects were found and filed rather than patched inline, both invisible to the previous ubuntu-only gate: #376 — Starlark extension loading breaks on any Windows path. C:\Users\... interpolated into Starlark source fails on \U, an invalid escape. #377 — fsroot.Path.Rel() returns OS-native separators, and Path is a serialized type, so documents and their checksums differ between platforms. The six failing assertions are correct; the product is wrong, and it contradicts this repository's own platform-stable digest rule. Remaining Windows failures are permission-bit assertions, a hardcoded /dev/null, and two needing a closer read. Those counts are a lower bound: ~37 masked failures may have been concealing others, and the next Windows run reveals what was behind them. No test is skipped and no build tag is added to dodge a platform. The fix is one conditional suffix in the test's own setup. Verified on Darwin: make vet, full make test green — zero FAIL or panic lines by count; gofmt clean. The changed path is Windows-only, so CI's windows leg is the real verification. Plan: docs/plans/platform-test-matrix.md (phase 2 recorded, phase 3 begun). Issue: #373
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.
Phase 3 of issue #373, taking the largest failure cluster first.
The first three-platform run
test (macos-latest)andtest (ubuntu-latest)passed — the full race-enabled suite over 121 packages, the first time it had ever run on Darwin.test (windows-latest)failed with 63--- FAILlines, which collapse into far fewer causes.~37 of 63 were one bug
go build -oappends.exeon Windows, so the binary landed atdevlore-test.exewhileTestMainkept exec'ingdevlore-test. Every invocation failed to start —exit code = -1, empty output — which is why all 30TestCLI_*cases failed at 0.00s, along with the 5 "no JSON summary" and 2 "missing Hello World!" assertions that depend on that process running.One conditional suffix in the test's own setup. No test skipped, no build tag added to dodge a platform.
Two genuine product defects found, and filed
Both invisible to the previous ubuntu-only gate:
C:\Users\…interpolated into Starlark source fails on\U, an invalid escape.fsroot.Path.Rel()returns OS-native separators, andPathis a serialized type (root.go:624,root.go:659), so documents and their checksums differ between platforms. The six failing assertions are correct; the product is wrong. It contradicts this repository's own platform-stable digest rule.Filed rather than patched inline — they are product changes, not test fixes, and they deserve their own review.
Remaining, and why the counts are a lower bound
Permission-bit assertions (5), a hardcoded
/dev/null(2), and two needing a closer read. ~37 masked failures may have been concealing others, so the next Windows run is what establishes the real remainder.Phase 2's full triage table is recorded in the plan in this same commit.
Verified on Darwin:
make vet, fullmake testgreen (zero FAIL/panic by count),gofmtclean. The changed path is Windows-only, so CI's windows leg is the real verification.