Files
orca/src/relay/git-handler-worktree-clean.test.ts
T
Neil 8ba451e8dd fix: preserve newline worktree paths
Use porcelain-z worktree parsing with fallback line parsing so newline-containing worktree paths survive local and relay operations. Risk: low.
2026-05-31 01:50:16 -07:00

30 lines
976 B
TypeScript

import { describe, expect, it, vi } from 'vitest'
import type { GitExec } from './git-handler-ops'
import { worktreeIsCleanOp } from './git-handler-worktree-ops'
describe('worktreeIsCleanOp', () => {
it('reports clean SSH worktrees without returning porcelain output', async () => {
const git = vi.fn<GitExec>(async () => ({ stdout: '\n', stderr: '' }))
await expect(worktreeIsCleanOp(git, { worktreePath: '/repo-feature' })).resolves.toEqual({
clean: true,
stdout: undefined
})
expect(git).toHaveBeenCalledWith(
['status', '--porcelain', '--untracked-files=all'],
'/repo-feature'
)
})
it('returns porcelain output for dirty SSH worktrees', async () => {
const stdout = ' M src/file.ts\n?? scratch.txt\n'
const git = vi.fn<GitExec>(async () => ({ stdout, stderr: '' }))
await expect(worktreeIsCleanOp(git, { worktreePath: '/repo-feature' })).resolves.toEqual({
clean: false,
stdout
})
})
})