From: Jeff King <peff@peff.net>
To: "SZEDER Gábor" <szeder.dev@gmail.com>
Cc: Junio C Hamano <gitster@pobox.com>,
Johannes Schindelin <johannes.schindelin@gmx.de>,
git@vger.kernel.org
Subject: Re: [PATCH] test-lib: don't check prereqs of test cases that won't be run anyway
Date: Tue, 12 Nov 2019 09:05:54 -0500 [thread overview]
Message-ID: <20191112140554.GA13771@sigill.intra.peff.net> (raw)
In-Reply-To: <20191112122438.17057-1-szeder.dev@gmail.com>
On Tue, Nov 12, 2019 at 01:24:38PM +0100, SZEDER Gábor wrote:
> With './t1234-foo.sh -r 5,6' we can run only specific test cases in a
> test script, but our test framwork still evaluates all lazy prereqs
> that the excluded test cases might depend on. This is unnecessary and
> produces verbose and trace output that can be distracting. This has
> been an issue ever since the '-r|--run=' options were introduced in
> 0445e6f0a1 (test-lib: '--run' to run only specific tests, 2014-04-30),
> because that commit added the check of the list of test cases
> specified with '-r' after evaluating the prereqs.
>
> Avoid this unnecessary prereq evaluation by checking the list of test
> cases specified with '-r' before looking at the prereqs.
>
> Note that GIT_SKIP_TESTS has always been checked before the prereqs,
> so prereqs necessary for tests skipped that way were not evaluated.
Thanks. This definitely seems like an improvement. I verified that it
works in practice, and the patch itself looks obviously correct.
One of the things I had to double check is how to_skip is handled, since
we check it in the moved block. It's fine, but I wondered if the whole
thing would be easier as an if/else cascade with an early return. Like
the patch below (on top of your patch; try "diff -w" to quiet the
indentation noise).
But maybe it's not worth the churn (and if we pursue it at all, it
should not hold up your patch).
-Peff
diff --git a/t/test-lib.sh b/t/test-lib.sh
index 24b541f494..a1784114cb 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -993,49 +993,38 @@ test_finish_ () {
}
test_skip () {
- to_skip=
skipped_reason=
if match_pattern_list $this_test.$test_count $GIT_SKIP_TESTS
then
- to_skip=t
skipped_reason="GIT_SKIP_TESTS"
- fi
- if test -z "$to_skip" && test -n "$run_list" &&
+ elif test -n "$run_list" &&
! match_test_selector_list '--run' $test_count "$run_list"
then
- to_skip=t
skipped_reason="--run"
- fi
- if test -z "$to_skip" && test -n "$test_prereq" &&
+ elif
+ if test -n "$test_prereq" &&
! test_have_prereq "$test_prereq"
then
- to_skip=t
-
of_prereq=
if test "$missing_prereq" != "$test_prereq"
then
of_prereq=" of $test_prereq"
fi
skipped_reason="missing $missing_prereq${of_prereq}"
+ else
+ return 1
fi
- case "$to_skip" in
- t)
- if test -n "$write_junit_xml"
- then
- message="$(xml_attr_encode "$skipped_reason")"
- write_junit_xml_testcase "$1" \
- " <skipped message=\"$message\" />"
- fi
+ if test -n "$write_junit_xml"
+ then
+ message="$(xml_attr_encode "$skipped_reason")"
+ write_junit_xml_testcase "$1" \
+ " <skipped message=\"$message\" />"
+ fi
- say_color skip >&3 "skipping test: $@"
- say_color skip "ok $test_count # skip $1 ($skipped_reason)"
- : true
- ;;
- *)
- false
- ;;
- esac
+ say_color skip >&3 "skipping test: $@"
+ say_color skip "ok $test_count # skip $1 ($skipped_reason)"
+ return 0
}
# stub; perf-lib overrides it
next prev parent reply other threads:[~2019-11-12 14:05 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-12 12:24 [PATCH] test-lib: don't check prereqs of test cases that won't be run anyway SZEDER Gábor
2019-11-12 14:05 ` Jeff King [this message]
2019-11-12 19:28 ` Johannes Schindelin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20191112140554.GA13771@sigill.intra.peff.net \
--to=peff@peff.net \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=johannes.schindelin@gmx.de \
--cc=szeder.dev@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox