test(scp): add coverage for -n/--dry-run and -i/--interactive abort

git-scp had no test coverage at all. Cover the two paths that need no
real remote destination: dry-run must preview without touching the
index, working tree, or remote path, and declining the interactive
confirmation must abort before anything syncs.
This commit is contained in:
AJ Côté 2026-07-06 14:53:06 -04:00
parent 37706bcb41
commit e83c9825ac
No known key found for this signature in database

46
tests/git-scp.bats Normal file
View file

@ -0,0 +1,46 @@
# shellcheck shell=bash
source "$BATS_TEST_DIRNAME/test_util.sh"
setup_file() {
test_util.setup_file
}
setup() {
test_util.cd_test
test_util.git_init
printf '%s\n' 'hello' > tracked.txt
git add tracked.txt
git commit -m 'Initial commit'
# never created: neither test below should ever touch it
git remote add fake "$BATS_TEST_TMPDIR/never-created"
printf '%s\n' 'world' >> tracked.txt
}
@test "dry-run previews the sync without changing anything" {
run git scp -n fake
assert_success
assert_line -p 'tracked.txt'
assert_line -p 'DRY RUN'
run git status --short
assert_line -p 'M tracked.txt'
run test -e "$BATS_TEST_TMPDIR/never-created"
assert_failure
}
@test "interactive mode aborts without syncing when declined" {
run bash -c 'echo n | git scp -i fake'
assert_success
assert_line -p 'Aborted, nothing synced.'
run git status --short
assert_line -p 'M tracked.txt'
run test -e "$BATS_TEST_TMPDIR/never-created"
assert_failure
}