From: Jeff King <peff@peff.net>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org
Subject: Re: [RFC/PATCH 2/2] test: allow prerequisite to be evaluated lazily
Date: Fri, 27 Jul 2012 11:50:00 -0400 [thread overview]
Message-ID: <20120727155000.GB11957@sigill.intra.peff.net> (raw)
In-Reply-To: <20120727154500.GA11957@sigill.intra.peff.net>
On Fri, Jul 27, 2012 at 11:45:00AM -0400, Jeff King wrote:
> And of course with non-broken probes, "-v" would also help to see exactly
> when the probe is run, using which commands, and what output they
> produced. E.g., for SYMLINKS, we should probably drop the stderr
> redirection from the probe so we can see how "ln" complains.
>
> It might also be worth doing a "say >&3" at the end of the check, too,
> to tell "-v" users the outcome.
Here is an updated version of my suggestion that does both of those
things. I think it should just be squashed into your patch.
diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh
index 2214388..d2ebe24 100644
--- a/t/test-lib-functions.sh
+++ b/t/test-lib-functions.sh
@@ -232,6 +232,26 @@ test_lazy_prereq () {
eval test_prereq_lazily_$1=\$2
}
+test_run_prereq_ () {
+ script='
+mkdir -p "$TRASH_DIRECTORY/prereq-test-dir" &&
+(cd "$TRASH_DIRECTORY/prereq-test-dir" &&
+'"$2"'
+)
+'
+ say >&3 "checking prerequisite: $1"
+ say >&3 "$script"
+ test_eval_ "$script"
+ eval_ret=$?
+ rm -rf "$TRASH_DIRECTORY/prereq-test-dir"
+ if test "$eval_ret" = 0; then
+ say >&3 "prerequisite $1 ok"
+ else
+ say >&3 "prerequisite $1 not fulfilled"
+ fi
+ return $eval_ret
+}
+
test_have_prereq () {
# prerequisites can be concatenated with ','
save_IFS=$IFS
@@ -251,16 +271,11 @@ test_have_prereq () {
*)
case " $lazy_testable_prereq " in
*" $prerequisite "*)
- mkdir -p "$TRASH_DIRECTORY/prereq-test-dir"
- if (
- eval "script=\$test_prereq_lazily_$prerequisite" &&
- cd "$TRASH_DIRECTORY/prereq-test-dir" &&
- eval "$script"
- )
+ eval "script=\$test_prereq_lazily_$prerequisite" &&
+ if test_run_prereq_ "$prerequisite" "$script"
then
test_set_prereq $prerequisite
fi
- rm -fr "$TRASH_DIRECTORY/prereq-test-dir"
lazy_tested_prereq="$lazy_tested_prereq$prerequisite "
esac
;;
diff --git a/t/test-lib.sh b/t/test-lib.sh
index 878d000..35739b9 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -661,7 +661,7 @@ test_i18ngrep () {
test_lazy_prereq SYMLINKS '
# test whether the filesystem supports symbolic links
- ln -s x y 2>/dev/null && test -h y 2>/dev/null
+ ln -s x y && test -h y
'
# When the tests are run as root, permission tests will report that
next prev parent reply other threads:[~2012-07-27 15:50 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-26 23:04 [PATCH 1/2] test: rename $satisfied to $satisfied_prereq Junio C Hamano
2012-07-26 23:11 ` [RFC/PATCH 2/2] test: allow prerequisite to be evaluated lazily Junio C Hamano
2012-07-26 23:19 ` [PATCH 3/2] test-lib: provide case insensitivity as a prerequisite Junio C Hamano
2012-07-26 23:28 ` [PATCH 4/2] test-lib: provide UTF8 behaviour " Junio C Hamano
2012-07-27 15:45 ` [RFC/PATCH 2/2] test: allow prerequisite to be evaluated lazily Jeff King
2012-07-27 15:50 ` Jeff King [this message]
2012-07-27 17:15 ` Junio C Hamano
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=20120727155000.GB11957@sigill.intra.peff.net \
--to=peff@peff.net \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.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;
as well as URLs for NNTP newsgroup(s).