With the new --verbose-only=<pattern> option, one can enable --verbose
at a per-test granularity.  The pattern is matched against the test
number, e.g.

  ./t0000-basic.sh --verbose-only='2[0-2]'

to see only the full output of test 20-22, while showing the rest in the
one-liner format.

This is arguably not *too* useful on its own, but makes the next patch
easier to follow.

Signed-off-by: Thomas Rast <tr...@inf.ethz.ch>
---
 t/README      |  5 +++++
 t/test-lib.sh | 29 +++++++++++++++++++++++++----
 2 files changed, 30 insertions(+), 4 deletions(-)

diff --git a/t/README b/t/README
index e669bb3..9c8f9b1 100644
--- a/t/README
+++ b/t/README
@@ -76,6 +76,11 @@ appropriately before running "make".
        command being run and their output if any are also
        output.
 
+--verbose-only=<pattern>::
+       Like --verbose, but the effect is limited to tests with
+       numbers matching <pattern>.  The number matched against is
+       simply the running count of the test within the file.
+
 --debug::
        This may help the person who is developing a new test.
        It causes the command defined with test_debug to run.
diff --git a/t/test-lib.sh b/t/test-lib.sh
index c5a80d1..01e7445 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -184,6 +184,9 @@ do
                help=t; shift ;;
        -v|--v|--ve|--ver|--verb|--verbo|--verbos|--verbose)
                verbose=t; shift ;;
+       --verbose-only=*)
+               verbose_only=$(expr "z$1" : 'z[^=]*=\(.*\)')
+               shift ;;
        -q|--q|--qu|--qui|--quie|--quiet)
                # Ignore --quiet under a TAP::Harness. Saying how many tests
                # passed without the ok/not ok details is always an error.
@@ -342,6 +345,24 @@ match_pattern_list () {
        return 1
 }
 
+toggle_verbose () {
+       test -z "$verbose_only" && return
+       if match_pattern_list $test_count $verbose_only
+       then
+               exec 4>&2 3>&1
+       else
+               exec 4>/dev/null 3>/dev/null
+       fi
+}
+
+setup_test_eval () {
+       setup_malloc_check
+       toggle_verbose
+}
+teardown_test_eval () {
+       teardown_malloc_check
+}
+
 test_eval_ () {
        # This is a separate function because some tests use
        # "return" to end a test_expect_success block early.
@@ -351,16 +372,16 @@ test_eval_ () {
 test_run_ () {
        test_cleanup=:
        expecting_failure=$2
-       setup_malloc_check
+       setup_test_eval
        test_eval_ "$1"
        eval_ret=$?
-       teardown_malloc_check
+       teardown_test_eval
 
        if test -z "$immediate" || test $eval_ret = 0 || test -n 
"$expecting_failure"
        then
-               setup_malloc_check
+               setup_test_eval
                test_eval_ "$test_cleanup"
-               teardown_malloc_check
+               teardown_test_eval
        fi
        if test "$verbose" = "t" && test -n "$HARNESS_ACTIVE"
        then
-- 
1.8.3.rc2.393.g8636c0b

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to