Index: shUnit =================================================================== RCS file: /cvsroot/shunit/ShUnit/shUnit,v retrieving revision 1.14 diff -u -p -r1.14 shUnit --- shUnit 18 Mar 2006 04:53:18 -0000 1.14 +++ shUnit 14 Apr 2006 16:18:51 -0000 @@ -88,16 +88,59 @@ shuFmtNbrTests() { fi } +function shuPrintStartRun () { + # print out the start of a test run. + printf "\n****** `basename ${0}` ******\n" + printf "%s to run:\n" "$shuRetFmtNbrTests" +} + +function shuPrintStart () { + # print out the prelude to a single test + # $1 is the test name + # $2 the test number + printf " Test %i: %s " ${2} "${1}" +} + +function shuPrintAfter () { + # print out the result of a single test + # $1 is the test name + # SHU_STR_FAILED contains error text (if any) + printf "\n" + + if test -n "${SHU_STR_FAILED}" + then + + OLD_IFS="${IFS}" + IFS="^" + set -- ${SHU_STR_FAILED} + IFS="${OLD_IFS}" + while [ ${#} -gt 0 ] + do + printf " \"%s\" failed.\n" "${1}" + shift + done + fi +} + +function shuPrintAfterRun () { + # print out the result of the run + # $1 is the number of tests run + # $2 the pass count + # $3 the failure count. + printf "\n%s run.\n" "${1}" + printf " %s succeeded.\n" "${2}" + printf " %s failed.\n\n" "${3}" +} + shuStart() { strInitFunction="${1}" eval ${strInitFunction} - printf "\n****** `basename ${0}` ******\n" - SHU_TOTAL_NR_OF_TESTS=`echo ${SHU_STR_ALL_TESTS} | wc -w | sed -e 's/ *//'` shuFmtNbrTests "${SHU_TOTAL_NR_OF_TESTS}" - printf "%s to run:\n" "$shuRetFmtNbrTests" + + shuPrintStartRun SHU_TOTAL_NR_SUCCEEDED=0 shuTestNbr=0 @@ -105,33 +148,19 @@ shuStart() { do SHU_STR_FAILED="" shuTestNbr=`expr ${shuTestNbr} + 1` - printf " Test %i: %s " ${shuTestNbr} "${STR_TEST}" + shuPrintStart "${STR_TEST}" ${shuTestNbr} shuRunOneTest ${STR_TEST} - printf "\n" - - if test -n "${SHU_STR_FAILED}" - then - - OLD_IFS="${IFS}" - IFS="^" - set -- ${SHU_STR_FAILED} - IFS="${OLD_IFS}" - while [ ${#} -gt 0 ] - do - printf " \"%s\" failed.\n" "${1}" - shift - done - fi + shuPrintAfter "${STR_TEST}" done shuFmtNbrTests "${shuTestNbr}" - printf "\n%s run.\n" "${shuRetFmtNbrTests}" - + number_run="${shuRetFmtNbrTests}" shuFmtNbrTests "${SHU_TOTAL_NR_SUCCEEDED}" - printf " %s succeeded.\n" "${shuRetFmtNbrTests}" - + number_passed="${shuRetFmtNbrTests}" shuFmtNbrTests `expr ${shuTestNbr} - ${SHU_TOTAL_NR_SUCCEEDED}` - printf " %s failed.\n\n" "${shuRetFmtNbrTests}" + number_failed="${shuRetFmtNbrTests}" + + shuPrintAfterRun "${number_run}" "${number_passed}" "${number_failed}" } shuRegisterFailedTest() { Index: shUnitTest =================================================================== RCS file: /cvsroot/shunit/ShUnit/shUnitTest,v retrieving revision 1.16 diff -u -p -r1.16 shUnitTest --- shUnitTest 31 Dec 2005 06:35:29 -0000 1.16 +++ shUnitTest 14 Apr 2006 16:18:51 -0000 @@ -121,6 +121,53 @@ TestShuFmtNbrTests() { shuAssert "Failed test case 100 returned [$shuRetFmtNbrTests]" $? } + +TestShuPrintStartRun() { + # when not using subunit, print output an idea of what tests will run before starting. + expected=$(printf "\n****** `basename ${0}` ******\n"; printf "%s to run:\n" "$shuRetFmtNbrTests") + result=$(shuPrintStartRun) + [ "x$expected" = "x$result" ] && pass=0 || pass=1 + shuAssert "Failed test case incorrect output [$result] wanted [$expected]" ${pass} +} + + +TestShuPrintStart() { + # when not using subunit, print output a human readable pre-test intro. + expected=$(printf " Test 1: phwoar ") + result=$(shuPrintStart phwoar 1) + [ "x$expected" = "x$result" ] && pass=0 || pass=1 + shuAssert "Failed test case incorrect output [$result] wanted [$expected]" ${pass} +} + + +TestShuPrintAfter() { + # when not using subunit, print the error text normally. + + # case one : passes + expected=$(printf "\n") + SHU_STR_FAILED="" + result=$(shuPrintAfter phwoar) + [ "x$expected" = "x$result" ] && pass=0 || pass=1 + shuAssert "Failed test case incorrect output [$result] wanted [$expected]" ${pass} + + # case two: errors + SHU_STR_FAILED=$(printf "some test\nmore text") + expected=$(printf "\n \"some test\nmore text\" failed.") + result=$(shuPrintAfter phwoar) + SHU_STR_FAILED="" + [ "x$expected" = "x$result" ] && pass=0 || pass=1 + shuAssert "Failed test case incorrect output [$result] wanted [$expected]" ${pass} +} + + +TestShuPrintAfterRun() { + # print out a summary of the tests run + expected=$(printf "\n5 run.\n 4 succeeded.\n 1 failed.\n\n") + result=$(shuPrintAfterRun 5 4 1) + [ "x$expected" = "x$result" ] && pass=0 || pass=1 + shuAssert "Failed test case incorrect output [$result] wanted [$expected]" ${pass} +} + InitFunction() { shuRegTest TestIntentionalFailure shuRegTest TestShuRegisterFailedTest @@ -130,6 +177,10 @@ InitFunction() { shuRegTest TestShuRunOneTest shuRegTest TestSetupCalledCorrectly shuRegTest TestShuFmtNbrTests + shuRegTest TestShuPrintStartRun + shuRegTest TestShuPrintAfterRun + shuRegTest TestShuPrintStart + shuRegTest TestShuPrintAfter } --- /dev/null 2006-03-28 06:29:48.000000000 +1100 +++ shUnitSubUnit 2006-04-15 02:17:38.000000000 +1000 @@ -0,0 +1,74 @@ +################################################################################ +# shUnit subunit integration +# original by Robert Collins +# $Source: $ +# $Id: $ +################################################################################ +# + +. subunit.sh + +function shuPrintStartRun () { + # print out the start of a test run. This prints nothing + # when using subunit, because we are no longer doing the UI. + : +} + +function shuPrintAfterRun () { + # print out the end of a test run. This prints nothing + # when using subunit, because we are no longer doing the UI. + : +} + +function shuPrintStart () { + # print out the prelude to a single test + # $1 is the test name + # $2 the test number + subunit_start_test "${1}" +} + +function shuPrintAfter () { + # print out the result of a single test + # $1 is the test name + # SHU_STR_FAILED contains error text (if any) + test_name="${1}" + if test -n "${SHU_STR_FAILED}" + then + + OLD_IFS="${IFS}" + IFS="^" + set -- ${SHU_STR_FAILED} + subunit_fail_test "${test_name}" <<<${SHU_STR_FAILED} + IFS="${OLD_IFS}" + else + subunit_pass_test "${1}" + fi +} + + +shuAssert() { + # override assert to be quiet. + strMessage="${1:-}" + boolResult="${2:-${SHU_FALSE}}" + + if [ ${boolResult} -ne ${SHU_TRUE} ] + then + shuRegisterFailedTest "${strMessage}" + else + SHU_TEST_SUCCEEDED=${SHU_TRUE} + fi +} + +shuDeny() { + # override deny to be quiet. + strMessage="${1:-}" + boolResult="${2:-${SHU_TRUE}}" + + if [ ${boolResult} -eq ${SHU_TRUE} ] + then + shuRegisterFailedTest "${strMessage}" + else + SHU_TEST_SUCCEEDED=${SHU_TRUE} + fi +} + --- /dev/null 2006-03-28 06:29:48.000000000 +1100 +++ shUnitSubUnitTest 2006-04-15 02:18:19.000000000 +1000 @@ -0,0 +1,99 @@ +#! /usr/bin/env sh +# Tests for the subunit client UI. +################################################################################ +# $Id: $ +################################################################################ + +# +# find the shUnit file using the command as a reference +# +inherit() { + d=`expr ${0} : '\([a-zA-Z/._-]*\/\)'` + test `expr "$d" : '[./]'` -eq 0 && d="./$d" + . ${d}${1} +} + +inherit shUnit +inherit shUnitSubUnit + + +shuSetUp() { + touch ./test.$$ +} + +shuTearDown() { + [ -f ./test.$$ ] && rm ./test.$$ +} + +TestShuAssert() { + shuAssert "" "${SHU_TRUE}" + shuAssert "Test case ${SHU_TRUE} failed" "${SHU_TRUE}" +} + +TestShuDeny() { + shuDeny "" "${SHU_FALSE}" + shuDeny "return code ${SHU_FALSE} failed" "${SHU_FALSE}" + shuDeny "return code -1 failed" -1 + shuDeny "return code 222 failed" 222 +} + +TestShuPrintAfter() { + # for subunit, we delegate to subunit on pass and fail output. + + # case one : passes + expected=$(subunit_pass_test "Test 1") + SHU_STR_FAILED="" + result=$(shuPrintAfter "Test 1") + [ "x$expected" = "x$result" ] && pass=0 || pass=1 + shuAssert "Failed test case incorrect output [$result] wanted [$expected]" ${pass} + + # case two: errors + SHU_STR_FAILED=$(printf "some test\nmore text") + expected=$(subunit_fail_test "phwoar" <