also tested in conjunction with "--keep"

Functionnality suggested in ML

Signed-off-by: Vincent Legoll <[email protected]>
---
 t/t1209-pop-spill.sh | 251 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 251 insertions(+)
 create mode 100755 t/t1209-pop-spill.sh

diff --git a/t/t1209-pop-spill.sh b/t/t1209-pop-spill.sh
new file mode 100755
index 0000000..b32ff26
--- /dev/null
+++ b/t/t1209-pop-spill.sh
@@ -0,0 +1,251 @@
+#!/bin/sh
+
+test_description='Test "stg pop --spill"'
+
+. ./test-lib.sh
+
+stg init
+
+reset_test () {
+    stg reset --hard
+    stg push -a
+}
+
+test_expect_success 'Create a few patches' '
+    for i in 0 1 2; do
+        stg new p$i -m p$i &&
+        echo "patch$i" >> p.txt &&
+        stg add p.txt &&
+        stg refresh
+    done &&
+    [ "$(echo $(stg series --applied --noprefix))" = "p0 p1 p2" ] &&
+    [ "$(echo $(stg series --unapplied --noprefix))" = "" ]
+'
+
+test_expect_success 'Pop a patch, keeping its modifications in the tree' '
+    stg pop --spill &&
+    [ "$(echo $(stg series --applied --noprefix))" = "p0 p1" ] &&
+    [ "$(echo $(stg series --unapplied --noprefix))" = "p2" ] &&
+    [ "$(echo $(cat p.txt))" = "patch0 patch1 patch2" ]
+'
+
+test_expect_success 'Pop another patch, keeping this patch modifications in 
the tree' '
+    stg pop --spill &&
+    [ "$(echo $(stg series --applied --noprefix))" = "p0" ] &&
+    [ "$(echo $(stg series --unapplied --noprefix))" = "p1 p2" ] &&
+    [ "$(echo $(cat p.txt))" = "patch0 patch1 patch2" ]
+'
+
+test_expect_success 'Pop last patch, keeping its modifications in the tree' '
+    stg pop --spill &&
+    [ "$(echo $(stg series --applied --noprefix))" = "" ] &&
+    [ "$(echo $(stg series --unapplied --noprefix))" = "p0 p1 p2" ] &&
+    [ "$(echo $(cat p.txt))" = "patch0 patch1 patch2" ]
+'
+
+test_expect_code 2 'Try to pop from an empty stack' '
+    stg pop --spill
+'
+
+reset_test
+
+test_expect_success 'Pop all patches, keeping modifications in the tree' '
+    stg pop --spill --all &&
+    [ "$(echo $(stg series --applied --noprefix))" = "" ] &&
+    [ "$(echo $(stg series --unapplied --noprefix))" = "p0 p1 p2" ] &&
+    [ "$(echo $(cat p.txt))" = "patch0 patch1 patch2" ]
+'
+
+reset_test
+
+test_expect_success 'Pop zero patch, keeping modifications in the tree' '
+    stg pop --spill -n 0 &&
+    [ "$(echo $(stg series --applied --noprefix))" = "p0 p1 p2" ] &&
+    [ "$(echo $(stg series --unapplied --noprefix))" = "" ] &&
+    [ "$(echo $(cat p.txt))" = "patch0 patch1 patch2" ]
+'
+
+# No need, nothing popped
+#reset_test
+
+test_expect_success 'Pop one single patch, keeping modifications in the tree' '
+    stg pop --spill -n 1 &&
+    [ "$(echo $(stg series --applied --noprefix))" = "p0 p1" ] &&
+    [ "$(echo $(stg series --unapplied --noprefix))" = "p2" ] &&
+    [ "$(echo $(cat p.txt))" = "patch0 patch1 patch2" ]
+'
+
+reset_test
+
+test_expect_success 'Pop all but one patch, keeping modifications in the tree' 
'
+    stg pop --spill -n -1 &&
+    [ "$(echo $(stg series --applied --noprefix))" = "p0" ] &&
+    [ "$(echo $(stg series --unapplied --noprefix))" = "p1 p2" ] &&
+    [ "$(echo $(cat p.txt))" = "patch0 patch1 patch2" ]
+'
+
+reset_test
+
+test_expect_success 'Pop more than stack length, keeping modifications in the 
tree' '
+    stg pop --spill -n 3 &&
+    [ "$(echo $(stg series --applied --noprefix))" = "" ] &&
+    [ "$(echo $(stg series --unapplied --noprefix))" = "p0 p1 p2" ] &&
+    [ "$(echo $(cat p.txt))" = "patch0 patch1 patch2" ]
+'
+
+reset_test
+
+test_expect_success 'Pop more than stack length, keeping modifications in the 
tree' '
+    stg pop --spill -n 4 &&
+    [ "$(echo $(stg series --applied --noprefix))" = "" ] &&
+    [ "$(echo $(stg series --unapplied --noprefix))" = "p0 p1 p2" ] &&
+    [ "$(echo $(cat p.txt))" = "patch0 patch1 patch2" ]
+'
+
+reset_test
+
+test_expect_code 2 'Pop all but more than stack length, keeping modifications 
in the tree' '
+    stg pop --spill -n -4 &&
+    [ "$(echo $(stg series --applied --noprefix))" = "p0 p1 p2" ] &&
+    [ "$(echo $(stg series --unapplied --noprefix))" = "" ] &&
+    [ "$(echo $(cat p.txt))" = "patch0 patch1 patch2" ]
+'
+
+# No need, nothing popped
+#reset_test
+
+test_expect_success 'Create a few patches that touch separate files' '
+    stg delete .. &&
+    for i in 0 1 2; do
+        stg new p$i -m p$i &&
+        echo "patch$i" >> p$i.txt &&
+        stg add p$i.txt &&
+        stg refresh
+    done &&
+    [ "$(echo $(stg series --applied --noprefix))" = "p0 p1 p2" ] &&
+    [ "$(echo $(stg series --unapplied --noprefix))" = "" ] &&
+    [ "$(echo $(cat p?.txt))" = "patch0 patch1 patch2" ]
+'
+
+test_expect_success 'Pop patches that touch separate files' '
+    stg pop --spill &&
+    [ "$(echo $(stg series --applied --noprefix))" = "p0 p1" ] &&
+    [ "$(echo $(stg series --unapplied --noprefix))" = "p2" ] &&
+    [ "$(echo $(cat p?.txt))" = "patch0 patch1 patch2" ] &&
+    stg pop --spill &&
+    [ "$(echo $(stg series --applied --noprefix))" = "p0" ] &&
+    [ "$(echo $(stg series --unapplied --noprefix))" = "p1 p2" ] &&
+    [ "$(echo $(cat p?.txt))" = "patch0 patch1 patch2" ] &&
+    stg pop --spill &&
+    [ "$(echo $(stg series --applied --noprefix))" = "" ] &&
+    [ "$(echo $(stg series --unapplied --noprefix))" = "p0 p1 p2" ] &&
+    [ "$(echo $(cat p?.txt))" = "patch0 patch1 patch2" ]
+'
+
+test_expect_success 'Create a few patches that touch the same lines in a file' 
'
+    stg delete .. &&
+    for i in 0 1 2; do
+        stg new p$i -m p$i &&
+        echo "patch$i" > p.txt &&
+        stg add p.txt &&
+        stg refresh
+    done &&
+    [ "$(echo $(stg series --applied --noprefix))" = "p0 p1 p2" ] &&
+    [ "$(echo $(stg series --unapplied --noprefix))" = "" ] &&
+    [ "$(echo $(cat p.txt))" = "patch2" ]
+'
+
+test_expect_success 'Pop patches that all touch the same lines in a file' '
+    stg pop --spill &&
+    [ "$(echo $(stg series --applied --noprefix))" = "p0 p1" ] &&
+    [ "$(echo $(stg series --unapplied --noprefix))" = "p2" ] &&
+    [ "$(echo $(cat p.txt))" = "patch2" ] &&
+    stg pop --spill &&
+    [ "$(echo $(stg series --applied --noprefix))" = "p0" ] &&
+    [ "$(echo $(stg series --unapplied --noprefix))" = "p1 p2" ] &&
+    [ "$(echo $(cat p.txt))" = "patch2" ] &&
+    stg pop --spill &&
+    [ "$(echo $(stg series --applied --noprefix))" = "" ] &&
+    [ "$(echo $(stg series --unapplied --noprefix))" = "p0 p1 p2" ] &&
+    [ "$(echo $(cat p.txt))" = "patch2" ]
+'
+
+test_expect_success 'Pop an empty patch' '
+    stg delete .. &&
+    echo "spillemptypatch" > p.txt &&
+    git add p.txt &&
+    git commit -m spillempty p.txt &&
+       stg new spillempty -m spillempty &&
+    stg refresh &&
+    [ "$(echo $(stg series --applied --noprefix))" = "spillempty" ] &&
+    [ "$(echo $(stg series --unapplied --noprefix))" = "" ] &&
+    [ "$(echo $(cat p.txt))" = "spillemptypatch" ] &&
+    stg pop --spill &&
+    [ "$(echo $(stg series --applied --noprefix))" = "" ] &&
+    [ "$(echo $(stg series --unapplied --noprefix))" = "spillempty" ] &&
+    [ "$(echo $(cat p.txt))" = "spillemptypatch" ]
+'
+
+# Spill with uncommitted modifs
+# Tests adapted from t1204-pop-keep.sh
+
+test_expect_success 'Create a few patches & make some non-conflicting local 
changes' '
+    git reset --hard &&
+    stg delete .. &&
+    [ "$(echo $(stg series --applied --noprefix))" = "" ] &&
+    [ "$(echo $(stg series --unapplied --noprefix))" = "" ]
+    for i in 0 1 2; do
+        stg new p$i -m p$i &&
+        echo "patch$i" >> patch$i.txt &&
+        stg add patch$i.txt &&
+        stg refresh
+    done &&
+    [ "$(echo $(stg series --applied --noprefix))" = "p0 p1 p2" ] &&
+    [ "$(echo $(stg series --unapplied --noprefix))" = "" ]
+    echo "local" >> patch0.txt
+'
+
+test_expect_success 'Pop two patches, keeping local changes' '
+    stg pop -n 2 --keep --spill &&
+    [ "$(echo $(stg series --applied --noprefix))" = "p0" ] &&
+    [ "$(echo $(stg series --unapplied --noprefix))" = "p1 p2" ] &&
+    [ "$(echo $(ls patch?.txt))" = "patch0.txt patch1.txt patch2.txt" ] &&
+    [ "$(echo $(cat patch0.txt))" = "patch0 local" ] &&
+    [ "$(echo $(cat patch?.txt))" = "patch0 local patch1 patch2" ]
+'
+
+test_expect_success 'Pop remaining patch, keeping local changes' '
+    stg pop --keep --spill &&
+    [ "$(echo $(stg series --applied --noprefix))" = "" ] &&
+    [ "$(echo $(stg series --unapplied --noprefix))" = "p0 p1 p2" ] &&
+    [ "$(echo $(ls patch?.txt))" = "patch0.txt patch1.txt patch2.txt" ] &&
+    [ "$(echo $(cat patch0.txt))" = "patch0 local" ] &&
+    [ "$(echo $(cat patch?.txt))" = "patch0 local patch1 patch2" ]
+'
+
+test_expect_success 'Reset repository' '
+    git reset --hard &&
+    [ "$(echo $(stg series --applied --noprefix))" = "" ] &&
+    [ "$(echo $(stg series --unapplied --noprefix))" = "p0 p1 p2" ] &&
+    [ "$(echo $(ls patch?.txt 2> /dev/null))" = "" ]
+'
+
+test_expect_success 'Push patches again' '
+    stg push -a &&
+    [ "$(echo $(stg series --applied --noprefix))" = "p0 p1 p2" ] &&
+    [ "$(echo $(stg series --unapplied --noprefix))" = "" ] &&
+    [ "$(echo $(ls patch?.txt))" = "patch0.txt patch1.txt patch2.txt" ] &&
+    [ "$(echo $(cat patch0.txt))" = "patch0" ] &&
+    [ "$(echo $(cat patch?.txt))" = "patch0 patch1 patch2" ]
+'
+
+test_expect_success 'Pop a patch without local changes' '
+    stg pop --keep --spill &&
+    [ "$(echo $(stg series --applied --noprefix))" = "p0 p1" ] &&
+    [ "$(echo $(stg series --unapplied --noprefix))" = "p2" ] &&
+    [ "$(echo $(ls patch?.txt))" = "patch0.txt patch1.txt patch2.txt" ] &&
+    [ "$(echo $(cat patch0.txt))" = "patch0" ] &&
+    [ "$(echo $(cat patch?.txt))" = "patch0 patch1 patch2" ]
+'
+
+test_done
-- 
2.1.4


_______________________________________________
stgit-users mailing list
[email protected]
https://mail.gna.org/listinfo/stgit-users

Reply via email to