Something went wrong. Try again.
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657import { describe, expect, it } from 'bun:test';import { mkdtempSync, rmSync } from 'node:fs';import { join } from 'node:path';import { tmpdir } from 'node:os';
async function runCli(argv: string[]): Promise<{ code: number; stdout: string; stderr: string }> { const home = mkdtempSync(join(tmpdir(), 'shard-worktree-cli-')); try { const proc = Bun.spawn(['bun', 'src/cli/index.ts', ...argv], { cwd: process.cwd(), env: { ...process.env, HOME: home, XDG_CONFIG_HOME: join(home, '.config'), SHARD_SKIP_WEB_BUILD: '1', } as Record<string, string>, stdout: 'pipe', stderr: 'pipe', }); const [code, stdout, stderr] = await Promise.all([ proc.exited, new Response(proc.stdout).text(), new Response(proc.stderr).text(), ]); return { code, stdout, stderr }; } finally { rmSync(home, { recursive: true, force: true }); }}
describe('worktree CLI top-level dispatch', () => { it('routes `shard new --help` before provider/config resolution', async () => { const result = await runCli(['new', '--help']); expect(result.code).toBe(0); expect(result.stderr).toContain('Usage: shard new --worktree'); expect(result.stderr).not.toContain('config'); });
it('routes `shard worktree --help` before provider/config resolution', async () => { const result = await runCli(['worktree', '--help']); expect(result.code).toBe(0); expect(result.stderr).toContain('Usage: shard worktree <list|status|retire>'); });
it('reports an unavailable daemon for managed worktree creation', async () => { const result = await runCli(['new', '--worktree']); expect(result.code).toBe(2); expect(result.stderr).toContain('daemon is not running'); });
it('reports an unavailable daemon for repository-scoped listing', async () => { const result = await runCli(['worktree', 'list']); expect(result.code).toBe(2); expect(result.stderr).toContain('daemon is not running'); });});