[StGit PATCH 5/6] New test: conflicting push in dirty worktree

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Karl
Date: Wednesday, March 19, 2008 - 5:31 pm

When the result of a conflicting push can't be represented in the
worktree because the worktree is dirty, the push should be aborted.
Similarly, the push should be aborted if we have to do the merge in
the worktree, but can't because the worktree is dirty.

Add a new test that tests for this. It currently fails, in a bad way:
the contents of the pushed patch is lost.

(The test uses goto instead of push, because push doesn't use the new
infrastructure yet. And old-infrastructure commands never have this
bug, because they refuse to run with a dirty worktree.)

This bug was found by Erik Sandberg <mandolaerik@gmail.com>, who also
came up with the minimal test case that I turned into this new test.

Signed-off-by: Karl Hasselström <kha@treskal.com>

---

 t/t3000-dirty-merge.sh |   35 +++++++++++++++++++++++++++++++++++
 1 files changed, 35 insertions(+), 0 deletions(-)
 create mode 100755 t/t3000-dirty-merge.sh


diff --git a/t/t3000-dirty-merge.sh b/t/t3000-dirty-merge.sh
new file mode 100755
index 0000000..dd81c9e
--- /dev/null
+++ b/t/t3000-dirty-merge.sh
@@ -0,0 +1,35 @@
+#!/bin/sh
+
+test_description='Try a push that requires merging a file that is dirty'
+
+. ./test-lib.sh
+
+test_expect_success 'Initialize StGit stack with two patches' '
+    stg init &&
+    touch a &&
+    git add a &&
+    git commit -m a &&
+    echo 1 > a &&
+    git commit -a -m p1 &&
+    echo 2 > a &&
+    git commit -a -m p2 &&
+    stg uncommit -n 2
+'
+
+test_expect_success 'Pop one patch and update the other' '
+    stg goto p1 &&
+    echo 3 > a &&
+    stg refresh
+'
+
+test_expect_failure 'Push with dirty worktree' '
+    echo 4 > a &&
+    [ "$(echo $(stg applied))" = "p1" ] &&
+    [ "$(echo $(stg unapplied))" = "p2" ] &&
+    ! stg goto p2 &&
+    [ "$(echo $(stg applied))" = "p1" ] &&
+    [ "$(echo $(stg unapplied))" = "p2" ] &&
+    [ "$(echo $(cat a))" = "4" ]
+'
+
+test_done

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[StGit PATCH 0/6] Two bugfixes, Karl , (Wed Mar 19, 5:31 pm)
[StGit PATCH 5/6] New test: conflicting push in dirty worktree, Karl , (Wed Mar 19, 5:31 pm)
Re: [StGit PATCH 0/6] Two bugfixes, Catalin Marinas, (Thu Mar 20, 8:19 am)
Re: [StGit PATCH 0/6] Two bugfixes, Karl , (Mon Mar 24, 1:35 am)
Re: [StGit PATCH 0/6] Two bugfixes, Catalin Marinas, (Mon Mar 24, 2:16 am)
Re: [StGit PATCH 0/6] Two bugfixes, Karl , (Mon Mar 24, 11:12 am)
Re: [StGit PATCH 0/6] Two bugfixes, Catalin Marinas, (Tue Mar 25, 3:46 am)
Re: [StGit PATCH 0/6] Two bugfixes, Karl , (Tue Mar 25, 4:05 am)
Re: [StGit PATCH 0/6] Two bugfixes, Catalin Marinas, (Tue Mar 25, 8:27 am)