git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH] New test for rebase with preserve merges and squash

From
JSJörg Sommer <joerg@alea.gnuu.de>
Date
Mar 20, 2008, 13:01 UTC
Message-ID
<1206018070-3402-1-git-send-email-joerg@alea.gnuu.de>
In-Reply-To
<alpine.LSU.1.00.0803201208080.3983@racer.site>
Signed-off-by: Jörg Sommer <joerg@alea.gnuu.de>
---
 t/t3404-rebase-interactive.sh |   52 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 52 insertions(+), 0 deletions(-)
Show 8 quoted lines
> > > 
> > > Please mark such tests with test_expect_fail.
> > 
> > No, I expect the test succeeds. Currently, it fails. This might be, 
> > because my expectations are wrong or there's a bug.
> 
> The definition of "test_expect_fail" is: this should succeed, but needs 
> fixin'.
Ahh, I didn't know this. Here's a new one:
diff --git a/t/t3404-rebase-interactive.sh b/t/t3404-rebase-interactive.sh
index 62e65d7..c849415 100755
--- a/t/t3404-rebase-interactive.sh
+++ b/t/t3404-rebase-interactive.sh
@@ -362,4 +362,56 @@ test_expect_success 'rebase with a file named HEAD in worktree' '
 
 '
 
+test_expect_success 'squash and preserve merges' '
+	test_tick &&
+	git checkout -b squash-and-preserve-merges master &&
+	echo A > file1 &&
+	git commit -m SaPM-1 file1 &&
+	echo B > file1 &&
+	git commit -m SaPM-2 file1 &&
+	git merge to-be-preserved &&
+	echo C > file1 &&
+	git commit -m SaPM-3 file1
+'
+
+# This test should fail, because the prompt includes the commit from the
+# merge not only the merge:
+# -> pick 9604163 unrelated
+#    pick 5ef0364 SaPM-1
+#    pick 22aadcf SaPM-2
+#    pick 828f7d8 Merge branch 'to-be-preserved' into squash-and-preserve-merges
+#    pick 2a15a54 SaPM-3
+test_expect_failure 'expect preserve merges shown not commits from merge' '
+        EXPECT_COUNT=4 FAKE_LINES="1 2 squash 4 3" \
+          git rebase -i -p --onto branch1 master ||
+        { git rebase --abort;
+          EXPECT_COUNT=5 FAKE_LINES="1 2 3 squash 5 4" \
+          git rebase -i -p --onto branch1 master;
+          false; }
+'
+
+# The rebase changes nothing: SaPM-3 is still the last commit while it
+# should have been merged with SaMP-2 and the branch is not rebased on
+# branch1
+#
+# % git forest squash-and-preserve-merges
+# ╓─[squash-and-preserve-merges]──SaPM-3
+# ╟ Merge branch 'to-be-preserved' into squash-and-preserve-merges
+# ╠═╗ 
+# ╟ ║ SaPM-2
+# ╟ ║ SaPM-1
+# ║ ╟─[to-be-preserved]──unrelated
+# ╟─║─[master]──E
+# ╠═╝ 
+# ╟ D
+# ╟ C
+# ╟ B
+# ╙─[A]──A
+test_expect_failure 'squash and preserve merges' '
+	test $(git rev-parse HEAD^2) = $(git rev-parse to-be-preserved) &&
+	test $(git rev-parse HEAD~3) = $(git rev-parse branch1) &&
+	test $(git show HEAD:file1) = C &&
+	test $(git show HEAD~2:file1) = A
+'
+
 test_done
-- 
1.5.4.4
Previous: Johannes SchindelinNext: Johannes Schindelin
Message 5 of 8 in “New test for preserve merges and squash”
  1. New test for preserve merges and squashJörg Sommer, Mar 20, 2008
  2. Junio C HamanoMar 20, 2008
  3. Jörg SommerMar 20, 2008
  4. Johannes SchindelinMar 20, 2008
  5. New test for rebase with preserve merges and squashJörg Sommer, Mar 20, 2008
  6. Johannes SchindelinMar 20, 2008
  7. Why rebase with preserve merges asks for merged commitsJörg Sommer, Mar 21, 2008
  8. Johannes SchindelinMar 21, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.