]>
Commit | Line | Data |
---|---|---|
9f0a4520 | 1 | write_sub_test_lib_test () { |
c3ff7be6 | 2 | name="$1" # stdin is the body of the test code |
9f0a4520 ÆAB |
3 | mkdir "$name" && |
4 | write_script "$name/$name.sh" "$TEST_SHELL_PATH" <<-EOF && | |
c3ff7be6 | 5 | test_description='A test of test-lib.sh itself' |
9f0a4520 ÆAB |
6 | |
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 | ||
866a3014 | 13 | _run_sub_test_lib_test_common () { |
56722a06 ÆAB |
14 | cmp_op="$1" want_code="$2" name="$3" # stdin is the body of the test code |
15 | shift 3 | |
866a3014 ÆAB |
16 | |
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 | ||
866a3014 | 33 | ( |
9f0a4520 ÆAB |
34 | cd "$name" && |
35 | ||
866a3014 ÆAB |
36 | # 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 && | |
866a3014 | 41 | |
866a3014 ÆAB |
42 | 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 && | |
56722a06 ÆAB |
51 | ./"$name.sh" "$@" >out 2>err; |
52 | ret=$? && | |
53 | test "$ret" "$cmp_op" "$want_code" | |
866a3014 ÆAB |
54 | ) |
55 | } | |
56 | ||
9f0a4520 ÆAB |
57 | write_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 | |
56722a06 | 60 | _run_sub_test_lib_test_common -eq 0 "$@" |
9f0a4520 ÆAB |
61 | } |
62 | ||
63 | write_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 | |
56722a06 | 66 | _run_sub_test_lib_test_common -eq 1 "$@" |
9f0a4520 ÆAB |
67 | } |
68 | ||
866a3014 | 69 | run_sub_test_lib_test () { |
56722a06 | 70 | _run_sub_test_lib_test_common -eq 0 "$@" |
866a3014 ÆAB |
71 | } |
72 | ||
73 | run_sub_test_lib_test_err () { | |
56722a06 | 74 | _run_sub_test_lib_test_common -eq 1 "$@" |
866a3014 ÆAB |
75 | } |
76 | ||
e07b817c ÆAB |
77 | _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 | ||
866a3014 ÆAB |
83 | check_sub_test_lib_test () { |
84 | name="$1" # stdin is the expected output from the test | |
e07b817c ÆAB |
85 | _check_sub_test_lib_test_common "$name" && |
86 | test_must_be_empty "$name"/err | |
866a3014 ÆAB |
87 | } |
88 | ||
89 | check_sub_test_lib_test_err () { | |
90 | name="$1" # stdin is the expected output from the test | |
e07b817c | 91 | _check_sub_test_lib_test_common "$name" && |
866a3014 | 92 | # expected error output is in descriptor 3 |
12fe4909 ÆAB |
93 | sed -e 's/^> //' -e 's/Z$//' <&3 >"$name"/expect.err && |
94 | test_cmp "$name"/expect.err "$name"/err | |
866a3014 | 95 | } |