Commit Diff


commit - 5b9fbd58a16f02d98dbc6f0b4be7af12aa186cae
commit + 8dc949b075675abad57847c27ef695ecf419cb62
blob - 00195068734320ee5a9de3ef41853d0015f9adb1
blob + 1cb43054bbaba6dfe115061e321fe94b01bd16d8
--- exercise
+++ exercise
@@ -11,6 +11,7 @@ package require Tcl 8.4
 set opts(-d) {*}                ;# pattern for test search directories
 set opts(-p) {*.t}              ;# pattern for test executable files
 set opts(-s) {*.tests}          ;# pattern for test suite executable files
+set opts(-q) 0                  ;# quiet mode
 
 
 # executing tests
@@ -202,6 +203,9 @@ proc summary {counters} {
 
 set last_print_progress 0   ;# timestamp of last progress output [ms]
 proc print_progress {counters} {
+    global opts
+
+    if {$opts(-q)} return
     if {![isatty stdout]} return
 
     # Only print progress every 100ms.
@@ -313,8 +317,8 @@ proc main {argc argv} {
     set counters {run 0  ok 0  fail 0  error 0}
 
     # handle command line options
-    set u {[-d pat] [-p pat] [-s pat] [path ...]}
-    while {[getopt argv {d:p:s:} opt arg]} {
+    set u {[-q] [-d pat] [-p pat] [-s pat] [path ...]}
+    while {[getopt argv {d:p:qs:} opt arg]} {
         if {$opt eq "?"} {
             puts stderr "usage: [file tail $::argv0] $u"
             exit 1
@@ -332,9 +336,9 @@ proc main {argc argv} {
         print_progress $counters
         execute_test counters $file
     }
+    if {!$opts(-q)} {puts [summary $counters]}
 
-    # TODO: sanity-check counters, exit 127 if mismatched
-    puts [summary $counters]
+    # TODO: sanity-check counters, exit 127 (?) if mismatched
     exit [notok $counters]
 }
 
blob - 463ab25fde319dbe79fc192598eb3e0ace506e8a
blob + e6b117aba3449ac86045ce62092acf3922ef5c61
--- exercise.1
+++ exercise.1
@@ -43,6 +43,8 @@ Defaults to
 Process (only) files matching the given pattern as test suites.
 Defaults to
 .Dq *.tests .
+.It Fl q
+Do not print status counters to standard output.
 .El
 .
 .Ss Test Files
blob - 7a7a920ce3e1074a6fa6cf481ac3268c7dbb9fe9
blob + d0b629b57c5c1ae9f83c7404a481d9f9bc564258
--- tests/assert-exercise
+++ tests/assert-exercise
@@ -5,6 +5,7 @@
 # $1: name of test file (used as base for aux files)
 # $2: expected stdout (printf syntax)
 # $3: expected stderr (printf syntax)
+# further arguments: passed to exercise
 # stdin: test executable to run
 
 d=`dirname $0`
@@ -26,7 +27,8 @@ cat > $tst
 chmod +x $tst
 
 # execute & compare
-$exe $tst 1>$out 2>$err
+shift 3
+$exe "$@" $tst 1>$out 2>$err
 test "$?" = "127" && exit 127
 diff -u $experr $err >&2 && \
 diff -u $expout $out >&2
blob - /dev/null
blob + a6bb7548b45bf75b13d4bf6a0fbdda8107290fd9 (mode 755)
--- /dev/null
+++ tests/test-quiet.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+d=`dirname $0`
+exec $d/assert-exercise $0 \
+        '' \
+        "error $0.tst\\n\\n" \
+	-q <<EOF
+#!/bin/sh
+    exit 127
+EOF