t1430: improve test coverage of deletion of badly-named refs
Check "branch -d broken...ref" Check various combinations of * Deleting using "update-ref -d" * Deleting using "update-ref --no-deref -d" * Deleting using "branch -d" in the following combinations of symref -> ref: * badname -> broken...ref * badname -> broken...ref (dangling) * broken...symref -> master * broken...symref -> idonotexist (dangling) Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: David Turner <dturner@twopensource.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
b78ceced0c
commit
757552db57
@ -171,16 +171,6 @@ test_expect_success 'for-each-ref emits warnings for broken names' '
|
||||
test_i18ngrep "ignoring ref with broken name refs/heads/broken\.\.\.symref" error
|
||||
'
|
||||
|
||||
test_expect_success 'update-ref --no-deref -d can delete reference to broken name' '
|
||||
printf "ref: refs/heads/broken...ref\n" >.git/refs/heads/badname &&
|
||||
test_when_finished "rm -f .git/refs/heads/badname" &&
|
||||
test_path_is_file .git/refs/heads/badname &&
|
||||
git update-ref --no-deref -d refs/heads/badname >output 2>error &&
|
||||
test_path_is_missing .git/refs/heads/badname &&
|
||||
test_must_be_empty output &&
|
||||
test_must_be_empty error
|
||||
'
|
||||
|
||||
test_expect_success 'update-ref -d can delete broken name' '
|
||||
cp .git/refs/heads/master .git/refs/heads/broken...ref &&
|
||||
test_when_finished "rm -f .git/refs/heads/broken...ref" &&
|
||||
@ -192,6 +182,104 @@ test_expect_success 'update-ref -d can delete broken name' '
|
||||
! grep -e "broken\.\.\.ref" output
|
||||
'
|
||||
|
||||
test_expect_success 'branch -d can delete broken name' '
|
||||
cp .git/refs/heads/master .git/refs/heads/broken...ref &&
|
||||
test_when_finished "rm -f .git/refs/heads/broken...ref" &&
|
||||
git branch -d broken...ref >output 2>error &&
|
||||
test_i18ngrep "Deleted branch broken...ref (was broken)" output &&
|
||||
test_must_be_empty error &&
|
||||
git branch >output 2>error &&
|
||||
! grep -e "broken\.\.\.ref" error &&
|
||||
! grep -e "broken\.\.\.ref" output
|
||||
'
|
||||
|
||||
test_expect_success 'update-ref --no-deref -d can delete symref to broken name' '
|
||||
cp .git/refs/heads/master .git/refs/heads/broken...ref &&
|
||||
test_when_finished "rm -f .git/refs/heads/broken...ref" &&
|
||||
printf "ref: refs/heads/broken...ref\n" >.git/refs/heads/badname &&
|
||||
test_when_finished "rm -f .git/refs/heads/badname" &&
|
||||
git update-ref --no-deref -d refs/heads/badname >output 2>error &&
|
||||
test_path_is_missing .git/refs/heads/badname &&
|
||||
test_must_be_empty output &&
|
||||
test_must_be_empty error
|
||||
'
|
||||
|
||||
test_expect_success 'branch -d can delete symref to broken name' '
|
||||
cp .git/refs/heads/master .git/refs/heads/broken...ref &&
|
||||
test_when_finished "rm -f .git/refs/heads/broken...ref" &&
|
||||
printf "ref: refs/heads/broken...ref\n" >.git/refs/heads/badname &&
|
||||
test_when_finished "rm -f .git/refs/heads/badname" &&
|
||||
git branch -d badname >output 2>error &&
|
||||
test_path_is_missing .git/refs/heads/badname &&
|
||||
test_i18ngrep "Deleted branch badname (was refs/heads/broken\.\.\.ref)" output &&
|
||||
test_must_be_empty error
|
||||
'
|
||||
|
||||
test_expect_success 'update-ref --no-deref -d can delete dangling symref to broken name' '
|
||||
printf "ref: refs/heads/broken...ref\n" >.git/refs/heads/badname &&
|
||||
test_when_finished "rm -f .git/refs/heads/badname" &&
|
||||
git update-ref --no-deref -d refs/heads/badname >output 2>error &&
|
||||
test_path_is_missing .git/refs/heads/badname &&
|
||||
test_must_be_empty output &&
|
||||
test_must_be_empty error
|
||||
'
|
||||
|
||||
test_expect_success 'branch -d can delete dangling symref to broken name' '
|
||||
printf "ref: refs/heads/broken...ref\n" >.git/refs/heads/badname &&
|
||||
test_when_finished "rm -f .git/refs/heads/badname" &&
|
||||
git branch -d badname >output 2>error &&
|
||||
test_path_is_missing .git/refs/heads/badname &&
|
||||
test_i18ngrep "Deleted branch badname (was refs/heads/broken\.\.\.ref)" output &&
|
||||
test_must_be_empty error
|
||||
'
|
||||
|
||||
test_expect_success 'update-ref -d can delete broken name through symref' '
|
||||
cp .git/refs/heads/master .git/refs/heads/broken...ref &&
|
||||
test_when_finished "rm -f .git/refs/heads/broken...ref" &&
|
||||
printf "ref: refs/heads/broken...ref\n" >.git/refs/heads/badname &&
|
||||
test_when_finished "rm -f .git/refs/heads/badname" &&
|
||||
git update-ref -d refs/heads/badname >output 2>error &&
|
||||
test_path_is_missing .git/refs/heads/broken...ref &&
|
||||
test_must_be_empty output &&
|
||||
test_must_be_empty error
|
||||
'
|
||||
|
||||
test_expect_success 'update-ref --no-deref -d can delete symref with broken name' '
|
||||
printf "ref: refs/heads/master\n" >.git/refs/heads/broken...symref &&
|
||||
test_when_finished "rm -f .git/refs/heads/broken...symref" &&
|
||||
git update-ref --no-deref -d refs/heads/broken...symref >output 2>error &&
|
||||
test_path_is_missing .git/refs/heads/broken...symref &&
|
||||
test_must_be_empty output &&
|
||||
test_must_be_empty error
|
||||
'
|
||||
|
||||
test_expect_success 'branch -d can delete symref with broken name' '
|
||||
printf "ref: refs/heads/master\n" >.git/refs/heads/broken...symref &&
|
||||
test_when_finished "rm -f .git/refs/heads/broken...symref" &&
|
||||
git branch -d broken...symref >output 2>error &&
|
||||
test_path_is_missing .git/refs/heads/broken...symref &&
|
||||
test_i18ngrep "Deleted branch broken...symref (was refs/heads/master)" output &&
|
||||
test_must_be_empty error
|
||||
'
|
||||
|
||||
test_expect_success 'update-ref --no-deref -d can delete dangling symref with broken name' '
|
||||
printf "ref: refs/heads/idonotexist\n" >.git/refs/heads/broken...symref &&
|
||||
test_when_finished "rm -f .git/refs/heads/broken...symref" &&
|
||||
git update-ref --no-deref -d refs/heads/broken...symref >output 2>error &&
|
||||
test_path_is_missing .git/refs/heads/broken...symref &&
|
||||
test_must_be_empty output &&
|
||||
test_must_be_empty error
|
||||
'
|
||||
|
||||
test_expect_success 'branch -d can delete dangling symref with broken name' '
|
||||
printf "ref: refs/heads/idonotexist\n" >.git/refs/heads/broken...symref &&
|
||||
test_when_finished "rm -f .git/refs/heads/broken...symref" &&
|
||||
git branch -d broken...symref >output 2>error &&
|
||||
test_path_is_missing .git/refs/heads/broken...symref &&
|
||||
test_i18ngrep "Deleted branch broken...symref (was refs/heads/idonotexist)" output &&
|
||||
test_must_be_empty error
|
||||
'
|
||||
|
||||
test_expect_success 'update-ref -d cannot delete non-ref in .git dir' '
|
||||
echo precious >.git/my-private-file &&
|
||||
echo precious >expect &&
|
||||
|
Loading…
Reference in New Issue
Block a user