blob: 56ee927f0c49be45483380ab504b0ee22871ed6c [file] [log] [blame]
Ævar Arnfjörð Bjarmason9f0a4522021-09-22 13:19:48 +02001write_sub_test_lib_test () {
Ævar Arnfjörð Bjarmasonc3ff7be2021-09-22 13:19:49 +02002 name="$1" # stdin is the body of the test code
Ævar Arnfjörð Bjarmason9f0a4522021-09-22 13:19:48 +02003 mkdir "$name" &&
4 write_script "$name/$name.sh" "$TEST_SHELL_PATH" <<-EOF &&
Ævar Arnfjörð Bjarmasonc3ff7be2021-09-22 13:19:49 +02005 test_description='A test of test-lib.sh itself'
Ævar Arnfjörð Bjarmason9f0a4522021-09-22 13:19:48 +02006
7 # Point to the t/test-lib.sh, which isn't in ../ as usual
8 . "\$TEST_DIRECTORY"/test-lib.sh
9 EOF
10 cat >>"$name/$name.sh"
11}
12
Ævar Arnfjörð Bjarmason866a3012021-07-22 00:57:40 +020013_run_sub_test_lib_test_common () {
Ævar Arnfjörð Bjarmason56722a02021-09-22 13:19:52 +020014 cmp_op="$1" want_code="$2" name="$3" # stdin is the body of the test code
15 shift 3
Ævar Arnfjörð Bjarmason866a3012021-07-22 00:57:40 +020016
17 # intercept pseudo-options at the front of the argument list that we
18 # will not pass to child script
19 skip=
20 while test $# -gt 0
21 do
22 case "$1" in
23 --skip=*)
24 skip=${1#--*=}
25 shift
26 ;;
27 *)
28 break
29 ;;
30 esac
31 done
32
Ævar Arnfjörð Bjarmason866a3012021-07-22 00:57:40 +020033 (
Ævar Arnfjörð Bjarmason9f0a4522021-09-22 13:19:48 +020034 cd "$name" &&
35
Ævar Arnfjörð Bjarmason866a3012021-07-22 00:57:40 +020036 # Pretend we're not running under a test harness, whether we
37 # are or not. The test-lib output depends on the setting of
38 # this variable, so we need a stable setting under which to run
39 # the sub-test.
40 sane_unset HARNESS_ACTIVE &&
Ævar Arnfjörð Bjarmason866a3012021-07-22 00:57:40 +020041
Ævar Arnfjörð Bjarmason866a3012021-07-22 00:57:40 +020042 export TEST_DIRECTORY &&
43 # The child test re-sources GIT-BUILD-OPTIONS and may thus
44 # override the test output directory. We thus pass it as an
45 # explicit override to the child.
46 TEST_OUTPUT_DIRECTORY_OVERRIDE=$(pwd) &&
47 export TEST_OUTPUT_DIRECTORY_OVERRIDE &&
48 GIT_SKIP_TESTS=$skip &&
49 export GIT_SKIP_TESTS &&
50 sane_unset GIT_TEST_FAIL_PREREQS &&
Ævar Arnfjörð Bjarmason56722a02021-09-22 13:19:52 +020051 ./"$name.sh" "$@" >out 2>err;
52 ret=$? &&
53 test "$ret" "$cmp_op" "$want_code"
Ævar Arnfjörð Bjarmason866a3012021-07-22 00:57:40 +020054 )
55}
56
Ævar Arnfjörð Bjarmason9f0a4522021-09-22 13:19:48 +020057write_and_run_sub_test_lib_test () {
58 name="$1" descr="$2" # stdin is the body of the test code
59 write_sub_test_lib_test "$@" || return 1
Ævar Arnfjörð Bjarmason56722a02021-09-22 13:19:52 +020060 _run_sub_test_lib_test_common -eq 0 "$@"
Ævar Arnfjörð Bjarmason9f0a4522021-09-22 13:19:48 +020061}
62
63write_and_run_sub_test_lib_test_err () {
64 name="$1" descr="$2" # stdin is the body of the test code
65 write_sub_test_lib_test "$@" || return 1
Ævar Arnfjörð Bjarmason56722a02021-09-22 13:19:52 +020066 _run_sub_test_lib_test_common -eq 1 "$@"
Ævar Arnfjörð Bjarmason9f0a4522021-09-22 13:19:48 +020067}
68
Ævar Arnfjörð Bjarmason866a3012021-07-22 00:57:40 +020069run_sub_test_lib_test () {
Ævar Arnfjörð Bjarmason56722a02021-09-22 13:19:52 +020070 _run_sub_test_lib_test_common -eq 0 "$@"
Ævar Arnfjörð Bjarmason866a3012021-07-22 00:57:40 +020071}
72
73run_sub_test_lib_test_err () {
Ævar Arnfjörð Bjarmason56722a02021-09-22 13:19:52 +020074 _run_sub_test_lib_test_common -eq 1 "$@"
Ævar Arnfjörð Bjarmason866a3012021-07-22 00:57:40 +020075}
76
Ævar Arnfjörð Bjarmasone07b8172021-09-22 13:19:51 +020077_check_sub_test_lib_test_common () {
78 name="$1" &&
79 sed -e 's/^> //' -e 's/Z$//' >"$name"/expect.out &&
80 test_cmp "$name"/expect.out "$name"/out
81}
82
Ævar Arnfjörð Bjarmason866a3012021-07-22 00:57:40 +020083check_sub_test_lib_test () {
84 name="$1" # stdin is the expected output from the test
Ævar Arnfjörð Bjarmasone07b8172021-09-22 13:19:51 +020085 _check_sub_test_lib_test_common "$name" &&
86 test_must_be_empty "$name"/err
Ævar Arnfjörð Bjarmason866a3012021-07-22 00:57:40 +020087}
88
89check_sub_test_lib_test_err () {
90 name="$1" # stdin is the expected output from the test
Ævar Arnfjörð Bjarmasone07b8172021-09-22 13:19:51 +020091 _check_sub_test_lib_test_common "$name" &&
Ævar Arnfjörð Bjarmason866a3012021-07-22 00:57:40 +020092 # expected error output is in descriptor 3
Ævar Arnfjörð Bjarmason12fe4902021-09-22 13:19:50 +020093 sed -e 's/^> //' -e 's/Z$//' <&3 >"$name"/expect.err &&
94 test_cmp "$name"/expect.err "$name"/err
Ævar Arnfjörð Bjarmason866a3012021-07-22 00:57:40 +020095}