bug(windows): native go test ./... still fails on an LF checkout — cmd/rt does not build, and POSIX-only tests run unguarded #1501
Labels
No labels
bump
major
bump
minor
bump
patch
kind
bug
kind
chore
kind
docs
kind
epic
kind
feature
loop/paused
mirror-drift
priority
critical
priority
high
priority
low
priority
medium
size
L
size
M
size
S
size
XL
status
blocked
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
frankenbit/release-toolkit#1501
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
#1485 fixed the line endings. On its LF checkout, a native Windows
go test ./...still fails, for Windows causes #1485 listed as out of scope. Release binaries are linux/amd64 only, so this is about contributors developing on Windows.Measured 2026-10-02 at
55a12b9(livemain): a fresh clone under the systemcore.autocrlf=true(622w/lf, 0w/crlf), Go 1.27.1 on Windows 11, Git for Windows bash 5.3.15 (MSYS runtime). The same tree passes all 29 packages ingolang:1.25.With only the lock build failure fixed,
cmd/rtcompiles and shows four more failures that were hidden behind it:There is also one arm that passes for the wrong reason:
TestWritePostCutManifestCustomTagFormat/config_is_UNREADABLE_by_mode_is_could_not_grade. On Windows,chmod 0o000leaves the config readable. A probe run logged the error the arm saw: the unrelated manifest-in-history refusal.TestPushManifestAuthedRejectsSecondPushfailed once under parallel load. Its 2s deadline cancelled attempt 2 before the pre-push hook ran; the error text still matched, and the attempt counter read"x", not"xx". It passes uncontended.Causes
ErrConcurrentCutsemantics (#499): non-blocking; held per open file, so a second acquire in the same process contends (TestNewCutter_concurrentCutrelies on this); released by the OS when the holder dies.ScanTree. This is a realrt register-checkbug on Windows.filepath.WalkDiryields paths with the OS separator, while allow-list entries andselfExcludedkeys are written with/.#!/bin/shhook.C.utf8,[—]matches an em-dash but[-—],[—-]and[éa]do not. The mutant is therefore rejected in every locale, and its UTF-8 control cannot be reproduced.Acceptance criteria
internal/releaseandcmd/rtbuild on Windows. A Windows lock backend returnsErrConcurrentCuton contention, both in-process and cross-process, and the lock is freed when the holder is killed. — DONE @ #1505 (b47a824, reviewed as8e2cf58). On96d2646, natively:TestNewCutter_concurrentCut,TestAcquireLock_anotherProcessHoldsItandTestAcquireLock_killedHolderDoesNotStrandTheLockPASS.ScanTreematches allow-list and self-exclusion entries in/form and reports hits that way. Linux output is unchanged. — DONE @ #1505 (90ef268, reviewed as6aef15b).TestScanTreeand the newTestScanTreeExplicitOSPathPASS natively and ingolang:1.25.t.Skipstyle, and still run (not skip) on Linux. — DONE, exceeded, @ #1505 (96d2646and25d0c0b, reviewed asca66a11and0ac9790). Only two arms skip on Windows, each with a reason:TestRunPostBumpHooks_theHookDoesNotReceiveTheGitCredential(rt prepnow refuses hooks there by name) and themutant/C.utf8subtest. The0o000arms and the repin mode check are graded on Windows instead, through a per-OSmakeUnreadableand a0666expectation. Every one of these PASSES, unskipped, ingolang:1.25as a non-root user.cmd/rtpath and.exeassumptions are fixed in the tests, not skipped. — DONE @ #1505 (96d2646, reviewed asca66a11).TestChangelogBodyCheckBadThreshold(rt.exe),TestFragmentCheckSummaryWordWarnExecutesandTestFragmentCheckLengthWarnCountsRunes(relative dir), andTestPrepStagesTheRegeneratedTwinIntoTheIndex(slash keys) PASS natively, none skipped.go test ./...passes on an LF checkout, andgolang:1.25stays green when run as non-root. — DONE @ #1505 (96d2646, reviewed asca66a11). Fresh clone of96d2646under the systemcore.autocrlf=true:go test -count=1 ./...is 29/29 ok natively (Git Bash, Go 1.27.1) and 29/29 ingolang:1.25as a non-root user.Out of scope
.goreleaser.yamlstays linux/amd64) and Windows release runners (Phase 8).0o000arm asserts onlyerr != nil. Asserting the could-not-read message, as its directory sibling does, would close the wrong-reason pass on every OS. Not measured on Linux.Anchor
Baseline: a fresh clone of
55a12b9. The fourcmd/rtfailures were measured on an LF tree of02fae6awith only the lock split applied.Landed through #1505 (tracker #1502), not #1503: the operator merged #1505, the competing PR for the same defect. All five acceptance criteria hold on live
mainand are ticked above with the landed and reviewed SHAs.git range-diff 8e2cf58^..ca66a11 b47a824^..96d2646shows all four commits as=.96d2646is success, 16 of 16.96d2646: 29/29 natively on Windows and 29/29 ingolang:1.25as a non-root user. The tests named in the criteria PASS on both, apart from the two Windows skips the third criterion names.The second out-of-scope item landed too: #1505 makes the post-cut
0o000arm assert "could not be read", which removes the wrong-reason pass on every OS.#1503 covered the same scope and is superseded by #1505. It stays open until the operator decides on it.
Shutting this tracker by hand.