tests: show the test name and number at the start of verbose output
authorSZEDER Gábor <szeder.dev@gmail.com>
Mon, 5 Aug 2019 21:04:47 +0000 (23:04 +0200)
committerJunio C Hamano <gitster@pobox.com>
Mon, 5 Aug 2019 22:21:33 +0000 (15:21 -0700)
The verbose output of every test looks something like this:

expecting success:
echo content >file &&
git add file &&
git commit -m "add file"

[master (root-commit) d1fbfbd] add file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
ok 1 - commit works

i.e. first an "expecting success" (or "checking known breakage") line
followed by the commands to be executed, then the output of those
comamnds, and finally an "ok"/"not ok" line containing the test name.
Note that the test's name is only shown at the very end.

With '-x' tracing enabled and/or in longer tests the verbose output
might be several screenfulls long, making it harder than necessary to
find where the output of the test with a given name starts (especially
when the outputs to different file descriptors are racing, and the
"expecting success"/command block arrives earlier than the "ok" line
of the previous test).

Print the test name at the start of the test's verbose output, i.e. at
the end of the "expecting success" and "checking known breakage"
lines, to make the start of a particular test a bit easier to
recognize. Also print the test script and test case numbers, to help
those poor souls who regularly have to scan through the combined
verbose output of several test scripts.

So the dummy test above would start like this:

expecting success of 9999.1 'commit works':
echo content >file &&
[...]

Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t0000-basic.sh
t/test-lib-functions.sh
t/test-lib.sh
index f9838d88daf1bdc9aa289a58d4672da94a521f00..8ba34efefca10e1816136ea29df8e84c25404a7a 100755 (executable)
@@ -285,14 +285,14 @@ test_expect_success C_LOCALE_OUTPUT 'test --verbose' '
        mv t1234-verbose/out t1234-verbose/out+ &&
        grep -v "^Initialized empty" t1234-verbose/out+ >t1234-verbose/out &&
        check_sub_test_lib_test t1234-verbose <<-\EOF
-       > expecting success: true
+       > expecting success of 1234.1 '\''passing test'\'': true
        > ok 1 - passing test
        > Z
-       > expecting success: echo foo
+       > expecting success of 1234.2 '\''test with output'\'': echo foo
        > foo
        > ok 2 - test with output
        > Z
-       > expecting success: false
+       > expecting success of 1234.3 '\''failing test'\'': false
        > not ok 3 - failing test
        > #     false
        > Z
@@ -313,7 +313,7 @@ test_expect_success 'test --verbose-only' '
        check_sub_test_lib_test t2345-verbose-only-2 <<-\EOF
        > ok 1 - passing test
        > Z
-       > expecting success: echo foo
+       > expecting success of 2345.2 '\''test with output'\'': echo foo
        > foo
        > ok 2 - test with output
        > Z
index f233522f43ab39728e3c454258920283f5d9cab3..cb3941beea619dda056725a0df65e820c73164bb 100644 (file)
@@ -437,7 +437,7 @@ test_expect_failure () {
        export test_prereq
        if ! test_skip "$@"
        then
-               say >&3 "checking known breakage: $2"
+               say >&3 "checking known breakage of $TEST_NUMBER.$test_count '$1': $2"
                if test_run_ "$2" expecting_failure
                then
                        test_known_broken_ok_ "$1"
@@ -457,7 +457,7 @@ test_expect_success () {
        export test_prereq
        if ! test_skip "$@"
        then
-               say >&3 "expecting success: $2"
+               say >&3 "expecting success of $TEST_NUMBER.$test_count '$1': $2"
                if test_run_ "$2"
                then
                        test_ok_ "$1"
index 599fd70e141c7b7252b65ae6603486691864974b..901f57915193e952c23a5f7ae4a1f8a7e60254d2 100644 (file)
@@ -212,6 +212,8 @@ fi
 
 TEST_STRESS_JOB_SFX="${GIT_TEST_STRESS_JOB_NR:+.stress-$GIT_TEST_STRESS_JOB_NR}"
 TEST_NAME="$(basename "$0" .sh)"
+TEST_NUMBER="${TEST_NAME%%-*}"
+TEST_NUMBER="${TEST_NUMBER#t}"
 TEST_RESULTS_DIR="$TEST_OUTPUT_DIRECTORY/test-results"
 TEST_RESULTS_BASE="$TEST_RESULTS_DIR/$TEST_NAME$TEST_STRESS_JOB_SFX"
 TRASH_DIRECTORY="trash directory.$TEST_NAME$TEST_STRESS_JOB_SFX"