mirror of
https://github.com/stablyai/orca.git
synced 2026-09-25 16:02:38 +00:00
Resolve ambiguous git worktree base refs by qualifying local and remote branch refs before invoking git worktree add.
52 lines
1.7 KiB
TypeScript
52 lines
1.7 KiB
TypeScript
import { describe, expect, it, vi } from 'vitest'
|
|
import { resolveWorktreeAddBaseRef } from './worktree-base-ref'
|
|
|
|
describe('resolveWorktreeAddBaseRef', () => {
|
|
it('leaves fully qualified refs unchanged', async () => {
|
|
const refExists = vi.fn()
|
|
|
|
await expect(resolveWorktreeAddBaseRef('refs/heads/main', refExists)).resolves.toBe(
|
|
'refs/heads/main'
|
|
)
|
|
|
|
expect(refExists).not.toHaveBeenCalled()
|
|
})
|
|
|
|
it('qualifies a bare local branch name', async () => {
|
|
const refExists = vi.fn(async (ref: string) => ref === 'refs/heads/main')
|
|
|
|
await expect(resolveWorktreeAddBaseRef('main', refExists)).resolves.toBe('refs/heads/main')
|
|
|
|
expect(refExists).toHaveBeenCalledWith('refs/heads/main')
|
|
})
|
|
|
|
it('prefers a remote-tracking ref for remote-display names', async () => {
|
|
const refExists = vi.fn(async (ref: string) => ref === 'refs/remotes/origin/main')
|
|
|
|
await expect(resolveWorktreeAddBaseRef('origin/main', refExists)).resolves.toBe(
|
|
'refs/remotes/origin/main'
|
|
)
|
|
|
|
expect(refExists).toHaveBeenCalledWith('refs/remotes/origin/main')
|
|
})
|
|
|
|
it('qualifies a slash-containing local branch when no matching remote ref exists', async () => {
|
|
const refExists = vi.fn(async (ref: string) => ref === 'refs/heads/release/main')
|
|
|
|
await expect(resolveWorktreeAddBaseRef('release/main', refExists)).resolves.toBe(
|
|
'refs/heads/release/main'
|
|
)
|
|
|
|
expect(refExists.mock.calls.map((call) => call[0])).toEqual([
|
|
'refs/remotes/release/main',
|
|
'refs/heads/release/main'
|
|
])
|
|
})
|
|
|
|
it('keeps unresolvable revisions untouched', async () => {
|
|
const refExists = vi.fn(async () => false)
|
|
|
|
await expect(resolveWorktreeAddBaseRef('abc1234', refExists)).resolves.toBe('abc1234')
|
|
})
|
|
})
|