mirror of
https://github.com/stablyai/orca.git
synced 2026-09-22 16:02:32 +00:00
* fix(worktrees): fall back from stale default base refs (#7312) * docs(worktrees): explain base fallback policy * fix(worktrees): harden stale base fallback edge cases --------- Co-authored-by: Jinjing <6427696+AmethystLiang@users.noreply.github.com>
54 lines
1.7 KiB
TypeScript
54 lines
1.7 KiB
TypeScript
import { describe, expect, it, vi } from 'vitest'
|
|
import { resolveWorktreeCreateBase } from './worktree-create-base'
|
|
|
|
describe('resolveWorktreeCreateBase', () => {
|
|
it('falls back from a stale persisted base to the detected default', async () => {
|
|
const resolveDefaultBaseRef = vi.fn().mockResolvedValue('origin/main')
|
|
const isBaseUsable = vi.fn().mockResolvedValue(false)
|
|
|
|
await expect(
|
|
resolveWorktreeCreateBase({
|
|
repoWorktreeBaseRef: 'origin/master',
|
|
resolveDefaultBaseRef,
|
|
isBaseUsable
|
|
})
|
|
).resolves.toBe('origin/main')
|
|
|
|
expect(resolveDefaultBaseRef).toHaveBeenCalledTimes(1)
|
|
expect(isBaseUsable).toHaveBeenCalledWith('origin/master')
|
|
})
|
|
|
|
it('returns an explicit base without probing defaults or usability', async () => {
|
|
const resolveDefaultBaseRef = vi.fn()
|
|
const isBaseUsable = vi.fn()
|
|
|
|
await expect(
|
|
resolveWorktreeCreateBase({
|
|
requestedBaseBranch: 'origin/master',
|
|
repoWorktreeBaseRef: 'origin/main',
|
|
resolveDefaultBaseRef,
|
|
isBaseUsable
|
|
})
|
|
).resolves.toBe('origin/master')
|
|
|
|
expect(resolveDefaultBaseRef).not.toHaveBeenCalled()
|
|
expect(isBaseUsable).not.toHaveBeenCalled()
|
|
})
|
|
|
|
it('keeps a usable persisted base when it is still valid', async () => {
|
|
const resolveDefaultBaseRef = vi.fn().mockResolvedValue('origin/main')
|
|
const isBaseUsable = vi.fn().mockResolvedValue(true)
|
|
|
|
await expect(
|
|
resolveWorktreeCreateBase({
|
|
repoWorktreeBaseRef: 'origin/master',
|
|
resolveDefaultBaseRef,
|
|
isBaseUsable
|
|
})
|
|
).resolves.toBe('origin/master')
|
|
|
|
expect(resolveDefaultBaseRef).toHaveBeenCalledTimes(1)
|
|
expect(isBaseUsable).toHaveBeenCalledWith('origin/master')
|
|
})
|
|
})
|