test: make five suites Windows-runner clean
First ci-windows run exposed four platform assumptions in the fixtures: - smoke: the scratch repo inherited the runner's system-wide core.autocrlf=true (Git for Windows default), so every index restore smudged LF to CRLF and broke the byte-exact assertions — pin core.autocrlf=false in the fixture (eol policy is not what these destructive-op tests are about). - git / git-worktree: Windows TEMP is the 8.3 short form (C:\Users\RUNNER~1\...) while git reports long paths, and realpathSync does not expand 8.3 aliases — switch the canonicalizer to realpathSync.native (libuv resolves via GetFinalPathNameByHandle, which does); same trick as the existing macOS /var workaround. - bundle-route: the ETag memo revalidates on stat (mtime+size) and Windows updates file timestamps lazily, so the equal-size rewrite still looked unchanged — change the length too. - market-manifest: GNU tar (Git Bash) reads the drive-letter colon of absolute Windows paths as a remote-host spec — run it from the pack dir with the bare tarball name instead.
This commit is contained in:
@@ -68,8 +68,11 @@ describe('linked Git worktrees', () => {
|
||||
git(main, ['worktree', 'add', '-q', '-b', 'agent', agent])
|
||||
writeFileSync(join(agent, 'tracked.txt'), 'changed by agent\n')
|
||||
// macOS tmpdir() keeps the /var symlink while git reports the resolved
|
||||
// /private/var prefix — canonicalize every path handed to git APIs.
|
||||
const agentPath = realpathSync(agent)
|
||||
// /private/var prefix; on Windows TEMP is often the 8.3 short form
|
||||
// (C:\Users\RUNNER~1\...) while git reports the long path. The NATIVE
|
||||
// realpath resolves both aliasings (libuv's GetFinalPathNameByHandle
|
||||
// expands 8.3 names) — canonicalize every path handed to git APIs.
|
||||
const agentPath = realpathSync.native(agent)
|
||||
|
||||
const listed = await worktrees(main)
|
||||
expect(listed).toHaveLength(2)
|
||||
@@ -87,7 +90,7 @@ describe('linked Git worktrees', () => {
|
||||
rmSync(agent, { recursive: true, force: true })
|
||||
const remaining = await worktrees(main)
|
||||
expect(remaining).toHaveLength(1)
|
||||
expect(resolve(remaining[0]!.path)).toBe(resolve(realpathSync(main)))
|
||||
expect(resolve(remaining[0]!.path)).toBe(resolve(realpathSync.native(main)))
|
||||
expect(remaining[0]!.current).toBe(true)
|
||||
await expect(resolveWorktree(main, agentPath)).rejects.toThrow('unknown linked worktree')
|
||||
} finally {
|
||||
|
||||
Reference in New Issue
Block a user