Skip to content

Commit 866a301

Browse files
avargitster
authored andcommitted
test-lib tests: move "run_sub_test" to a new lib-subtest.sh
Move the "check_sub_test_lib_test()" and its sister functions to a new lib-subtest.sh. In the future (not in this series) I'd like to test test-lib's output in a more targeted and smaller test, and I'll need these functions to do that. Signed-off-by: Ævar Arnfjörð Bjarmason <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 33e5da5 commit 866a301

File tree

2 files changed

+87
-87
lines changed

2 files changed

+87
-87
lines changed

t/lib-subtest.sh

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
_run_sub_test_lib_test_common () {
2+
neg="$1" name="$2" descr="$3" # stdin is the body of the test code
3+
shift 3
4+
5+
# intercept pseudo-options at the front of the argument list that we
6+
# will not pass to child script
7+
skip=
8+
while test $# -gt 0
9+
do
10+
case "$1" in
11+
--skip=*)
12+
skip=${1#--*=}
13+
shift
14+
;;
15+
*)
16+
break
17+
;;
18+
esac
19+
done
20+
21+
mkdir "$name" &&
22+
(
23+
# Pretend we're not running under a test harness, whether we
24+
# are or not. The test-lib output depends on the setting of
25+
# this variable, so we need a stable setting under which to run
26+
# the sub-test.
27+
sane_unset HARNESS_ACTIVE &&
28+
cd "$name" &&
29+
write_script "$name.sh" "$TEST_SHELL_PATH" <<-EOF &&
30+
test_description='$descr (run in sub test-lib)
31+
32+
This is run in a sub test-lib so that we do not get incorrect
33+
passing metrics
34+
'
35+
36+
# Point to the t/test-lib.sh, which isn't in ../ as usual
37+
. "\$TEST_DIRECTORY"/test-lib.sh
38+
EOF
39+
cat >>"$name.sh" &&
40+
export TEST_DIRECTORY &&
41+
# The child test re-sources GIT-BUILD-OPTIONS and may thus
42+
# override the test output directory. We thus pass it as an
43+
# explicit override to the child.
44+
TEST_OUTPUT_DIRECTORY_OVERRIDE=$(pwd) &&
45+
export TEST_OUTPUT_DIRECTORY_OVERRIDE &&
46+
GIT_SKIP_TESTS=$skip &&
47+
export GIT_SKIP_TESTS &&
48+
sane_unset GIT_TEST_FAIL_PREREQS &&
49+
if test -z "$neg"
50+
then
51+
./"$name.sh" "$@" >out 2>err
52+
else
53+
! ./"$name.sh" "$@" >out 2>err
54+
fi
55+
)
56+
}
57+
58+
run_sub_test_lib_test () {
59+
_run_sub_test_lib_test_common '' "$@"
60+
}
61+
62+
run_sub_test_lib_test_err () {
63+
_run_sub_test_lib_test_common '!' "$@"
64+
}
65+
66+
check_sub_test_lib_test () {
67+
name="$1" # stdin is the expected output from the test
68+
(
69+
cd "$name" &&
70+
test_must_be_empty err &&
71+
sed -e 's/^> //' -e 's/Z$//' >expect &&
72+
test_cmp expect out
73+
)
74+
}
75+
76+
check_sub_test_lib_test_err () {
77+
name="$1" # stdin is the expected output from the test
78+
# expected error output is in descriptor 3
79+
(
80+
cd "$name" &&
81+
sed -e 's/^> //' -e 's/Z$//' >expect.out &&
82+
test_cmp expect.out out &&
83+
sed -e 's/^> //' -e 's/Z$//' <&3 >expect.err &&
84+
test_cmp expect.err err
85+
)
86+
}

t/t0000-basic.sh

Lines changed: 1 addition & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ modification *should* take notice and update the test vectors here.
1919
'
2020

2121
. ./test-lib.sh
22+
. "$TEST_DIRECTORY"/lib-subtest.sh
2223

2324
try_local_xy () {
2425
local x="local" y="alsolocal" &&
@@ -66,93 +67,6 @@ test_expect_success 'success is reported like this' '
6667
:
6768
'
6869

69-
_run_sub_test_lib_test_common () {
70-
neg="$1" name="$2" descr="$3" # stdin is the body of the test code
71-
shift 3
72-
73-
# intercept pseudo-options at the front of the argument list that we
74-
# will not pass to child script
75-
skip=
76-
while test $# -gt 0
77-
do
78-
case "$1" in
79-
--skip=*)
80-
skip=${1#--*=}
81-
shift
82-
;;
83-
*)
84-
break
85-
;;
86-
esac
87-
done
88-
89-
mkdir "$name" &&
90-
(
91-
# Pretend we're not running under a test harness, whether we
92-
# are or not. The test-lib output depends on the setting of
93-
# this variable, so we need a stable setting under which to run
94-
# the sub-test.
95-
sane_unset HARNESS_ACTIVE &&
96-
cd "$name" &&
97-
write_script "$name.sh" "$TEST_SHELL_PATH" <<-EOF &&
98-
test_description='$descr (run in sub test-lib)
99-
100-
This is run in a sub test-lib so that we do not get incorrect
101-
passing metrics
102-
'
103-
104-
# Point to the t/test-lib.sh, which isn't in ../ as usual
105-
. "\$TEST_DIRECTORY"/test-lib.sh
106-
EOF
107-
cat >>"$name.sh" &&
108-
export TEST_DIRECTORY &&
109-
# The child test re-sources GIT-BUILD-OPTIONS and may thus
110-
# override the test output directory. We thus pass it as an
111-
# explicit override to the child.
112-
TEST_OUTPUT_DIRECTORY_OVERRIDE=$(pwd) &&
113-
export TEST_OUTPUT_DIRECTORY_OVERRIDE &&
114-
GIT_SKIP_TESTS=$skip &&
115-
export GIT_SKIP_TESTS &&
116-
sane_unset GIT_TEST_FAIL_PREREQS &&
117-
if test -z "$neg"
118-
then
119-
./"$name.sh" "$@" >out 2>err
120-
else
121-
! ./"$name.sh" "$@" >out 2>err
122-
fi
123-
)
124-
}
125-
126-
run_sub_test_lib_test () {
127-
_run_sub_test_lib_test_common '' "$@"
128-
}
129-
130-
run_sub_test_lib_test_err () {
131-
_run_sub_test_lib_test_common '!' "$@"
132-
}
133-
134-
check_sub_test_lib_test () {
135-
name="$1" # stdin is the expected output from the test
136-
(
137-
cd "$name" &&
138-
test_must_be_empty err &&
139-
sed -e 's/^> //' -e 's/Z$//' >expect &&
140-
test_cmp expect out
141-
)
142-
}
143-
144-
check_sub_test_lib_test_err () {
145-
name="$1" # stdin is the expected output from the test
146-
# expected error output is in descriptor 3
147-
(
148-
cd "$name" &&
149-
sed -e 's/^> //' -e 's/Z$//' >expect.out &&
150-
test_cmp expect.out out &&
151-
sed -e 's/^> //' -e 's/Z$//' <&3 >expect.err &&
152-
test_cmp expect.err err
153-
)
154-
}
155-
15670
test_expect_success 'pretend we have a fully passing test suite' '
15771
run_sub_test_lib_test full-pass "3 passing tests" <<-\EOF &&
15872
for i in 1 2 3

0 commit comments

Comments
 (0)