|
From: lacton <la...@us...> - 2008-03-24 12:57:56
|
Update of /cvsroot/shunit/ShUnit In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv7793 Added Files: shUnitAcceptanceTest Log Message: [add] Added high-level acceptance tests. --- NEW FILE: shUnitAcceptanceTest --- #! /usr/bin/env sh # # Acceptance tests for ShUnit that should work with all Bourne derived shells. # Any failing test here should be considered a portability defect. # # # Test Cases # Suite() { shuRegTest TestNoTest shuRegTest Test1SuccessfulTest shuRegTest Test1FailingTest shuRegTest Test2SuccessfulTests shuRegTest Test1SuccessAnd1FailureInTheSameTest shuRegTest Test1SuccessAnd1FailureInDifferentTests shuRegTest TestShuStartWith2Arguments } TestNoTest() { for shell in $available_shells do stdout=`runEmbeddedTest $shell "Suite() { :; }"` # shuDeny "Expected error exit code with $shell" $? # TODO assertContains 'No tests to run' "$stdout" "$shell" done } Test1SuccessfulTest() { for shell in $available_shells do stdout=`runEmbeddedTest $shell " SuccessfulTest() { shuAssert 'Always true' 0; } Suite() { shuRegTest SuccessfulTest; }"` shuAssert "Expected successful exit code with $shell" $? assertContains '1 test succeeded.' "$stdout" "$shell" assertContains 'No tests failed.' "$stdout" "$shell" done } Test1FailingTest() { for shell in $available_shells do stdout=`runEmbeddedTest $shell " FailingTest() { shuAssert 'Always false' 1; } Suite() { shuRegTest FailingTest; }"` # shuDeny "Expected error exit code with $shell" $? # TODO assertContains 'No tests succeeded.' "$stdout" "$shell" assertContains '1 test failed.' "$stdout" "$shell" done } Test2SuccessfulTests() { for shell in $available_shells do stdout=`runEmbeddedTest $shell " FirstSuccessfulTest() { shuAssert 'Always true' 0; } SecondSuccessfulTest() { shuAssert 'Always true' 0; } Suite() { shuRegTest FirstSuccessfulTest; shuRegTest SecondSuccessfulTest; }"` shuAssert "Expected successful exit code with $shell" $? assertContains '2 tests succeeded.' "$stdout" "$shell" assertContains 'No tests failed.' "$stdout" "$shell" done } Test1SuccessAnd1FailureInTheSameTest() { for shell in $available_shells do stdout=`runEmbeddedTest $shell " TestWithASuccessAndAFailure() { shuAssert 'Always false' 1 shuAssert 'Always true' 0 } Suite() { shuRegTest TestWithASuccessAndAFailure; }"` # shuDeny "Expected error exit code with $shell" $? # TODO assertContains 'No tests succeeded.' "$stdout" "$shell" assertContains '1 test failed.' "$stdout" "$shell" done } Test1SuccessAnd1FailureInDifferentTests() { for shell in $available_shells do stdout=`runEmbeddedTest $shell " SuccessfulTest() { shuAssert 'Always true' 0; } FailingTest() { shuAssert 'Always false' 1; } Suite() { shuRegTest SuccessfulTest; shuRegTest FailingTest; }"` # shuDeny "Expected error exit code with $shell" $? # TODO assertContains '1 test succeeded.' "$stdout" "$shell" assertContains '1 test failed.' "$stdout" "$shell" done } TestShuStartWith2Arguments() { for shell in $available_shells do shuStartWith2Arguments() { $shell <<-EOF Test1() { shuAssert 'Always true' 0; } Suite1() { shuRegTest Test1; } Suite2() { shuRegTest Test1; } . "$SHUNIT_HOME/shUnit" shuStart Suite1 Suite2 EOF } stdout=`shuStartWith2Arguments 2>/dev/null` stderr=`shuStartWith2Arguments 2>&1 >/dev/null` shuDeny "Exit code should be KO" $? test "" = "$stdout" shuAssert "Standard output should be empty" $? test "shuStart: invalid number of arguments -- 2" = "$stderr" shuAssert "Error message" $? done } # # Support Functions # assertContains() { expected_substring="$1" actual_string="$2" shell="$3" echo "$actual_string" | grep -q "$expected_substring" shuAssert "Expected '$expected_substring' with $shell" $? } getAvailableShellsAmong() { known_shells="$1" for shell in $known_shells do if (exec $shell -c exit 2>/dev/null) then echo -n "$shell " fi done } runEmbeddedTest() { shell="$1" embedded_script="$2" $shell <<-EOF $embedded_script . "$SHUNIT_HOME/shUnit" shuStart Suite EOF } # # Main # available_shells=`getAvailableShellsAmong "sh bash ksh93 pdksh ash dash"` echo "Available shells: $available_shells" >&2 . "$SHUNIT_HOME/shUnit" shuStart Suite |