tests: refactor mechanics of testing in a sub test-lib
This will allow us to test the test framework more thoroughly without disrupting the top-level test metrics. Signed-off-by: Adam Spiers <git@adamspiers.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
0a6d4751da
commit
565b6fa87b
|
@ -55,39 +55,53 @@ test_expect_failure 'pretend we have a known breakage' '
|
||||||
false
|
false
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'pretend we have fixed a known breakage (run in sub test-lib)' "
|
run_sub_test_lib_test () {
|
||||||
mkdir passing-todo &&
|
name="$1" descr="$2" # stdin is the body of the test code
|
||||||
(cd passing-todo &&
|
mkdir "$name" &&
|
||||||
cat >passing-todo.sh <<-EOF &&
|
(
|
||||||
#!$SHELL_PATH
|
cd "$name" &&
|
||||||
|
cat >"$name.sh" <<-EOF &&
|
||||||
|
#!$SHELL_PATH
|
||||||
|
|
||||||
test_description='A passing TODO test
|
test_description='$descr (run in sub test-lib)
|
||||||
|
|
||||||
This is run in a sub test-lib so that we do not get incorrect
|
This is run in a sub test-lib so that we do not get incorrect
|
||||||
passing metrics
|
passing metrics
|
||||||
'
|
'
|
||||||
|
|
||||||
# Point to the t/test-lib.sh, which isn't in ../ as usual
|
# Point to the t/test-lib.sh, which isn't in ../ as usual
|
||||||
TEST_DIRECTORY=\"$TEST_DIRECTORY\"
|
. "\$TEST_DIRECTORY"/test-lib.sh
|
||||||
. \"\$TEST_DIRECTORY\"/test-lib.sh
|
EOF
|
||||||
|
cat >>"$name.sh" &&
|
||||||
|
chmod +x "$name.sh" &&
|
||||||
|
export TEST_DIRECTORY &&
|
||||||
|
./"$name.sh" >out 2>err
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
test_expect_failure 'pretend we have fixed a known breakage' '
|
check_sub_test_lib_test () {
|
||||||
:
|
name="$1" # stdin is the expected output from the test
|
||||||
'
|
(
|
||||||
|
cd "$name" &&
|
||||||
|
! test -s err &&
|
||||||
|
sed -e 's/^> //' -e 's/Z$//' >expect &&
|
||||||
|
test_cmp expect out
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
test_expect_success 'pretend we have fixed a known breakage' "
|
||||||
|
run_sub_test_lib_test passing-todo 'A passing TODO test' <<-\\EOF &&
|
||||||
|
test_expect_failure 'pretend we have fixed a known breakage' 'true'
|
||||||
test_done
|
test_done
|
||||||
EOF
|
EOF
|
||||||
chmod +x passing-todo.sh &&
|
check_sub_test_lib_test passing-todo <<-\\EOF
|
||||||
./passing-todo.sh >out 2>err &&
|
|
||||||
! test -s err &&
|
|
||||||
sed -e 's/^> //' >expect <<-\\EOF &&
|
|
||||||
> ok 1 - pretend we have fixed a known breakage # TODO known breakage
|
> ok 1 - pretend we have fixed a known breakage # TODO known breakage
|
||||||
> # fixed 1 known breakage(s)
|
> # fixed 1 known breakage(s)
|
||||||
> # passed all 1 test(s)
|
> # passed all 1 test(s)
|
||||||
> 1..1
|
> 1..1
|
||||||
EOF
|
EOF
|
||||||
test_cmp expect out)
|
|
||||||
"
|
"
|
||||||
|
|
||||||
test_set_prereq HAVEIT
|
test_set_prereq HAVEIT
|
||||||
haveit=no
|
haveit=no
|
||||||
test_expect_success HAVEIT 'test runs if prerequisite is satisfied' '
|
test_expect_success HAVEIT 'test runs if prerequisite is satisfied' '
|
||||||
|
@ -137,19 +151,8 @@ then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
test_expect_success 'tests clean up even on failures' "
|
test_expect_success 'tests clean up even on failures' "
|
||||||
mkdir failing-cleanup &&
|
test_must_fail run_sub_test_lib_test \
|
||||||
(
|
failing-cleanup 'Failing tests with cleanup commands' <<-\\EOF &&
|
||||||
cd failing-cleanup &&
|
|
||||||
|
|
||||||
cat >failing-cleanup.sh <<-EOF &&
|
|
||||||
#!$SHELL_PATH
|
|
||||||
|
|
||||||
test_description='Failing tests with cleanup commands'
|
|
||||||
|
|
||||||
# Point to the t/test-lib.sh, which isn't in ../ as usual
|
|
||||||
TEST_DIRECTORY=\"$TEST_DIRECTORY\"
|
|
||||||
. \"\$TEST_DIRECTORY\"/test-lib.sh
|
|
||||||
|
|
||||||
test_expect_success 'tests clean up even after a failure' '
|
test_expect_success 'tests clean up even after a failure' '
|
||||||
touch clean-after-failure &&
|
touch clean-after-failure &&
|
||||||
test_when_finished rm clean-after-failure &&
|
test_when_finished rm clean-after-failure &&
|
||||||
|
@ -159,14 +162,8 @@ test_expect_success 'tests clean up even on failures' "
|
||||||
test_when_finished \"(exit 2)\"
|
test_when_finished \"(exit 2)\"
|
||||||
'
|
'
|
||||||
test_done
|
test_done
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
|
check_sub_test_lib_test failing-cleanup <<-\\EOF
|
||||||
chmod +x failing-cleanup.sh &&
|
|
||||||
test_must_fail ./failing-cleanup.sh >out 2>err &&
|
|
||||||
! test -s err &&
|
|
||||||
! test -f \"trash directory.failing-cleanup/clean-after-failure\" &&
|
|
||||||
sed -e 's/Z$//' -e 's/^> //' >expect <<-\\EOF &&
|
|
||||||
> not ok 1 - tests clean up even after a failure
|
> not ok 1 - tests clean up even after a failure
|
||||||
> # Z
|
> # Z
|
||||||
> # touch clean-after-failure &&
|
> # touch clean-after-failure &&
|
||||||
|
@ -180,8 +177,6 @@ test_expect_success 'tests clean up even on failures' "
|
||||||
> # failed 2 among 2 test(s)
|
> # failed 2 among 2 test(s)
|
||||||
> 1..2
|
> 1..2
|
||||||
EOF
|
EOF
|
||||||
test_cmp expect out
|
|
||||||
)
|
|
||||||
"
|
"
|
||||||
|
|
||||||
################################################################
|
################################################################
|
||||||
|
|
Loading…
Reference in New Issue