summary refs log tree commit diff
path: root/Test
diff options
context:
space:
mode:
authorPeter Stephenson <pws@zsh.org>2017-08-31 16:54:19 +0100
committerPeter Stephenson <pws@zsh.org>2017-08-31 16:54:19 +0100
commitebcea98eca33b8894d29545f1a46331d03f3913a (patch)
tree6b834b6b2ddc7ed63f947154c52d99bf648943a4 /Test
parent73514c40f68fd7f66b64317d6e26793d400414ac (diff)
downloadzsh-ebcea98eca33b8894d29545f1a46331d03f3913a.tar.gz
zsh-ebcea98eca33b8894d29545f1a46331d03f3913a.tar.xz
zsh-ebcea98eca33b8894d29545f1a46331d03f3913a.zip
Fix problem with ERR_RETURN.
It wasn't suppressed properly in the code following an if
in some circumstances, in particular in initialsation scripts
and also in a nested function where the caller had suppressed
it.
Diffstat (limited to 'Test')
-rw-r--r--Test/C03traps.ztst34
1 files changed, 34 insertions, 0 deletions
diff --git a/Test/C03traps.ztst b/Test/C03traps.ztst
index f8a12319a..f22962550 100644
--- a/Test/C03traps.ztst
+++ b/Test/C03traps.ztst
@@ -661,6 +661,40 @@ F:Must be tested with a top-level script rather than source or function
 >before-out
 >before-in
 
+  mkdir -p zdotdir
+  print >zdotdir/.zshenv '
+  setopt norcs errreturn
+  fn() {
+    if false; then
+      print Bad
+    else
+      print Good
+    fi
+    print Better
+  }
+  fn
+  print In .zshenv'
+  ZDOTDIR=$PWD/zdotdir $ZTST_testdir/../Src/zsh -c 'true'
+0:ERR_RETURN within initialisation code with special flags
+>Good
+>Better
+>In .zshenv
+
+  fn2() {
+    if false; then
+      print Bad
+    else
+      print Good
+    fi
+  }
+  fn() {
+    setopt err_return
+    fn2 || true
+  }
+  fn
+0:ERR_RETURN in "else" branch in nested function
+>Good
+
   (setopt err_exit
   for x in y; do
     false && true