threads / patch / 25313

patch, 2 partsrebase-autosquash: add testcase for fixup occuring before its fixed commit.

Subject: [PATCH 2/2] rebase-autosquash: add testcase for fixup occuring before its fixed commit.

## tl;dr

3 messages between Oct 1, 2010 and Oct 1, 2010. Diffs are folded; open one to read it.

replies: 2people: 1as markdown or json

Yann Dirson· Oct 1, 2010, 21:19 UTC · lore

[PATCH 0/2] Testcase for a rebase-autosquash bug

While using --autosquash with a "fixup" commit intended to fixup one of its descendants, I noticed it just did not work, so here is a testcase for the failure.

While I was at it, it looked to me like a couple of "&&" were missing. We surely want commit failures to fail at those places - although failures there would probably induce failures later on which would be detected, it is always better to fail early.

Yann Dirson (2):
  t/t3415: use && where applicable.
  rebase-autosquash: add testcase for fixup occuring before its fixed
    commit.
 t/t3415-rebase-autosquash.sh |   31 ++++++++++++++++++++++++++++---
 1 files changed, 28 insertions(+), 3 deletions(-)
-- 
1.7.2.3
Yann Dirson· Oct 1, 2010, 21:19 UTC · re: Yann Dirson · lore

[PATCH 1/2] t/t3415: use && where applicable.

Signed-off-by: Yann Dirson <ydirson@altern.org>
---
 t/t3415-rebase-autosquash.sh |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)
Show changes to t/t3415-rebase-autosquash.sh +3 −3
diff --git a/t/t3415-rebase-autosquash.sh b/t/t3415-rebase-autosquash.sh
index 37cb89a..fd2184c 100755
--- a/t/t3415-rebase-autosquash.sh
+++ b/t/t3415-rebase-autosquash.sh
@@ -26,7 +26,7 @@ test_auto_fixup() {
 	echo 1 >file1 &&
 	git add -u &&
 	test_tick &&
-	git commit -m "fixup! first"
+	git commit -m "fixup! first" &&
 
 	git tag $1 &&
 	test_tick &&
@@ -55,7 +55,7 @@ test_auto_squash() {
 	echo 1 >file1 &&
 	git add -u &&
 	test_tick &&
-	git commit -m "squash! first"
+	git commit -m "squash! first" &&
 
 	git tag $1 &&
 	test_tick &&
@@ -84,7 +84,7 @@ test_expect_success 'misspelled auto squash' '
 	echo 1 >file1 &&
 	git add -u &&
 	test_tick &&
-	git commit -m "squash! forst"
+	git commit -m "squash! forst" &&
 	git tag final-missquash &&
 	test_tick &&
 	git rebase --autosquash -i HEAD^^^ &&
-- 
1.7.2.3
Yann Dirson· Oct 1, 2010, 21:19 UTC · re: Yann Dirson · lore

Can easily occur when one has started splitting a patch in two, and subsequently wants to migrate more contents from the bottom patch to the top one: extracting a fixup using an interactive rebase, committing it between the two.

Currently, the generated instructions do add the "fixup" directive at the correct place, but the "pick" is also left where it was, making the "fixup" a noop.

Signed-off-by: Yann Dirson <ydirson@altern.org>
---
 t/t3415-rebase-autosquash.sh |   25 +++++++++++++++++++++++++
 1 files changed, 25 insertions(+), 0 deletions(-)
Show changes to t/t3415-rebase-autosquash.sh +25 −0
diff --git a/t/t3415-rebase-autosquash.sh b/t/t3415-rebase-autosquash.sh
index fd2184c..226394d 100755
--- a/t/t3415-rebase-autosquash.sh
+++ b/t/t3415-rebase-autosquash.sh
@@ -50,6 +50,31 @@ test_expect_success 'auto fixup (config)' '
 	test_must_fail test_auto_fixup final-fixup-config-false
 '
 
+test_auto_fixup_reversed() {
+	git reset --hard base &&
+
+	echo 3 >file1 &&
+	git add -u &&
+	test_tick &&
+	git commit -m "fixup! first" &&
+
+	echo 3 >file2 &&
+	git add -u &&
+	test_tick &&
+	git commit -m "first" &&
+
+	git tag $1 &&
+	test_tick &&
+	git rebase --autosquash -i base &&
+	git log --oneline base..HEAD >actual &&
+	test 1 = $(wc -l <actual) &&
+	git diff --exit-code $1
+}
+
+test_expect_failure 'auto reversed fixup (option)' '
+	test_auto_fixup_reversed final-revfixup-option
+'
+
 test_auto_squash() {
 	git reset --hard base &&
 	echo 1 >file1 &&
-- 
1.7.2.3

← back to recent threads