diff --git a/urchin b/urchin index bb4516c..fe0fe29 100755 --- a/urchin +++ b/urchin @@ -121,7 +121,7 @@ recurse() { fi exit_code="$?" set -e - stop=$(date +%s) + finish=$(date +%s) urchin_source teardown if [ $exit_code -eq 0 ]; then @@ -135,7 +135,8 @@ recurse() { result=skip fi - printf "${potential_test}: ${result}\n" >> "$tmp"/log + elapsed=$(($finish - $start)) + printf "${potential_test}: ${result} ${elapsed} seconds\n" >> "$tmp"/log if $exit_on_fail && test 0 -ne $exit_code; then return 1 fi @@ -145,28 +146,30 @@ recurse() { report_outcome() { tap_format="$1" log_file="$2" + start="$3" + finish="$4" + elapsed=$(($finish - $start)) - # XXX just copied from elsewhere and thus broken - if "$tap_format"; then - printf \#\ - fi - echo Running tests at $(date +%Y-%m-%dT%H:%M:%S) - start=$(date +%s) +# if "$tap_format"; then +# printf \#\ +# fi +# echo Running tests at $(date +%Y-%m-%dT%H:%M:%S) n=0 sort "$log_file" | while read line; do - regex='^\(.*\): \(success\|skip\|fail\)$' + regex='^\(.*\): \(success\|skip\|fail\) \([0-9]*\) seconds$' path=$(echo "$line" | sed "s/$regex/\1/") result=$(echo "$line" | sed "s/$regex/\2/") + file_elapsed=$(echo "$line" | sed "s/$regex/\3/") n=$(($n + 1)) -# if $tap_format; then -# indent $indent_level | sed 's/ /#/g' -# echo "# Begin - ${path}" -# else -# indent $indent_level -# echo "+ ${path}" -# fi + # if $tap_format; then + # indent $indent_level | sed 's/ /#/g' + # echo "# Begin - ${path}" + # else + # indent $indent_level + # echo "+ ${path}" + # fi if $tap_format; then if [ "$result" == fail ]; then @@ -175,58 +178,51 @@ report_outcome() { not='' fi if [ "$result" == skip ]; then - skip='# SKIP ' + skip='SKIP ' else skip='' fi - echo "${not}ok $n - ${skip}${path}" + echo "${not}ok $n - # ${skip}${path}" if [ "$result" == fail ]; then echo '# ------------ Begin output ------------' # sed 's/^/# /' "$stdout_file" echo '# ------------ End output ------------' fi -# else -# indent $indent_level -# case "$result" in -# success) -# # On success, print a green '✓' -# printf '\033[32m✓ \033[0m' -# printf '%s\n' "${potential_test}" -# ;; -# fail) -# # On fail, print a red '✗' -# printf '\033[31m✗ \033[0m' -# printf '%s\n' "${potential_test}" + echo "# Previous test took $file_elapsed seconds." + # else + # indent $indent_level + # case "$result" in + # success) + # # On success, print a green '✓' + # printf '\033[32m✓ \033[0m' + # printf '%s\n' "${potential_test}" + # ;; + # fail) + # # On fail, print a red '✗' + # printf '\033[31m✗ \033[0m' + # printf '%s\n' "${potential_test}" -# # Print output captured from failed test in red. -# printf '\033[31m' + # # Print output captured from failed test in red. + # printf '\033[31m' -# cat "$stdout_file" -# printf '\033[0m' -# ;; -# skip) -# printf ' %s\n' "${potential_test}" -# ;; -# esac + # cat "$stdout_file" + # printf '\033[0m' + # ;; + # skip) + # printf ' %s\n' "${potential_test}" + # ;; + # esac fi -# if $tap_format; then -# indent $indent_level | sed 's/ /#/g' -# echo "# End - ${potential_test}" -# else -# echo -# fi - - - + # if $tap_format; then + # indent $indent_level | sed 's/ /#/g' + # echo "# End - ${potential_test}" + # else + # echo + # fi done return - - - finish=$(date +%s) - elapsed=$(($finish - $start)) - set +e passed=$(grep -c '^success' "$logfile") failed=$(grep -c '^fail' "$logfile") @@ -359,15 +355,19 @@ if fullpath "$1" | grep -Fi 'test' > /dev/null || $force TEST_SHELL='/bin/sh' fi + start=$(date +%s) + set +e + # 1 test folder # 2 shell to invoke test scripts with # 3 TEST_SHELL - set +e recurse "$1" "$shell_for_sh_tests" "$TEST_SHELL" exit_code=$? - set -e - report_outcome true $tmp/log + set -e + finish=$(date +%s) + + report_outcome true $tmp/log $start $finish urchin_exit $exit_code else