aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--tests/test7.err0
-rw-r--r--tests/test7.in30
-rw-r--r--tests/test7.out7
-rw-r--r--tests/test7.status1
-rw-r--r--tests/top.out2
5 files changed, 40 insertions, 0 deletions
diff --git a/tests/test7.err b/tests/test7.err
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/tests/test7.err
diff --git a/tests/test7.in b/tests/test7.in
new file mode 100644
index 00000000..1ad65648
--- /dev/null
+++ b/tests/test7.in
@@ -0,0 +1,30 @@
+# Test that subsequent cases do not blow away the status from previous ones
+for val in one two three four
+ switch $val
+ case one
+ /bin/sh -c 'exit 1'
+ case two
+ /bin/sh -c 'exit 2'
+ case three
+ /bin/sh -c 'exit 3'
+ end
+ echo $status
+end
+
+echo
+
+# Test that the `switch` builtin itself does not blow away status before evaluating a case
+false
+switch one
+case one
+ echo $status
+end
+
+# Test that non-case tokens inside `switch` don't blow away status
+# (why are these even allowed?)
+false
+switch one
+true
+case one
+ echo $status
+end
diff --git a/tests/test7.out b/tests/test7.out
new file mode 100644
index 00000000..c298309d
--- /dev/null
+++ b/tests/test7.out
@@ -0,0 +1,7 @@
+1
+2
+3
+0
+
+1
+1
diff --git a/tests/test7.status b/tests/test7.status
new file mode 100644
index 00000000..573541ac
--- /dev/null
+++ b/tests/test7.status
@@ -0,0 +1 @@
+0
diff --git a/tests/top.out b/tests/top.out
index c3a60ba6..5614a661 100644
--- a/tests/top.out
+++ b/tests/top.out
@@ -4,3 +4,5 @@ File test2.in tested ok
File test3.in tested ok
File test4.in tested ok
File test5.in tested ok
+File test6.in tested ok
+File test7.in tested ok