From: Elijah Newren <newren@gmail.com>
To: git@vger.kernel.org
Cc: Elijah Newren <newren@gmail.com>
Subject: [PATCH 11/37] t6036: Test index and worktree state, not just that merge fails
Date: Mon, 20 Sep 2010 02:28:44 -0600 [thread overview]
Message-ID: <1284971350-30590-12-git-send-email-newren@gmail.com> (raw)
In-Reply-To: <1284971350-30590-1-git-send-email-newren@gmail.com>
c94736a (merge-recursive: don't segfault while handling rename clashes
2009-07-30) added this testcase with an interesting corner case test,
which previously had cased git to segfault. This test ensures that the
segfault does not return and that the merge correctly fails; just add
some checks that verify the state of the index and worktree after the merge
are correct.
Signed-off-by: Elijah Newren <newren@gmail.com>
---
t/t6036-recursive-corner-cases.sh | 24 +++++++++++++++++++++---
1 files changed, 21 insertions(+), 3 deletions(-)
diff --git a/t/t6036-recursive-corner-cases.sh b/t/t6036-recursive-corner-cases.sh
index b874141..1755073 100755
--- a/t/t6036-recursive-corner-cases.sh
+++ b/t/t6036-recursive-corner-cases.sh
@@ -14,7 +14,7 @@ test_description='recursive merge corner cases'
# R1 R2
#
-test_expect_success setup '
+test_expect_success 'setup basic criss-cross + rename with no modifications' '
ten="0 1 2 3 4 5 6 7 8 9"
for i in $ten
do
@@ -45,11 +45,29 @@ test_expect_success setup '
git tag R2
'
-test_expect_success merge '
+test_expect_success 'merge simple rename+criss-cross with no modifications' '
git reset --hard &&
git checkout L2^0 &&
- test_must_fail git merge -s recursive R2^0
+ test_must_fail git merge -s recursive R2^0 &&
+
+ test 5 = $(git ls-files -s | wc -l) &&
+ test 3 = $(git ls-files -u | wc -l) &&
+ test 0 = $(git ls-files -o | wc -l) &&
+
+ test $(git rev-parse :0:one) = $(git rev-parse L2:one) &&
+ test $(git rev-parse :0:two) = $(git rev-parse R2:two) &&
+ test $(git rev-parse :2:three) = $(git rev-parse L2:three) &&
+ test $(git rev-parse :3:three) = $(git rev-parse R2:three) &&
+
+ cp two merged &&
+ >empty &&
+ test_must_fail git merge-file \
+ -L "Temporary merge branch 2" \
+ -L "" \
+ -L "Temporary merge branch 1" \
+ merged empty one &&
+ test $(git rev-parse :1:three) = $(git hash-object merged)
'
test_done
--
1.7.3.271.g16009
next prev parent reply other threads:[~2010-09-20 8:28 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-09-20 8:28 [PATCH 00/37] Audit and fix corner case bugs in recursive merge Elijah Newren
2010-09-20 8:28 ` [PATCH 01/37] t3030: Add a testcase for resolvable rename/add conflict with symlinks Elijah Newren
2010-09-20 9:15 ` Johannes Sixt
2010-09-20 9:34 ` Jakub Narebski
2010-09-20 8:28 ` [PATCH 02/37] merge-recursive: Restructure showing how to chain more process_* functions Elijah Newren
2010-09-20 8:28 ` [PATCH 03/37] t6032: Add a test checking for excessive output from merge Elijah Newren
2010-09-20 8:28 ` [PATCH 04/37] t6022: Add test combinations of {content conflict?, D/F conflict remains?} Elijah Newren
2010-09-20 8:28 ` [PATCH 05/37] t6022: Add tests for reversing order of merges when D/F conflicts present Elijah Newren
2010-09-20 8:28 ` [PATCH 06/37] t6022: Add tests with both rename source & dest involved in D/F conflicts Elijah Newren
2010-09-20 8:28 ` [PATCH 07/37] t6022: Add paired rename+D/F conflict: (two/file, one/file) -> (one, two) Elijah Newren
2010-09-20 8:28 ` [PATCH 08/37] t6022: Add tests for rename/rename combined with D/F conflicts Elijah Newren
2010-09-20 8:28 ` [PATCH 09/37] t6020: Modernize style a bit Elijah Newren
2010-09-20 9:24 ` Johannes Sixt
2010-09-20 16:03 ` Elijah Newren
2010-09-22 1:44 ` Junio C Hamano
2010-09-22 4:41 ` Elijah Newren
2010-09-20 8:28 ` [PATCH 10/37] t6020: Add a testcase for modify/delete + directory/file conflict Elijah Newren
2010-09-20 8:28 ` Elijah Newren [this message]
2010-09-20 8:28 ` [PATCH 12/37] t6036: Add a second testcase similar to the first but with content changes Elijah Newren
2010-09-20 8:28 ` [PATCH 13/37] t6036: Add testcase for undetected conflict Elijah Newren
2010-09-20 8:28 ` [PATCH 14/37] merge-recursive: Small code clarification -- variable name and comments Elijah Newren
2010-09-20 8:28 ` [PATCH 15/37] merge-recursive: Rename conflict_rename_rename*() for clarity Elijah Newren
2010-09-20 8:28 ` [PATCH 16/37] merge-recursive: Nuke rename/directory conflict detection Elijah Newren
2010-09-20 8:28 ` [PATCH 17/37] merge-recursive: Move rename/delete handling into dedicated function Elijah Newren
2010-09-20 8:28 ` [PATCH 18/37] merge-recursive: Move delete/modify " Elijah Newren
2010-09-20 8:28 ` [PATCH 19/37] merge-recursive: Move process_entry's content merging into a function Elijah Newren
2010-09-20 8:28 ` [PATCH 20/37] merge-recursive: New data structures for deferring of D/F conflicts Elijah Newren
2010-09-20 8:28 ` [PATCH 21/37] merge-recursive: New function to assist resolving renames in-core only Elijah Newren
2010-09-20 8:28 ` [PATCH 22/37] merge-recursive: Have process_entry() skip D/F or rename entries Elijah Newren
2010-09-20 8:28 ` [PATCH 23/37] merge-recursive: Structure process_df_entry() to handle more cases Elijah Newren
2010-09-20 8:28 ` [PATCH 24/37] merge-recursive: Update conflict_rename_rename_1to2() call signature Elijah Newren
2010-09-20 8:28 ` [PATCH 25/37] merge-recursive: Update merge_content() " Elijah Newren
2010-09-20 8:28 ` [PATCH 26/37] merge-recursive: Avoid doubly merging rename/add conflict contents Elijah Newren
2010-09-20 8:29 ` [PATCH 27/37] merge-recursive: Move handling of double rename of one file to two Elijah Newren
2010-09-20 8:29 ` [PATCH 28/37] merge-recursive: Move handling of double rename of one file to other file Elijah Newren
2010-09-20 8:29 ` [PATCH 29/37] merge-recursive: Delay handling of rename/delete conflicts Elijah Newren
2010-09-20 8:29 ` [PATCH 30/37] merge-recursive: Delay content merging for renames Elijah Newren
2010-09-20 8:29 ` [PATCH 31/37] merge-recursive: Delay modify/delete conflicts if D/F conflict present Elijah Newren
2010-09-20 8:29 ` [PATCH 32/37] conflict_rename_delete(): Check whether D/F conflicts are still present Elijah Newren
2010-09-20 8:29 ` [PATCH 33/37] conflict_rename_rename_1to2(): Fix checks for presence of D/F conflicts Elijah Newren
2010-09-20 8:29 ` [PATCH 34/37] merge_content(): Check whether D/F conflicts are still present Elijah Newren
2010-09-20 8:29 ` [PATCH 35/37] handle_delete_modify(): " Elijah Newren
2010-09-20 8:29 ` [PATCH 36/37] merge-recursive: Make room for directories in D/F conflicts Elijah Newren
2010-09-20 11:40 ` Johannes Sixt
2010-09-20 16:06 ` Elijah Newren
2010-09-20 8:29 ` [PATCH 37/37] merge-recursive: Remove redundant path clearing for " Elijah Newren
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1284971350-30590-12-git-send-email-newren@gmail.com \
--to=newren@gmail.com \
--cc=git@vger.kernel.org \
/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.
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 NNTP newsgroup(s).