From 8865f7a28e40b82f98e944c8e7dbd67b56428bbc Mon Sep 17 00:00:00 2001 From: Stef Walter Date: Fri, 14 Mar 2008 14:40:47 +0000 Subject: Add unit tests --- tests/prep-tests.sh | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100755 tests/prep-tests.sh (limited to 'tests/prep-tests.sh') diff --git a/tests/prep-tests.sh b/tests/prep-tests.sh new file mode 100755 index 0000000..bdceb11 --- /dev/null +++ b/tests/prep-tests.sh @@ -0,0 +1,114 @@ +#!/bin/sh -e + +set -e + +# -------------------------------------------------------------------- +# FUNCTIONS + +usage() +{ + echo "usage: prep-tests.sh -b base-name files.c ..." >&2 + exit 2 +} + +# -------------------------------------------------------------------- +# ARGUMENT PARSING + +BASE=unit-test + +while [ $# -gt 0 ]; do + case "$1" in + -b) + BASE="$2" + shift + ;; + --) + shift + break + ;; + -*) + usage + ;; + *) + break + ;; + esac + shift +done + +FILES=$* + +# -------------------------------------------------------------------- +# HEADER FILE + +( + +# HEADER TOP +cat << END +/* This is auto-generated code. Edit at your own peril. */ +#include "tests/cu-test/CuTest.h" +#include "tests/test-helpers.h" +#include + +END + +# DECLARATIONS + + if [ -n "$FILES" ]; then + cat $FILES | grep '^void unit_setup_' | sed -e 's/$/;/' + cat $FILES | grep '^void unit_test_' | sed -e 's/$/;/' + cat $FILES | grep '^void unit_teardown_' | sed -e 's/$/;/' + fi + +) > $BASE.h + +# -------------------------------------------------------------------- +# SOURCE FILE + +( +# START RUNNER FUNCTION +cat << END +/* This is auto-generated code. Edit at your own peril. */ +#include "$BASE.h" + +static int RunAllTests(void) +{ + CuString *output = CuStringNew(); + CuSuite* suite = CuSuiteNew(); + +END + + if [ -n "$FILES" ]; then + cat $FILES | grep '^void unit_setup_' | \ + sed -e 's/^void //' -e 's/(.*$//' -e 's/$/();/' + cat $FILES | grep '^void unit_test_' | \ + sed -e 's/^void //' -e 's/(.*$//' \ + -e 's/^/SUITE_ADD_TEST(suite, /' -e 's/$/);/' + fi + +# MIDDLE RUNNER FUNCTION +cat << END + CuSuiteRun(suite); + CuSuiteSummary(suite, output); + CuSuiteDetails(suite, output); + printf("%s\\n", output->buffer); +END + + if [ -n "$FILES" ]; then + + cat $FILES | grep '^void unit_teardown_' | \ + sed -e 's/^void //' -e 's/(.*$//' -e 's/$/();/' + + fi + +# END RUNNER FUNCTION +cat << END + + return suite->failCount; +} + +#include "tests/test-helpers.c" +#include "tests/cu-test/CuTest.c" +END +) > $BASE.c + -- cgit v1.2.3