From dd3ba3d5991f5c99334742147fb2213b8c400a42 Mon Sep 17 00:00:00 2001 From: Philippe Altherr Date: Sat, 3 Dec 2022 20:44:10 -0800 Subject: 51001: fix for ERR_EXIT following shell function; update tests --- Test/C03traps.ztst | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) (limited to 'Test/C03traps.ztst') diff --git a/Test/C03traps.ztst b/Test/C03traps.ztst index 08e24a32e..a8880673f 100644 --- a/Test/C03traps.ztst +++ b/Test/C03traps.ztst @@ -742,6 +742,15 @@ F:Must be tested with a top-level script rather than source or function 0:ERR_EXIT not triggered by "false && true" >OK + (setopt err_exit + fn() { + false && true + } + fn + print OK + ) +1:ERR_EXIT not triggered by "false && true" but by return from fn + (setopt err_exit for x in y; do false && true @@ -751,6 +760,17 @@ F:Must be tested with a top-level script rather than source or function 0:ERR_EXIT not triggered by status 1 at end of for >OK + (setopt err_exit + fn() { + for x in y; do + false && true + done + } + fn + print OK + ) +1:ERR_EXIT not triggered by status 1 at end of for but by return from fn + (setopt err_exit repeat 1; do false && true @@ -760,6 +780,17 @@ F:Must be tested with a top-level script rather than source or function 0:ERR_EXIT not triggered by status 1 at end of repeat >OK + (setopt err_exit + fn() { + repeat 1; do + false && true + done + } + fn + print OK + ) +1:ERR_EXIT not triggered by status 1 at end of repeat but by return from fn + (setopt err_exit if true; then false && true @@ -769,6 +800,17 @@ F:Must be tested with a top-level script rather than source or function 0:ERR_EXIT not triggered by status 1 at end of if >OK + (setopt err_exit + fn() { + if true; then + false && true + fi + } + fn + print OK + ) +1:ERR_EXIT not triggered by status 1 at end of if but by return from fn + (setopt err_exit loop=true while print COND; $loop; do @@ -782,6 +824,21 @@ F:Must be tested with a top-level script rather than source or function >COND >OK + (setopt err_exit + fn() { + loop=true + while print COND; $loop; do + loop=false + false && true + done + } + fn + print OK + ) +1:ERR_EXIT not triggered by status 1 at end of while but by return from fn +>COND +>COND + (setopt err_exit { false && true @@ -794,6 +851,20 @@ F:Must be tested with a top-level script rather than source or function >ALWAYS >OK + (setopt err_exit + fn() { + { + false && true + } always { + print ALWAYS + } + } + fn + print OK + ) +1:ERR_EXIT not triggered by status 1 at end of always but by return from fn +>ALWAYS + (setopt err_exit { false && true @@ -803,6 +874,17 @@ F:Must be tested with a top-level script rather than source or function 0:ERR_EXIT not triggered by status 1 at end of { } >OK + (setopt err_exit + fn() { + { + false && true + } + } + fn + print OK + ) +1:ERR_EXIT not triggered by status 1 at end of { } but by return from fn + unsetopt err_exit err_return (setopt err_exit for x in y; do -- cgit 1.4.1