Merge branch 'jk/test-body-in-here-doc'

The test framework learned to take the test body not as a single
string but as a here-document.

* jk/test-body-in-here-doc:
  t/.gitattributes: ignore whitespace in chainlint expect files
  t: convert some here-doc test bodies
  test-lib: allow test snippets as here-docs
  chainlint.pl: add tests for test body in heredoc
  chainlint.pl: recognize test bodies defined via heredoc
  chainlint.pl: check line numbers in expected output
  chainlint.pl: force CRLF conversion when opening input files
  chainlint.pl: do not spawn more threads than we have scripts
  chainlint.pl: only start threads if jobs > 1
  chainlint.pl: add test_expect_success call to test snippets
This commit is contained in:
Junio C Hamano
2024-07-17 10:47:24 -07:00
160 changed files with 1286 additions and 1026 deletions

View File

@ -872,6 +872,24 @@ test_verify_prereq () {
BUG "'$test_prereq' does not look like a prereq"
}
# assign the variable named by "$1" with the contents of "$2";
# if "$2" is "-", then read stdin into "$1" instead
test_body_or_stdin () {
if test "$2" != "-"
then
eval "$1=\$2"
return
fi
# start with a newline, to match hanging newline from open-quote style
eval "$1=\$LF"
local test_line
while IFS= read -r test_line
do
eval "$1=\${$1}\${test_line}\${LF}"
done
}
test_expect_failure () {
test_start_ "$@"
test "$#" = 3 && { test_prereq=$1; shift; } || test_prereq=
@ -881,9 +899,11 @@ test_expect_failure () {
export test_prereq
if ! test_skip "$@"
then
local test_body
test_body_or_stdin test_body "$2"
test -n "$test_skip_test_preamble" ||
say >&3 "checking known breakage of $TEST_NUMBER.$test_count '$1': $2"
if test_run_ "$2" expecting_failure
say >&3 "checking known breakage of $TEST_NUMBER.$test_count '$1': $test_body"
if test_run_ "$test_body" expecting_failure
then
test_known_broken_ok_ "$1"
else
@ -902,13 +922,15 @@ test_expect_success () {
export test_prereq
if ! test_skip "$@"
then
local test_body
test_body_or_stdin test_body "$2"
test -n "$test_skip_test_preamble" ||
say >&3 "expecting success of $TEST_NUMBER.$test_count '$1': $2"
if test_run_ "$2"
say >&3 "expecting success of $TEST_NUMBER.$test_count '$1': $test_body"
if test_run_ "$test_body"
then
test_ok_ "$1"
else
test_failure_ "$@"
test_failure_ "$1" "$test_body"
fi
fi
test_finish_