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
Adam Spiers 2012-12-16 18:28:13 +00:00 committed by Junio C Hamano
parent 0a6d4751da
commit 565b6fa87b
1 changed files with 37 additions and 42 deletions

View File

@ -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
)
" "


################################################################ ################################################################