mirror of
https://github.com/git/git
synced 2024-09-13 05:14:36 +00:00
t3415: increase granularity of test_auto_{fixup,squash}()
We are using `test_must_fail test_auto_{fixup,squash}` which would ensure that the function failed. However, this is a little ham-fisted as there is no way of ensuring that the expected part of the function actually fails. Increase the granularity by accepting an optional `!` first argument which will check that the rebase does not squash in any commits by ensuring that there are still 4 commits. If `!` is not provided, the old logic is run. This patch may be better reviewed with `--ignore-all-space`. Signed-off-by: Denton Liu <liu.denton@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
a781cd6fef
commit
c232ffa83c
|
@ -25,6 +25,13 @@ test_expect_success setup '
|
||||||
'
|
'
|
||||||
|
|
||||||
test_auto_fixup () {
|
test_auto_fixup () {
|
||||||
|
no_squash= &&
|
||||||
|
if test "x$1" = 'x!'
|
||||||
|
then
|
||||||
|
no_squash=true
|
||||||
|
shift
|
||||||
|
fi &&
|
||||||
|
|
||||||
git reset --hard base &&
|
git reset --hard base &&
|
||||||
echo 1 >file1 &&
|
echo 1 >file1 &&
|
||||||
git add -u &&
|
git add -u &&
|
||||||
|
@ -35,14 +42,19 @@ test_auto_fixup () {
|
||||||
test_tick &&
|
test_tick &&
|
||||||
git rebase $2 -i HEAD^^^ &&
|
git rebase $2 -i HEAD^^^ &&
|
||||||
git log --oneline >actual &&
|
git log --oneline >actual &&
|
||||||
test_line_count = 3 actual &&
|
if test -n "$no_squash"
|
||||||
git diff --exit-code $1 &&
|
then
|
||||||
echo 1 >expect &&
|
test_line_count = 4 actual
|
||||||
git cat-file blob HEAD^:file1 >actual &&
|
else
|
||||||
test_cmp expect actual &&
|
test_line_count = 3 actual &&
|
||||||
git cat-file commit HEAD^ >commit &&
|
git diff --exit-code $1 &&
|
||||||
grep first commit >actual &&
|
echo 1 >expect &&
|
||||||
test_line_count = 1 actual
|
git cat-file blob HEAD^:file1 >actual &&
|
||||||
|
test_cmp expect actual &&
|
||||||
|
git cat-file commit HEAD^ >commit &&
|
||||||
|
grep first commit >actual &&
|
||||||
|
test_line_count = 1 actual
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
test_expect_success 'auto fixup (option)' '
|
test_expect_success 'auto fixup (option)' '
|
||||||
|
@ -52,12 +64,19 @@ test_expect_success 'auto fixup (option)' '
|
||||||
test_expect_success 'auto fixup (config)' '
|
test_expect_success 'auto fixup (config)' '
|
||||||
git config rebase.autosquash true &&
|
git config rebase.autosquash true &&
|
||||||
test_auto_fixup final-fixup-config-true &&
|
test_auto_fixup final-fixup-config-true &&
|
||||||
test_must_fail test_auto_fixup fixup-config-true-no --no-autosquash &&
|
test_auto_fixup ! fixup-config-true-no --no-autosquash &&
|
||||||
git config rebase.autosquash false &&
|
git config rebase.autosquash false &&
|
||||||
test_must_fail test_auto_fixup final-fixup-config-false
|
test_auto_fixup ! final-fixup-config-false
|
||||||
'
|
'
|
||||||
|
|
||||||
test_auto_squash () {
|
test_auto_squash () {
|
||||||
|
no_squash= &&
|
||||||
|
if test "x$1" = 'x!'
|
||||||
|
then
|
||||||
|
no_squash=true
|
||||||
|
shift
|
||||||
|
fi &&
|
||||||
|
|
||||||
git reset --hard base &&
|
git reset --hard base &&
|
||||||
echo 1 >file1 &&
|
echo 1 >file1 &&
|
||||||
git add -u &&
|
git add -u &&
|
||||||
|
@ -68,14 +87,19 @@ test_auto_squash () {
|
||||||
test_tick &&
|
test_tick &&
|
||||||
git rebase $2 -i HEAD^^^ &&
|
git rebase $2 -i HEAD^^^ &&
|
||||||
git log --oneline >actual &&
|
git log --oneline >actual &&
|
||||||
test_line_count = 3 actual &&
|
if test -n "$no_squash"
|
||||||
git diff --exit-code $1 &&
|
then
|
||||||
echo 1 >expect &&
|
test_line_count = 4 actual
|
||||||
git cat-file blob HEAD^:file1 >actual &&
|
else
|
||||||
test_cmp expect actual &&
|
test_line_count = 3 actual &&
|
||||||
git cat-file commit HEAD^ >commit &&
|
git diff --exit-code $1 &&
|
||||||
grep first commit >actual &&
|
echo 1 >expect &&
|
||||||
test_line_count = 2 actual
|
git cat-file blob HEAD^:file1 >actual &&
|
||||||
|
test_cmp expect actual &&
|
||||||
|
git cat-file commit HEAD^ >commit &&
|
||||||
|
grep first commit >actual &&
|
||||||
|
test_line_count = 2 actual
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
test_expect_success 'auto squash (option)' '
|
test_expect_success 'auto squash (option)' '
|
||||||
|
@ -85,9 +109,9 @@ test_expect_success 'auto squash (option)' '
|
||||||
test_expect_success 'auto squash (config)' '
|
test_expect_success 'auto squash (config)' '
|
||||||
git config rebase.autosquash true &&
|
git config rebase.autosquash true &&
|
||||||
test_auto_squash final-squash-config-true &&
|
test_auto_squash final-squash-config-true &&
|
||||||
test_must_fail test_auto_squash squash-config-true-no --no-autosquash &&
|
test_auto_squash ! squash-config-true-no --no-autosquash &&
|
||||||
git config rebase.autosquash false &&
|
git config rebase.autosquash false &&
|
||||||
test_must_fail test_auto_squash final-squash-config-false
|
test_auto_squash ! final-squash-config-false
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'misspelled auto squash' '
|
test_expect_success 'misspelled auto squash' '
|
||||||
|
|
Loading…
Reference in a new issue