[PATCH 1/2] Regression test for "stg delete"
From: Karl Hasselström <kha@treskal.com>
NOTE: The subtest that attempts to delete a patch in another branch
currently fails, because there's a bug in "delete".
Signed-off-by: Karl Hasselström <kha@treskal.com>
---
t/t1600-delete.sh | 109 +++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 109 insertions(+), 0 deletions(-)
diff --git a/t/t1600-delete.sh b/t/t1600-delete.sh
new file mode 100644
index 0000000..e22e624
--- /dev/null
+++ b/t/t1600-delete.sh
@@ -0,0 +1,109 @@
+#!/bin/sh
+# Copyright (c) 2006 Karl Hasselström
+test_description='Test the delete command.'
+. ./test-lib.sh
+
+test_expect_success \
+ 'Initialize the StGIT repository' \
+ 'stg init'
+
+test_expect_success \
+ 'Create a patch' \
+ '
+ stg new foo -m foo &&
+ echo foo > foo.txt &&
+ stg add foo.txt &&
+ stg refresh
+ '
+
+test_expect_success \
+ 'Try to delete a non-existing patch' \
+ '
+ [ $(stg applied | wc -l) -eq 1 ] &&
+ ! stg delete bar &&
+ [ $(stg applied | wc -l) -eq 1 ]
+ '
+
+test_expect_success \
+ 'Try to delete the topmost patch while dirty' \
+ '
+ echo dirty >> foo.txt &&
+ [ $(stg applied | wc -l) -eq 1 ] &&
+ ! stg delete foo &&
+ [ $(stg applied | wc -l) -eq 1 ] &&
+ git reset --hard
+ '
+
+test_expect_success \
+ 'Delete the topmost patch' \
+ '
+ [ $(stg applied | wc -l) -eq 1 ] &&
+ stg delete foo &&
+ [ $(stg applied | wc -l) -eq 0 ]
+ '
+
+test_expect_success \
+ 'Create an unapplied patch' \
+ '
+ stg new foo -m foo &&
+ echo foo > foo.txt &&
+ stg add foo.txt &&
+ stg refresh &&
+ stg pop
+ '
+
+test_expect_success \
+ 'Delete an unapplied patch' \
+ '
+ [ $(stg unapplied | wc -l) -eq 1 ] &&
+ stg delete foo &&
+ [ $(stg unapplied | wc -l) -eq 0 ]
+ '
+
+test_expect_success \
+ 'Create two patches' \
+ '
+ stg new foo -m foo &&
+ echo foo > foo.txt &&
+ stg add foo.txt &&
+ stg refresh &&
+ stg new bar -m bar &&
+ echo bar > bar.txt &&
+ stg add bar.txt &&
+ stg refresh
+ '
+
+test_expect_success \
+ 'Try to delete a non-topmost applied patch' \
+ '
+ [ $(stg applied | wc -l) -eq 2 ] &&
+ ! stg delete foo &&
+ [ $(stg applied | wc -l) -eq 2 ]
+ '
+
+test_expect_success \
+ 'Create another branch, and put one patch in each branch' \
+ '
+ stg branch --create br &&
+ stg new baz -m baz &&
+ echo baz > baz.txt &&
+ stg add baz.txt &&
+ stg refresh &&
+ stg branch master &&
+ stg new baz -m baz &&
+ echo baz > baz.txt &&
+ stg add baz.txt &&
+ stg refresh
+ '
+
+test_expect_success \
+ 'Delete a patch in another branch' \
+ '
+ [ $(stg applied | wc -l) -eq 3 ] &&
+ [ $(stg applied -b br | wc -l) -eq 1 ] &&
+ stg delete -b br baz &&
+ [ $(stg applied | wc -l) -eq 3 ] &&
+ [ $(stg applied -b br | wc -l) -eq 0 ]
+ '
+
+test_done