summaryrefslogtreecommitdiff
path: root/Test
diff options
context:
space:
mode:
authorPhilippe Altherr <philippe.altherr@gmail.com>2022-12-03 21:14:26 -0800
committerBart Schaefer <schaefer@zsh.org>2022-12-03 21:14:26 -0800
commitf253ea6b9d14901e24fa6a376936effad9e6547b (patch)
tree0cf64cee234c4690499cbd934091fedf41143f10 /Test
parent259f1e944b96715fda25f7ba227da05bdb7e600f (diff)
downloadzsh-f253ea6b9d14901e24fa6a376936effad9e6547b.tar.gz
zsh-f253ea6b9d14901e24fa6a376936effad9e6547b.zip
51076: fix ERR_EXIT when used with "eval" or "source"; documentary comments
Diffstat (limited to 'Test')
-rw-r--r--Test/C03traps.ztst41
1 files changed, 41 insertions, 0 deletions
diff --git a/Test/C03traps.ztst b/Test/C03traps.ztst
index b7132da81..e0b6afb5f 100644
--- a/Test/C03traps.ztst
+++ b/Test/C03traps.ztst
@@ -954,6 +954,47 @@ F:Must be tested with a top-level script rather than source or function
1:ERR_EXIT triggered by status 1 at end of anon func
>Still functioning
+ (setopt err_exit
+ loop=true; while print loop $? >&2; $loop; do loop=false; false && true; done
+ print done $? >&2
+ )
+0: ERR_EXIT neither triggered inside loop nor triggered by while statement
+?loop 0
+?loop 1
+?done 1
+
+ (setopt err_exit
+ { loop=true; while print loop $? >&2; $loop; do loop=false; false && true; done } || false
+ print done $? >&2
+ )
+1: ERR_EXIT not triggered inside loop but triggered by rhs of ||
+?loop 0
+?loop 1
+
+ (setopt err_exit
+ eval 'loop=true; while print loop $? >&2; $loop; do loop=false; false && true; done'
+ print done $? >&2
+ )
+1: ERR_EXIT not triggered inside loop but triggered by eval
+?loop 0
+?loop 1
+
+ (setopt err_exit
+ source <(echo 'loop=true; while print loop $? >&2; $loop; do loop=false; false && true; done')
+ print done $? >&2
+ )
+1: ERR_EXIT not triggered inside loop but triggered by source
+?loop 0
+?loop 1
+
+ (setopt err_exit
+ v=$(loop=true; while print loop $? >&2; $loop; do loop=false; false && true; done)
+ print done $? >&2
+ )
+1: ERR_EXIT not triggered inside loop but triggered by command substitution
+?loop 0
+?loop 1
+
if zmodload zsh/system 2>/dev/null; then
(
trap 'echo TERM; exit 2' TERM