* PATCH: Slightly improve test harness @ 2005-08-08 18:23 Thorsten Dahlheimer 2005-08-09 7:39 ` Wayne Davison 2005-08-11 15:45 ` Bart Schaefer 0 siblings, 2 replies; 5+ messages in thread From: Thorsten Dahlheimer @ 2005-08-08 18:23 UTC (permalink / raw) To: zsh-workers [-- Attachment #1: Type: text/plain, Size: 694 bytes --] This patch makes the following changes to the test harness: - abort the test if %prep code returns a non-zero status, as is documented in B01cd.ztst - don't abort the test run if a testcase fails (unless there's a syntax error in the test file) - make sure cleanup is always performed when exiting - ZTST_getsect() used to always tolerate one junk line immediately before the beginning of a section; correct that - don't print ZTST_message and ZTST_failmsg for syntax errors in the test file; instead always print the line number in that case - make sure ZTST_message and ZTST_failmsg are always cleared upon exit from ZTST_test() - improve progress bar Regards, Thorsten Dahlheimer [-- Attachment #2: ztst.patch --] [-- Type: application/octet-stream, Size: 9258 bytes --] Index: Test/ztst.zsh =================================================================== RCS file: /cvsroot/zsh/zsh/Test/ztst.zsh,v retrieving revision 1.21 diff -u -p -r1.21 ztst.zsh --- Test/ztst.zsh 13 Jan 2005 10:34:21 -0000 1.21 +++ Test/ztst.zsh 8 Aug 2005 16:43:55 -0000 @@ -117,19 +117,34 @@ ZTST_cleanup() { # This cleanup always gets performed, even if we abort. Later, # we should try and arrange that any test-specific cleanup # always gets called as well. -trap - 'print cleaning up... -ZTST_cleanup' INT QUIT TERM +trap 'print cleaning up... +ZTST_cleanup +exit 2' INT QUIT TERM # Make sure it's clean now. rm -rf dummy.tmp *.tmp +# Exit from this test run. Print test result, clean up, +# and set exit status according to $ZTST_testfailed. +ZTST_exit() { + if [[ -n "$ZTST_unimplemented" ]]; then + print -r "$ZTST_testname: skipped ($ZTST_unimplemented)" + elif (( $ZTST_testfailed )); then + print -r "$ZTST_testname: test failed." + else + print -r "$ZTST_testname: all tests successful." + fi + ZTST_cleanup + exit $(( ZTST_testfailed )) +} + # Report failure. Note that all output regarding the tests goes to stdout. # That saves an unpleasant mixture of stdout and stderr to sort out. ZTST_testfailed() { + ZTST_clearline print -r "Test $ZTST_testname failed: $1" if [[ -n $ZTST_message ]]; then print -r "Was testing: $ZTST_message" fi - print -r "$ZTST_testname: test failed." if [[ -n $ZTST_failmsg ]]; then print -r "The following may (or may not) help identifying the cause: $ZTST_failmsg" @@ -138,20 +153,42 @@ $ZTST_failmsg" return 1 } +# Report a syntax error in the test file. +ZTST_syntaxerror() { + # Don't print the test-specific messages in this case + local ZTST_message='' ZTST_failmsg='' + if [[ $1 == *: ]]; then + ZTST_testfailed "$1 +line $ZTST_curlineno: $ZTST_curline" + else + ZTST_testfailed "$1 (near line $ZTST_curlineno)" + fi +} + # Print messages if $ZTST_verbose is non-empty ZTST_verbose() { local lev=$1 shift [[ -n $ZTST_verbose && $ZTST_verbose -ge $lev ]] && print -r -- $* >&8 } + +# Print progress indicator if not verbose... ZTST_hashmark() { - [[ ZTST_verbose -le 0 && -t 8 ]] && print -nu8 ${(pl:SECONDS::\#::\#\r:)} - (( SECONDS > COLUMNS+1 && (SECONDS -= COLUMNS) )) + (( SECONDS > COLUMNS && (SECONDS -= COLUMNS) )) + if [[ ZTST_verbose -le 0 && -t 8 ]]; then + print -nu8 ${(l:COLUMNS::#:)${(l:COLUMNS-SECONDS:)}}'\r' + fi +} +# ...and clear it again. +ZTST_clearline() { + if [[ ZTST_verbose -le 0 && -t 8 ]]; then + print -nu8 ${(l:COLUMNS:)}'\r' + fi } if [[ ! -r $ZTST_testname ]]; then ZTST_testfailed "can't read test file." - exit 1 + ZTST_exit fi exec 8>&1 @@ -159,6 +196,8 @@ exec 9<$ZTST_testname # The current line read from the test file. ZTST_curline='' +# The current line number +integer ZTST_curlineno=0 # The current section being run ZTST_cursect='' @@ -167,6 +206,7 @@ ZTST_cursect='' ZTST_getline() { local IFS= while true; do + (( ZTST_curlineno++ )) read -r ZTST_curline <&9 || return 1 [[ $ZTST_curline == \#* ]] || return 0 done @@ -180,13 +220,11 @@ ZTST_getsect() { local match mbegin mend while [[ $ZTST_curline != '%'(#b)([[:alnum:]]##)* ]]; do - ZTST_getline || return 1 - [[ $ZTST_curline = [[:blank:]]# ]] && continue - if [[ $# -eq 0 && $ZTST_curline != '%'[[:alnum:]]##* ]]; then - ZTST_testfailed "bad line found before or after section: -$ZTST_curline" - exit 1 + if [[ $# -eq 0 && $ZTST_curline != [[:blank:]]# ]]; then + ZTST_syntaxerror "bad line found before or after section:" + ZTST_exit fi + ZTST_getline || return 1 done # have the next line ready waiting ZTST_getline @@ -234,7 +272,7 @@ case $char in ;; ('?') fn=$ZTST_err ;; - (*) ZTST_testfailed "bad redir operator: $char" + (*) ZTST_syntaxerror "bad redir operator: $char" return 1 ;; esac @@ -268,7 +306,7 @@ ZTST_prepclean() { ZTST_execchunk >/dev/null || [[ -n $1 ]] || { [[ -n "$ZTST_unimplemented" ]] || ZTST_testfailed "non-zero status from preparation code: -$ZTST_code" && return 0 +$ZTST_code" && return 1 } done } @@ -280,7 +318,8 @@ ZTST_diff() { diff_out=$(diff "$@") diff_ret="$?" if [[ "$diff_ret" != "0" ]]; then - echo "$diff_out" + ZTST_clearline + print -r -- "$diff_out" fi return "$diff_ret" @@ -288,6 +327,10 @@ ZTST_diff() { ZTST_test() { local last match mbegin mend found + local -i failed=0 + # Make sure messages are reset upon exit from this function + # to keep ZTST_testfailed output correct + local ZTST_message ZTST_failmsg while true; do rm -f $ZTST_in $ZTST_out $ZTST_err @@ -323,8 +366,7 @@ $ZTST_curline" ZTST_flags=$match[2] ZTST_message=${match[3]:+${match[3][2,-1]}} else - ZTST_testfailed "expecting test status at: -$ZTST_curline" + ZTST_syntaxerror "expecting test status at:" return 1 fi ZTST_getline @@ -344,8 +386,7 @@ $ZTST_curline" ZTST_getline found=1 ;; - (*) ZTST_testfailed "bad line in test block: -$ZTST_curline" + (*) ZTST_syntaxerror "bad line in test block:" return 1 ;; esac @@ -366,7 +407,7 @@ $ZTST_curline" $ZTST_code${$(<$ZTST_terr):+ Error output: $(<$ZTST_terr)}" - return 1 + (( failed++ )) fi ZTST_verbose 2 "ZTST_test: test produced standard output: @@ -380,22 +421,25 @@ $(<$ZTST_terr)" $ZTST_code${$(<$ZTST_terr):+ Error output: $(<$ZTST_terr)}" - return 1 + (( failed++ )) fi if [[ $ZTST_flags != *D* ]] && ! ZTST_diff -c $ZTST_err $ZTST_terr; then ZTST_testfailed "error output differs from expected as shown above for: $ZTST_code" - return 1 + (( failed++ )) fi fi ZTST_verbose 1 "Test successful." [[ -n $last ]] && break done - ZTST_verbose 2 "ZTST_test: all tests successful" - - # reset message to keep ZTST_testfailed output correct - ZTST_message='' + ZTST_clearline + if [[ $failed -gt 0 ]]; then + ZTST_verbose 2 "ZTST_test: $failed tests failed" + else + ZTST_verbose 2 "ZTST_test: all tests successful" + fi + return $failed } @@ -403,7 +447,7 @@ $ZTST_code" typeset -A ZTST_sects ZTST_sects=(prep 0 test 0 clean 0) -print "$ZTST_testname: starting." +print -r "$ZTST_testname: starting." # Now go through all the different sections until the end. # prep section may set ZTST_unimplemented, in this case the actual @@ -414,16 +458,16 @@ while [[ -z "$ZTST_unimplemented" ]] && case $ZTST_cursect in (prep) if (( ${ZTST_sects[prep]} + ${ZTST_sects[test]} + \ ${ZTST_sects[clean]} )); then - ZTST_testfailed "\`prep' section must come first" - exit 1 + ZTST_syntaxerror "\`prep' section must come first" + ZTST_exit fi - ZTST_prepclean + ZTST_prepclean || ZTST_exit ZTST_sects[prep]=1 ;; (test) if (( ${ZTST_sects[test]} + ${ZTST_sects[clean]} )); then - ZTST_testfailed "bad placement of \`test' section" - exit 1 + ZTST_syntaxerror "bad placement of \`test' section" + ZTST_exit fi # careful here: we can't execute ZTST_test before || or && # because that affects the behaviour of traps in the tests. @@ -433,22 +477,16 @@ while [[ -z "$ZTST_unimplemented" ]] && ;; (clean) if (( ${ZTST_sects[test]} == 0 || ${ZTST_sects[clean]} )); then - ZTST_testfailed "bad use of \`clean' section" + ZTST_syntaxerror "bad use of \`clean' section" else ZTST_prepclean 1 ZTST_sects[clean]=1 fi ZTST_skipok= ;; - *) ZTST_testfailed "bad section name: $ZTST_cursect" + (*) ZTST_syntaxerror "bad section name: $ZTST_cursect" ;; esac done -if [[ -n "$ZTST_unimplemented" ]]; then - print "$ZTST_testname: skipped ($ZTST_unimplemented)" -elif (( ! $ZTST_testfailed )); then - print "$ZTST_testname: all tests successful." -fi -ZTST_cleanup -exit $(( ZTST_testfailed )) +ZTST_exit Index: Test/C03traps.ztst =================================================================== RCS file: /cvsroot/zsh/zsh/Test/C03traps.ztst,v retrieving revision 1.7 diff -u -p -r1.7 C03traps.ztst --- Test/C03traps.ztst 1 May 2005 01:23:54 -0000 1.7 +++ Test/C03traps.ztst 8 Aug 2005 14:47:17 -0000 @@ -65,6 +65,7 @@ >Exited. fn1() { + trap - trap trap 'print INT1' INT fn2() { trap 'print INT2' INT; trap; } @@ -79,6 +80,7 @@ >trap -- 'print INT1' INT fn1() { + trap - trap TRAPINT() { print INT1; } fn2() { TRAPINT() { print INT2; }; trap; } @@ -87,7 +89,7 @@ trap } fn1 -0: Nested `trap ... INT', not triggered +0: Nested TRAPINT, not triggered >TRAPINT () { > print INT1 >} @@ -99,6 +101,7 @@ >} fn1() { + trap - trap 'print INT1' INT fn2() { trap - INT; trap; } trap ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: PATCH: Slightly improve test harness 2005-08-08 18:23 PATCH: Slightly improve test harness Thorsten Dahlheimer @ 2005-08-09 7:39 ` Wayne Davison 2005-08-15 16:02 ` Thorsten Dahlheimer 2005-08-11 15:45 ` Bart Schaefer 1 sibling, 1 reply; 5+ messages in thread From: Wayne Davison @ 2005-08-09 7:39 UTC (permalink / raw) To: Thorsten Dahlheimer; +Cc: zsh-workers On Mon, Aug 08, 2005 at 08:23:54PM +0200, Thorsten Dahlheimer wrote: > - don't abort the test run if a testcase fails (unless there's a syntax > error in the test file) That change results in an erroneous "Test successful" message when a test fails and verbosity is at least 1. Did you check if any of the test cases expected the success of an earlier test in a later test? If so, it might be best to just leave the abort-after-the-first-failure behavior unchanged. > - make sure cleanup is always performed when exiting That fixed trap code seems to make it impossible to Ctrl-C out of the tests, though I'm not sure why yet. Perhaps it's a bug in trap handling, but zsh hangs when that cleanup trap in place and Ctrl-C is pressed. In the meantime, I've checked in a change that just disables the trap line (since zsh now complains about its incorrect syntax). ..wayne.. ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: PATCH: Slightly improve test harness 2005-08-09 7:39 ` Wayne Davison @ 2005-08-15 16:02 ` Thorsten Dahlheimer 0 siblings, 0 replies; 5+ messages in thread From: Thorsten Dahlheimer @ 2005-08-15 16:02 UTC (permalink / raw) To: Wayne Davison; +Cc: zsh-workers [-- Attachment #1: Type: text/plain, Size: 652 bytes --] Wayne Davison wrote: > If so, it might be best to just leave the abort-after-the-first-failure > behavior unchanged. Ok, I've attached a new patch with this change undone. It also corrects an erroneous testcase in A06assign.ztst and replaces various hardcoded paths to the newly-compiled zsh executable in the test files with $ZTST_exe. > That fixed trap code seems to make it impossible to Ctrl-C out of the > tests, though I'm not sure why yet. Perhaps it's a bug in trap > handling, but zsh hangs when that cleanup trap in place and Ctrl-C is > pressed. I could reproduce this when running on linux, so I left the trap commented out. Thorsten [-- Attachment #2: ztst_2.patch --] [-- Type: application/octet-stream, Size: 11764 bytes --] Index: Test/A01grammar.ztst =================================================================== RCS file: /cvsroot/zsh/zsh/Test/A01grammar.ztst,v retrieving revision 1.12 diff -u -r1.12 A01grammar.ztst --- Test/A01grammar.ztst 11 Apr 2005 10:23:57 -0000 1.12 +++ Test/A01grammar.ztst 15 Aug 2005 15:22:35 -0000 @@ -50,7 +50,7 @@ # # Tests for `Precommand Modifiers' # - - $ZTST_testdir/../Src/zsh -fc "[[ \$0 = \"-$ZTST_testdir/../Src/zsh\" ]]" + - $ZTST_testdir/$ZTST_exe -fc "[[ \$0 = \"-$ZTST_testdir/$ZTST_exe\" ]]" 0:`-' precommand modifier echo f* @@ -441,18 +441,18 @@ 0:Handling of &&'s and ||'s with a for loop in between >no - $ZTST_testdir/../Src/zsh -f unmatched_quote.txt + $ZTST_testdir/$ZTST_exe -f unmatched_quote.txt 1:Parse error with file causes non-zero exit status ?unmatched_quote.txt:2: unmatched ' - $ZTST_testdir/../Src/zsh -f <unmatched_quote.txt + $ZTST_testdir/$ZTST_exe -f <unmatched_quote.txt 1:Parse error on standard input causes non-zero exit status ?zsh: unmatched ' - $ZTST_testdir/../Src/zsh -f -c "'" + $ZTST_testdir/$ZTST_exe -f -c "'" 1:Parse error on inline command causes non-zero exit status ?zsh: unmatched ' - $ZTST_testdir/../Src/zsh -f NonExistentScript + $ZTST_testdir/$ZTST_exe -f NonExistentScript 127q:Non-existent script causes exit status 127 -?$ZTST_testdir/../Src/zsh: can't open input file: NonExistentScript +?$ZTST_testdir/$ZTST_exe: can't open input file: NonExistentScript Index: Test/A06assign.ztst =================================================================== RCS file: /cvsroot/zsh/zsh/Test/A06assign.ztst,v retrieving revision 1.3 diff -u -r1.3 A06assign.ztst --- Test/A06assign.ztst 2 Feb 2005 17:03:51 -0000 1.3 +++ Test/A06assign.ztst 15 Aug 2005 15:22:35 -0000 @@ -61,8 +61,8 @@ 0:add to float >5.7 - typeset -A hash - hash=(one 1) + typeset -A h + h=(one 1) h+=string [[ $h[@] == string ]] 0:add scalar to association Index: Test/D02glob.ztst =================================================================== RCS file: /cvsroot/zsh/zsh/Test/D02glob.ztst,v retrieving revision 1.11 diff -u -r1.11 D02glob.ztst --- Test/D02glob.ztst 21 Jun 2005 08:58:46 -0000 1.11 +++ Test/D02glob.ztst 15 Aug 2005 15:22:36 -0000 @@ -6,7 +6,7 @@ mkdir glob.tmp/dir3/subdir : >glob.tmp/{,{dir1,dir2}/}{a,b,c} - globtest () { $ZTST_testdir/../Src/zsh -f $ZTST_srcdir/../Misc/$1 } + globtest () { $ZTST_testdir/$ZTST_exe -f $ZTST_srcdir/../Misc/$1 } regress_absolute_path_and_core_dump() { local absolute_dir=$(cd glob.tmp && pwd -P) Index: Test/Y01completion.ztst =================================================================== RCS file: /cvsroot/zsh/zsh/Test/Y01completion.ztst,v retrieving revision 1.4 diff -u -r1.4 Y01completion.ztst --- Test/Y01completion.ztst 11 Mar 2004 19:14:42 -0000 1.4 +++ Test/Y01completion.ztst 15 Aug 2005 15:22:39 -0000 @@ -5,7 +5,7 @@ . $ZTST_srcdir/comptest mkdir comp.tmp cd comp.tmp - comptestinit -z $ZTST_testdir/../Src/zsh && + comptestinit -z $ZTST_testdir/$ZTST_exe && { mkdir dir1 && mkdir dir2 && Index: Test/Y02compmatch.ztst =================================================================== RCS file: /cvsroot/zsh/zsh/Test/Y02compmatch.ztst,v retrieving revision 1.3 diff -u -r1.3 Y02compmatch.ztst --- Test/Y02compmatch.ztst 11 Mar 2004 19:14:42 -0000 1.3 +++ Test/Y02compmatch.ztst 15 Aug 2005 15:22:40 -0000 @@ -15,7 +15,7 @@ . $ZTST_srcdir/comptest mkdir match.tmp cd match.tmp - comptestinit -z $ZTST_testdir/../Src/zsh && + comptestinit -z $ZTST_testdir/$ZTST_exe && { list1=(IndianRed IndianRed2 IndianRed3 IndianRed4) test_code () { Index: Test/Y03arguments.ztst =================================================================== RCS file: /cvsroot/zsh/zsh/Test/Y03arguments.ztst,v retrieving revision 1.6 diff -u -r1.6 Y03arguments.ztst --- Test/Y03arguments.ztst 11 Mar 2004 19:14:42 -0000 1.6 +++ Test/Y03arguments.ztst 15 Aug 2005 15:22:41 -0000 @@ -5,7 +5,7 @@ . $ZTST_srcdir/comptest mkdir comp.tmp cd comp.tmp - comptestinit -z $ZTST_testdir/../Src/zsh && + comptestinit -z $ZTST_testdir/$ZTST_exe && { comptesteval 'compdef _tst tst' tst_arguments () { comptesteval "_tst () { _arguments ${${(@qq)*}} }" } Index: Test/ztst.zsh =================================================================== RCS file: /cvsroot/zsh/zsh/Test/ztst.zsh,v retrieving revision 1.22 diff -u -r1.22 ztst.zsh --- Test/ztst.zsh 9 Aug 2005 06:51:40 -0000 1.22 +++ Test/ztst.zsh 15 Aug 2005 15:22:43 -0000 @@ -118,18 +118,33 @@ # we should try and arrange that any test-specific cleanup # always gets called as well. ##trap 'print cleaning up... -##ZTST_cleanup' INT QUIT TERM +##ZTST_cleanup +##exit 2' INT QUIT TERM # Make sure it's clean now. rm -rf dummy.tmp *.tmp +# Exit from this test run. Print test result, clean up, +# and set exit status according to $ZTST_testfailed. +ZTST_exit() { + if [[ -n "$ZTST_unimplemented" ]]; then + print -r "$ZTST_testname: skipped ($ZTST_unimplemented)" + elif (( $ZTST_testfailed )); then + print -r "$ZTST_testname: test failed." + else + print -r "$ZTST_testname: all tests successful." + fi + ZTST_cleanup + exit $(( ZTST_testfailed )) +} + # Report failure. Note that all output regarding the tests goes to stdout. # That saves an unpleasant mixture of stdout and stderr to sort out. ZTST_testfailed() { + ZTST_clearline print -r "Test $ZTST_testname failed: $1" if [[ -n $ZTST_message ]]; then print -r "Was testing: $ZTST_message" fi - print -r "$ZTST_testname: test failed." if [[ -n $ZTST_failmsg ]]; then print -r "The following may (or may not) help identifying the cause: $ZTST_failmsg" @@ -138,20 +153,40 @@ return 1 } +# Report a syntax error in the test file. +ZTST_syntaxerror() { + # Don't print the test-specific messages in this case + local ZTST_message='' ZTST_failmsg='' + if [[ $1 == *: ]]; then + ZTST_testfailed "$1 +line $ZTST_curlineno: $ZTST_curline" + else + ZTST_testfailed "$1 (near line $ZTST_curlineno)" + fi +} + # Print messages if $ZTST_verbose is non-empty ZTST_verbose() { local lev=$1 shift [[ -n $ZTST_verbose && $ZTST_verbose -ge $lev ]] && print -r -- $* >&8 } + +# Print progress indicator if not verbose... ZTST_hashmark() { [[ ZTST_verbose -le 0 && -t 8 ]] && print -nu8 ${(pl:SECONDS::\#::\#\r:)} (( SECONDS > COLUMNS+1 && (SECONDS -= COLUMNS) )) } +# ...and clear it again. +ZTST_clearline() { + if [[ ZTST_verbose -le 0 && -t 8 ]]; then + print -nu8 ${(l:COLUMNS:)}'\r' + fi +} if [[ ! -r $ZTST_testname ]]; then ZTST_testfailed "can't read test file." - exit 1 + ZTST_exit fi exec 8>&1 @@ -159,6 +194,8 @@ # The current line read from the test file. ZTST_curline='' +# The current line number +integer ZTST_curlineno=0 # The current section being run ZTST_cursect='' @@ -167,6 +204,7 @@ ZTST_getline() { local IFS= while true; do + (( ZTST_curlineno++ )) read -r ZTST_curline <&9 || return 1 [[ $ZTST_curline == \#* ]] || return 0 done @@ -174,19 +212,17 @@ # Get the name of the section. It may already have been read into # $curline, or we may have to skip some initial comments to find it. -# If argument present, it's OK to skip the reset of the current section, +# If argument present, it's OK to skip the rest of the current section, # so no error if we find garbage. ZTST_getsect() { local match mbegin mend while [[ $ZTST_curline != '%'(#b)([[:alnum:]]##)* ]]; do - ZTST_getline || return 1 - [[ $ZTST_curline = [[:blank:]]# ]] && continue - if [[ $# -eq 0 && $ZTST_curline != '%'[[:alnum:]]##* ]]; then - ZTST_testfailed "bad line found before or after section: -$ZTST_curline" - exit 1 + if [[ $# -eq 0 && $ZTST_curline != [[:blank:]]# ]]; then + ZTST_syntaxerror "bad line found before or after section:" + ZTST_exit fi + ZTST_getline || return 1 done # have the next line ready waiting ZTST_getline @@ -234,7 +270,7 @@ ;; ('?') fn=$ZTST_err ;; - (*) ZTST_testfailed "bad redir operator: $char" + (*) ZTST_syntaxerror "bad redir operator: $char" return 1 ;; esac @@ -268,7 +304,7 @@ ZTST_execchunk >/dev/null || [[ -n $1 ]] || { [[ -n "$ZTST_unimplemented" ]] || ZTST_testfailed "non-zero status from preparation code: -$ZTST_code" && return 0 +$ZTST_code" && return 1 } done } @@ -280,7 +316,8 @@ diff_out=$(diff "$@") diff_ret="$?" if [[ "$diff_ret" != "0" ]]; then - echo "$diff_out" + ZTST_clearline + print -r -- "$diff_out" fi return "$diff_ret" @@ -288,6 +325,9 @@ ZTST_test() { local last match mbegin mend found + # Make sure messages are reset upon exit from this function + # to keep ZTST_testfailed output correct + local ZTST_message ZTST_failmsg while true; do rm -f $ZTST_in $ZTST_out $ZTST_err @@ -323,8 +363,7 @@ ZTST_flags=$match[2] ZTST_message=${match[3]:+${match[3][2,-1]}} else - ZTST_testfailed "expecting test status at: -$ZTST_curline" + ZTST_syntaxerror "expecting test status at:" return 1 fi ZTST_getline @@ -344,8 +383,7 @@ ZTST_getline found=1 ;; - (*) ZTST_testfailed "bad line in test block: -$ZTST_curline" + (*) ZTST_syntaxerror "bad line in test block:" return 1 ;; esac @@ -393,9 +431,6 @@ done ZTST_verbose 2 "ZTST_test: all tests successful" - - # reset message to keep ZTST_testfailed output correct - ZTST_message='' } @@ -403,7 +438,7 @@ typeset -A ZTST_sects ZTST_sects=(prep 0 test 0 clean 0) -print "$ZTST_testname: starting." +print -r "$ZTST_testname: starting." # Now go through all the different sections until the end. # prep section may set ZTST_unimplemented, in this case the actual @@ -414,16 +449,16 @@ case $ZTST_cursect in (prep) if (( ${ZTST_sects[prep]} + ${ZTST_sects[test]} + \ ${ZTST_sects[clean]} )); then - ZTST_testfailed "\`prep' section must come first" - exit 1 + ZTST_syntaxerror "\`prep' section must come first" + ZTST_exit fi - ZTST_prepclean + ZTST_prepclean || ZTST_exit ZTST_sects[prep]=1 ;; (test) if (( ${ZTST_sects[test]} + ${ZTST_sects[clean]} )); then - ZTST_testfailed "bad placement of \`test' section" - exit 1 + ZTST_syntaxerror "bad placement of \`test' section" + ZTST_exit fi # careful here: we can't execute ZTST_test before || or && # because that affects the behaviour of traps in the tests. @@ -433,22 +468,16 @@ ;; (clean) if (( ${ZTST_sects[test]} == 0 || ${ZTST_sects[clean]} )); then - ZTST_testfailed "bad use of \`clean' section" + ZTST_syntaxerror "bad use of \`clean' section" else ZTST_prepclean 1 ZTST_sects[clean]=1 fi ZTST_skipok= ;; - *) ZTST_testfailed "bad section name: $ZTST_cursect" + (*) ZTST_syntaxerror "bad section name: $ZTST_cursect" ;; esac done -if [[ -n "$ZTST_unimplemented" ]]; then - print "$ZTST_testname: skipped ($ZTST_unimplemented)" -elif (( ! $ZTST_testfailed )); then - print "$ZTST_testname: all tests successful." -fi -ZTST_cleanup -exit $(( ZTST_testfailed )) +ZTST_exit ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: PATCH: Slightly improve test harness 2005-08-08 18:23 PATCH: Slightly improve test harness Thorsten Dahlheimer 2005-08-09 7:39 ` Wayne Davison @ 2005-08-11 15:45 ` Bart Schaefer 2005-08-15 16:02 ` Thorsten Dahlheimer 1 sibling, 1 reply; 5+ messages in thread From: Bart Schaefer @ 2005-08-11 15:45 UTC (permalink / raw) To: zsh-workers On Mon, 8 Aug 2005, Thorsten Dahlheimer wrote: > This patch makes the following changes to the test harness: > > - don't abort the test run if a testcase fails (unless there's a syntax > error in the test file) As others have noted, the tests may be cascaded, expecting previous tests to have finished successfully. Please don't make this change. > - improve progress bar What was wrong with it before, and how does this differ? ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: PATCH: Slightly improve test harness 2005-08-11 15:45 ` Bart Schaefer @ 2005-08-15 16:02 ` Thorsten Dahlheimer 0 siblings, 0 replies; 5+ messages in thread From: Thorsten Dahlheimer @ 2005-08-15 16:02 UTC (permalink / raw) To: Bart Schaefer, zsh-workers Bart Schaefer wrote: > > - improve progress bar > > What was wrong with it before, and how does this differ? Looking at it again, I see now that there is actually nothing wrong with it; I had just made a thinko. (The only difference would have been that the progress bar wouldn't have wrapped, but shrunk back to the beginning of the line.) So, never mind. Thorsten ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2005-08-15 15:53 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2005-08-08 18:23 PATCH: Slightly improve test harness Thorsten Dahlheimer 2005-08-09 7:39 ` Wayne Davison 2005-08-15 16:02 ` Thorsten Dahlheimer 2005-08-11 15:45 ` Bart Schaefer 2005-08-15 16:02 ` Thorsten Dahlheimer
Code repositories for project(s) associated with this public inbox https://git.vuxu.org/mirror/zsh/ This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).