t3404 (rebase -i): introduce helper to check position of HEAD

The same code to check the position of HEAD is used by several
tests in this script.  Factor it out as a function and simplify it.

Noticed using an &&-chaining tester, because the current code
does not propagate the precise exit status from errors.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jonathan Nieder 2010-10-31 02:40:30 -05:00 committed by Junio C Hamano
parent 99b028e558
commit 5c947e2c38

View File

@ -29,6 +29,12 @@ Initial setup:
. "$TEST_DIRECTORY"/lib-rebase.sh . "$TEST_DIRECTORY"/lib-rebase.sh
test_cmp_rev () {
git describe --always --tags "$1" >expect.rev &&
git describe --always --tags "$2" >actual.rev &&
test_cmp expect.rev actual.rev
}
set_fake_editor set_fake_editor
# WARNING: Modifications to the initial repository can change the SHA ID used # WARNING: Modifications to the initial repository can change the SHA ID used
@ -80,20 +86,12 @@ test_expect_success 'rebase -i with the exec command' '
test_path_is_file touch-one && test_path_is_file touch-one &&
test_path_is_file touch-two && test_path_is_file touch-two &&
test_path_is_missing touch-three " (should have stopped before)" && test_path_is_missing touch-three " (should have stopped before)" &&
test $(git rev-parse C) = $(git rev-parse HEAD) || { test_cmp_rev C HEAD &&
echo "Stopped at wrong revision:"
echo "($(git describe --tags HEAD) instead of C)"
false
} &&
git rebase --continue && git rebase --continue &&
test_path_is_file touch-three && test_path_is_file touch-three &&
test_path_is_file "touch-file name with spaces" && test_path_is_file "touch-file name with spaces" &&
test_path_is_file touch-after-semicolon && test_path_is_file touch-after-semicolon &&
test $(git rev-parse master) = $(git rev-parse HEAD) || { test_cmp_rev master HEAD &&
echo "Stopped at wrong revision:"
echo "($(git describe --tags HEAD) instead of master)"
false
} &&
rm -f touch-* rm -f touch-*
' '
@ -114,11 +112,7 @@ test_expect_success 'rebase -i with the exec command checks tree cleanness' '
export FAKE_LINES && export FAKE_LINES &&
test_must_fail git rebase -i HEAD^ test_must_fail git rebase -i HEAD^
) && ) &&
test $(git rev-parse master^) = $(git rev-parse HEAD) || { test_cmp_rev master^ HEAD &&
echo "Stopped at wrong revision:"
echo "($(git describe --tags HEAD) instead of master^)"
false
} &&
git reset --hard && git reset --hard &&
git rebase --continue git rebase --continue
' '