internal: Fix the six Windows-only native test failures and run the full suite there#643
Conversation
… suite there With NativeServer running on Windows, projectNative/test surfaced six failures that were simply unreachable before. None are socket-related; all are the tests meeting Windows for the first time. - IOSymlinkTest (3): symlinks are unsupported on Scala Native + Windows — uni's own createSymlink/readSymlink throw there — so skip when IOPath.isWindows. - IOPathTest "resolve child path": the expected string mixed a literal "/" prefix with IOPath.separator, but .path renders every separator with the platform's, so Windows yields \home\user\... Build the expectation with separator throughout, matching the sibling assertion just below it. - JSONTest / YAMLFormatterTest: their stripMargin literals arrive CRLF because the repo had no .gitattributes and checkout honours Windows' core.autocrlf, while the formatters emit LF. Add `* text=auto eol=lf` to force LF in every working tree. Widen the Scala Native (Windows) job from the http subset back to projectNative/test.
There was a problem hiding this comment.
Code Review
This pull request improves Windows compatibility for Scala Native tests. It introduces a .gitattributes file to enforce LF line endings, updates path resolution tests to use platform-specific separators, and skips symlink tests on Windows where they are unsupported. Additionally, the ADR documentation is updated to reflect these test fixes and the expansion of the CI test suite on Windows. No review comments were provided, so there is no additional feedback to address.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
Full Windows Native suite is green
0 failed. The 3 skipped are |
|
/gemini review |
There was a problem hiding this comment.
Code Review
This pull request introduces several fixes to ensure the test suite runs successfully on Windows for Scala Native. It adds a .gitattributes file to enforce LF line endings, updates IOPathTest to use platform-specific path separators, and skips symlink tests in IOSymlinkTest when running on Windows. Additionally, the ADR documentation is updated to reflect these changes. I have no further feedback to provide as there are no review comments.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
**Description** Bumps uni from 2026.1.18 to 2026.1.20. **Note:** wvlet's `Native` workflow on `main` is **already green** — Scala Steward's earlier bump to 2026.1.18 (#1876) picked up the actual fix (wvlet/uni#640, `uni_curl_shim.c` building on Windows) and both Windows native jobs now pass on `main`. So this is a version-currency bump, not an unblock. What 2026.1.19 → 2026.1.20 adds on top: - **wvlet/uni#641** (v2026.1.19) — `NativeServer` links and runs on Windows (`WSAStartup` / `WSAPoll` / `closesocket` shim). Gives uni a real `Scala Native (Windows)` CI job, so this class of break now fails in uni's own CI rather than surfacing downstream here. - **wvlet/uni#643** (v2026.1.20) — remaining Windows-only native test gaps closed; uni's Windows Native job runs the full `projectNative/test` (1441 tests green). The value here is that wvlet builds against the uni version whose Windows Scala Native support is actually exercised by upstream CI, so a future regression is caught in uni rather than here. `langJVM/Test/compile` is clean against the new version — no wvlet code changes. **Note on CI coverage:** wvlet's own Windows native jobs are gated to `push` on `main` (they're expensive), so they don't run on this PR — they'll run post-merge on `main`. The identical uni shims are already validated by uni's own green `Scala Native (Windows)` job. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Description
Follow-up to #641, which got
NativeServerlinking on Windows but had to scope theScala Native (Windows)job towvlet.uni.http.*because six tests elsewhere failed there. This fixes all six and widens the job to the fullprojectNative/test.None were socket-related — they were pre-existing gaps that only became reachable once the native binary could run on Windows at all.
IOSymlinkTest(3)createSymlink/readSymlinkthrowUnsupportedOperationExceptionthereskipwhenIOPath.isWindowsIOPathTest.resolve child path/prefix withIOPath.separator;.pathrenders every separator with the platform's, so Windows gives\home\user\docs\file.txtseparatorthroughout, matching the sibling assertion below itJSONTest.format JSON valuestripMarginsource literal arrives CRLF; formatter emits LF.gitattributesYAMLFormatterTest.format json into YAML.gitattributesThe last two are a checkout artifact: the repo had no
.gitattributes, soactions/checkouthonoured Windows'core.autocrlf=trueand checked the sources out CRLF.* text=auto eol=lfforces LF in every working tree. Verified no file in the index currently has CRLF (git ls-files --eol), so this is a no-op on existing content and there are no.bat/.cmd/.ps1files that would want CRLF. HTTP's\r\nare Scala string literals, unaffected by file line endings.Verification
IOPathTest(19),IOSymlinkTest(3),JSONTest(5),YAMLFormatterTest(1) all pass on macOS Scala Native and JVM — the fixes are no-ops off Windows (separatoris/,isWindowsis false, files are already LF). TheScala Native (Windows)job in this PR is the real check: it now runsprojectNative/testin full, so if any of the six still failed it would go red.Related Issue/Task
Follow-up to #641. Closes uni's remaining Windows Scala Native test gaps, so the Windows job now covers the whole native suite rather than a subset.
Checklist
🤖 Generated with Claude Code