diff options
Diffstat (limited to 'res/test-ck')
-rwxr-xr-x | res/test-ck | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/res/test-ck b/res/test-ck new file mode 100755 index 0000000..423d3bd --- /dev/null +++ b/res/test-ck @@ -0,0 +1,112 @@ +#!/bin/bash + +BIN=$(realpath @CMAKE_BINARY_DIR@) # solve symlink problems +TEST_LOCATION=$(realpath @PROJECT_TESTING_GROUNDS@) + +# used in regression tests +function running { + echo "[$COUNT/$TOTAL] testing $1" + ((++COUNT)) +} + +# used in regression tests +function init { + running $1 + mkdir -p $TEST_LOCATION/vc + mkdir $TEST_LOCATION/sec + + exec $BIN/ck conf $BIN init $TEST_LOCATION/vc $TEST_LOCATION/sec > /dev/null & + wait $! +} + +function add_config { + echo -e "test $2\n$3" > $2 + exec $BIN/ck -c $BIN -a $1 $2 > /dev/null & + wait $! + + if [ $? -ne 0 ]; then + err "ck crashed." + fi +} + +function clear_tests { + rm $BIN/ckrc + rm $BIN/ckdb + rm $BIN/test*.conf + rm -rf $TEST_LOCATION +} + +function unit_tests { + echo -e "Unit Tests:" + echo -e "~~~~~~~~~~~" + ./ck-test +} + +function regression_tests { + echo -e "Regression Tests:" + echo -e "~~~~~~~~~~~~~~~~~" + DIR=@BIN_TESTS_DIR@ + COUNT=1 + TOTAL=$(ls $DIR | wc -l) + for i in $(ls $DIR); do + ERROR="TEST "$i" FAILED:" + PASS="=> $i passed\n" + source $DIR/$i + wait $! + done +} + +function err { + echo -e "$ERROR $1" + clear_tests + exit 1 +} + +function run { + unit_tests + regression_tests +} + +function print_help { + echo -e "ck test suite" + echo -e "use without flags to run all tests" + echo -e "\nflags:" + echo -e " -u, --unit\t\trun only the unit tests" + echo -e " -r, --regression\trun only the regression tests" + echo -e " -c, --clear\t\tremove test files" + echo -e " \t\t use if the tests crush unexpectedly" + echo -e " -h, --help, *\t\tprint this" + exit +} + +if [[ $# -gt 1 ]]; then + print_help +fi + +while [[ $# -gt 0 ]] +do + key="$1" + case $key in + -h | --help) + print_help + ;; + -c | --clear) + clear_tests + exit + ;; + -u | --unit) + unit_tests + exit + ;; + -r | --regression) + regression_tests + exit + ;; + *) # unknown option + print_help + exit + ;; + esac +done + +run |