chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
import { test, expect } from 'vitest'
|
||||
|
||||
import { Git } from '../../../src/sandbox/git'
|
||||
import type { Commands } from '../../../src/sandbox/commands'
|
||||
import { InvalidArgumentError } from '../../../src/errors'
|
||||
|
||||
// Stub command runner that fails if a git command is actually executed —
|
||||
// validation must throw before reaching it.
|
||||
const failingCommands = {
|
||||
run: () => {
|
||||
throw new Error('commands.run should not be called')
|
||||
},
|
||||
} as unknown as Commands
|
||||
|
||||
test('git.reset throws InvalidArgumentError on an invalid mode', async () => {
|
||||
const git = new Git(failingCommands)
|
||||
await expect(
|
||||
// @ts-expect-error - testing runtime validation with an invalid mode
|
||||
git.reset('/repo', { mode: 'bogus' })
|
||||
).rejects.toThrow(InvalidArgumentError)
|
||||
})
|
||||
|
||||
test('git.reset accepts a valid mode', async () => {
|
||||
const git = new Git(failingCommands)
|
||||
// A valid mode must pass validation and reach the (stubbed) command runner.
|
||||
await expect(git.reset('/repo', { mode: 'hard' })).rejects.toThrow(
|
||||
'commands.run should not be called'
|
||||
)
|
||||
})
|
||||
|
||||
test('git.remoteAdd throws InvalidArgumentError when name or url is missing', async () => {
|
||||
const git = new Git(failingCommands)
|
||||
await expect(
|
||||
git.remoteAdd('/repo', '', 'https://example.com')
|
||||
).rejects.toThrow(InvalidArgumentError)
|
||||
await expect(git.remoteAdd('/repo', 'origin', '')).rejects.toThrow(
|
||||
InvalidArgumentError
|
||||
)
|
||||
})
|
||||
|
||||
test('git.remoteGet throws InvalidArgumentError when name is missing', async () => {
|
||||
const git = new Git(failingCommands)
|
||||
await expect(git.remoteGet('/repo', '')).rejects.toThrow(InvalidArgumentError)
|
||||
})
|
||||
Reference in New Issue
Block a user