From: Michael Haggerty <mhagger@alum.mit.edu>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org, peff@peff.net, pclouds@gmail.com,
Ramsay Jones <ramsay@ramsayjones.plus.com>,
Michael Haggerty <mhagger@alum.mit.edu>
Subject: [PATCH 05/21] t1430: improve test coverage of deletion of badly-named refs
Date: Wed, 23 Mar 2016 11:04:22 +0100 [thread overview]
Message-ID: <faabd92da429867a767599e6ce5a9f4832481d42.1458723959.git.mhagger@alum.mit.edu> (raw)
In-Reply-To: <cover.1458723959.git.mhagger@alum.mit.edu>
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>
---
t/t1430-bad-ref-name.sh | 108 +++++++++++++++++++++++++++++++++++++++++++-----
1 file changed, 98 insertions(+), 10 deletions(-)
diff --git a/t/t1430-bad-ref-name.sh b/t/t1430-bad-ref-name.sh
index 612cc32..25ddab4 100755
--- a/t/t1430-bad-ref-name.sh
+++ b/t/t1430-bad-ref-name.sh
@@ -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 &&
--
2.8.0.rc3
next prev parent reply other threads:[~2016-03-23 10:05 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-23 10:04 [PATCH 00/21] replacement for dt/refs-backend-lmdb v7 patch 04/33 Michael Haggerty
2016-03-23 10:04 ` [PATCH 01/21] t1430: test the output and error of some commands more carefully Michael Haggerty
2016-03-23 10:04 ` [PATCH 02/21] t1430: clean up broken refs/tags/shadow Michael Haggerty
2016-03-23 10:04 ` [PATCH 03/21] t1430: don't rely on symbolic-ref for creating broken symrefs Michael Haggerty
2016-03-23 10:04 ` [PATCH 04/21] t1430: test for-each-ref in the presence of badly-named refs Michael Haggerty
2016-03-23 10:04 ` Michael Haggerty [this message]
2016-03-23 10:04 ` [PATCH 06/21] resolve_missing_loose_ref(): simplify semantics Michael Haggerty
2016-03-23 10:04 ` [PATCH 07/21] resolve_ref_unsafe(): use for loop to count up to MAXDEPTH Michael Haggerty
2016-03-23 10:04 ` [PATCH 08/21] resolve_ref_unsafe(): ensure flags is always set Michael Haggerty
2016-03-23 10:04 ` [PATCH 09/21] resolve_ref_1(): eliminate local variable Michael Haggerty
2016-03-23 10:04 ` [PATCH 10/21] resolve_ref_1(): reorder code Michael Haggerty
2016-03-23 10:04 ` [PATCH 11/21] resolve_ref_1(): eliminate local variable "bad_name" Michael Haggerty
2016-03-23 10:04 ` [PATCH 12/21] files-backend: break out ref reading Michael Haggerty
2016-03-23 10:04 ` [PATCH 13/21] read_raw_ref(): manage own scratch space Michael Haggerty
2016-03-23 10:04 ` [PATCH 14/21] Inline resolve_ref_1() into resolve_ref_unsafe() Michael Haggerty
2016-03-23 10:04 ` [PATCH 15/21] read_raw_ref(): change flags parameter to unsigned int Michael Haggerty
2016-03-23 10:04 ` [PATCH 16/21] fsck_head_link(): remove unneeded flag variable Michael Haggerty
2016-03-23 10:04 ` [PATCH 17/21] cmd_merge(): " Michael Haggerty
2016-03-23 10:04 ` [PATCH 18/21] get_default_remote(): " Michael Haggerty
2016-03-23 10:04 ` [PATCH 19/21] checkout_paths(): " Michael Haggerty
2016-03-23 10:04 ` [PATCH 20/21] check_aliased_update(): check that dst_name is non-NULL Michael Haggerty
2016-03-23 10:04 ` [PATCH 21/21] show_head_ref(): check the result of resolve_ref_namespace() Michael Haggerty
2016-03-24 6:47 ` [PATCH 00/21] replacement for dt/refs-backend-lmdb v7 patch 04/33 David Turner
2016-03-27 5:22 ` Michael Haggerty
2016-03-29 20:12 ` David Turner
2016-03-30 6:37 ` Michael Haggerty
2016-03-30 20:05 ` David Turner
2016-03-31 16:14 ` Michael Haggerty
2016-03-31 22:22 ` David Turner
2016-04-01 1:37 ` Stefan Beller
2016-04-01 17:55 ` David Turner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=faabd92da429867a767599e6ce5a9f4832481d42.1458723959.git.mhagger@alum.mit.edu \
--to=mhagger@alum.mit.edu \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=pclouds@gmail.com \
--cc=peff@peff.net \
--cc=ramsay@ramsayjones.plus.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).