mirror of
https://github.com/tj/git-extras.git
synced 2026-09-10 07:26:17 -04:00
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:
parent
37706bcb41
commit
e83c9825ac
46
tests/git-scp.bats
Normal file
46
tests/git-scp.bats
Normal 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
|
||||
}
|
||||
Loading…
Reference in a new issue