Add 5 new full test suite runs each with a different number of
passing/failing/broken/fixed tests, in order to ensure that the
correct exit code and output are generated in each case.  As before,
these are run in a subdirectory in order to disrupt the metrics for
the parent tests.

Signed-off-by: Adam Spiers <g...@adamspiers.org>
---
 t/t0000-basic.sh | 110 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 110 insertions(+)

diff --git a/t/t0000-basic.sh b/t/t0000-basic.sh
index 662cd2f..644cc2c 100755
--- a/t/t0000-basic.sh
+++ b/t/t0000-basic.sh
@@ -77,6 +77,15 @@ run_sub_test_lib_test () {
        ./$name.sh >out 2>err)
 }
 
+run_sub_test_lib_test_expecting_failures () {
+       if run_sub_test_lib_test "$@"; then
+               echo 'sub test-lib run should have failed'
+               return 1
+       else
+               return 0
+       fi
+}
+
 check_sub_test_lib_test () {
        name="$1" # stdin is test's expected stdout
        (cd $name &&
@@ -85,6 +94,54 @@ check_sub_test_lib_test () {
        test_cmp expect out)
 }
 
+test_expect_success 'pretend we have a fully passing test suite' "
+       run_sub_test_lib_test full-pass '3 passing tests' <<-EOF &&
+       for i in 1 2 3; do
+               test_expect_success \"passing test #\\\$i\" 'true'
+       done
+       test_done
+       EOF
+       check_sub_test_lib_test full-pass <<-EOF
+       > ok 1 - passing test #1
+       > ok 2 - passing test #2
+       > ok 3 - passing test #3
+       > # passed all 3 test(s)
+       > 1..3
+       EOF
+"
+
+test_expect_success 'pretend we have a partially passing test suite' "
+       run_sub_test_lib_test_expecting_failures partial-pass '2/3 tests 
passing' <<-EOF &&
+       test_expect_success 'passing test #1' 'true'
+       test_expect_success 'failing test #2' 'false'
+       test_expect_success 'passing test #3' 'true'
+       test_done
+       EOF
+       check_sub_test_lib_test partial-pass <<-EOF
+       > ok 1 - passing test #1
+       > not ok 2 - failing test #2
+       #       false
+       > ok 3 - passing test #3
+       > # failed 1 among 3 test(s)
+       > 1..3
+       EOF
+"
+
+test_expect_success 'pretend we have a known breakage' "
+       run_sub_test_lib_test failing-todo 'A failing TODO test' <<-EOF &&
+       test_expect_success 'passing test' 'true'
+       test_expect_failure 'pretend we have a known breakage' 'false'
+       test_done
+       EOF
+       check_sub_test_lib_test failing-todo <<-EOF
+       > ok 1 - passing test
+       > not ok 2 - pretend we have a known breakage # TODO known breakage
+       > # still have 1 known breakage(s)
+       > # passed all remaining 1 test(s)
+       > 1..2
+       EOF
+"
+
 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'
@@ -98,6 +155,59 @@ test_expect_success 'pretend we have fixed a known 
breakage' "
        EOF
 "
 
+test_expect_success 'pretend we have a pass, fail, and known breakage' "
+       run_sub_test_lib_test_expecting_failures mixed-results1 'mixed results 
#1' <<-EOF &&
+       test_expect_success 'passing test' 'true'
+       test_expect_success 'failing test' 'false'
+       test_expect_failure 'pretend we have a known breakage' 'false'
+       test_done
+       EOF
+       check_sub_test_lib_test mixed-results1 <<-EOF
+       > ok 1 - passing test
+       > not ok 2 - failing test
+       > #     false
+       > not ok 3 - pretend we have a known breakage # TODO known breakage
+       > # still have 1 known breakage(s)
+       > # failed 1 among remaining 2 test(s)
+       > 1..3
+       EOF
+"
+
+test_expect_success 'pretend we have a mix of all possible results' "
+       run_sub_test_lib_test_expecting_failures mixed-results2 'mixed results 
#2' <<-EOF &&
+       test_expect_success 'passing test' 'true'
+       test_expect_success 'passing test' 'true'
+       test_expect_success 'passing test' 'true'
+       test_expect_success 'passing test' 'true'
+       test_expect_success 'failing test' 'false'
+       test_expect_success 'failing test' 'false'
+       test_expect_success 'failing test' 'false'
+       test_expect_failure 'pretend we have a known breakage' 'false'
+       test_expect_failure 'pretend we have a known breakage' 'false'
+       test_expect_failure 'pretend we have fixed a known breakage' 'true'
+       test_done
+       EOF
+       check_sub_test_lib_test mixed-results2 <<-EOF
+       > ok 1 - passing test
+       > ok 2 - passing test
+       > ok 3 - passing test
+       > ok 4 - passing test
+       > not ok 5 - failing test
+       > #     false
+       > not ok 6 - failing test
+       > #     false
+       > not ok 7 - failing test
+       > #     false
+       > not ok 8 - pretend we have a known breakage # TODO known breakage
+       > not ok 9 - pretend we have a known breakage # TODO known breakage
+       > ok 10 - pretend we have fixed a known breakage # TODO known breakage
+       > # fixed 1 known breakage(s)
+       > # still have 2 known breakage(s)
+       > # failed 3 among remaining 8 test(s)
+       > 1..10
+       EOF
+"
+
 test_set_prereq HAVEIT
 haveit=no
 test_expect_success HAVEIT 'test runs if prerequisite is satisfied' '
-- 
1.7.12.147.g6d168f4

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to