Merge branch 'sg/tests-prereq'

A lazily defined test prerequisite can now be defined in terms of
another lazily defined test prerequisite.

* sg/tests-prereq:
  tests: fix description of 'test_set_prereq'
  tests: make sure nested lazy prereqs work reliably
This commit is contained in:
Junio C Hamano 2020-11-25 15:24:54 -08:00
commit 7bd645e21d
2 changed files with 25 additions and 4 deletions

View file

@ -840,6 +840,27 @@ then
exit 1
fi
test_lazy_prereq NESTED_INNER '
>inner &&
rm -f outer
'
test_lazy_prereq NESTED_PREREQ '
>outer &&
test_have_prereq NESTED_INNER &&
echo "can create new file in cwd" >file &&
test -f outer &&
test ! -f inner
'
test_expect_success NESTED_PREREQ 'evaluating nested lazy prereqs dont interfere with each other' '
nestedworks=yes
'
if test -z "$GIT_TEST_FAIL_PREREQS_INTERNAL" && test "$nestedworks" != yes
then
say 'bug in test framework: nested lazy prerequisites do not work'
exit 1
fi
test_expect_success 'lazy prereqs do not turn off tracing' "
run_sub_test_lib_test lazy-prereq-and-tracing \
'lazy prereqs and -x' -v -x <<-\\EOF &&

View file

@ -423,7 +423,7 @@ write_script () {
# - Explicitly using test_have_prereq.
#
# - Implicitly by specifying the prerequisite tag in the calls to
# test_expect_{success,failure,code}.
# test_expect_{success,failure} and test_external{,_without_stderr}.
#
# The single parameter is the prerequisite tag (a simple word, in all
# capital letters by convention).
@ -474,15 +474,15 @@ test_lazy_prereq () {
test_run_lazy_prereq_ () {
script='
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir" &&
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-'"$1"'" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir" &&'"$2"'
cd "$TRASH_DIRECTORY/prereq-test-dir-'"$1"'" &&'"$2"'
)'
say >&3 "checking prerequisite: $1"
say >&3 "$script"
test_eval_ "$script"
eval_ret=$?
rm -rf "$TRASH_DIRECTORY/prereq-test-dir"
rm -rf "$TRASH_DIRECTORY/prereq-test-dir-$1"
if test "$eval_ret" = 0; then
say >&3 "prerequisite $1 ok"
else