aboutsummaryrefslogtreecommitdiffstats
path: root/res/test-ck
diff options
context:
space:
mode:
authorAnastasis Grammenos <anastasis.gramm2@gmail.com>2018-10-08 23:47:07 +0300
committerAnastasis Grammenos <anastasis.gramm2@gmail.com>2018-10-08 23:47:07 +0300
commitfe781e5ae7116733e5b335a0ac016af97266db5f (patch)
treed5cf6ebfc27b84745df5d6e3db04b04d0b524706 /res/test-ck
parentf67f2c3d5b67f54dae2c2c2754f43b4351445c80 (diff)
downloadck-fe781e5ae7116733e5b335a0ac016af97266db5f.tar.gz
ck-fe781e5ae7116733e5b335a0ac016af97266db5f.tar.bz2
ck-fe781e5ae7116733e5b335a0ac016af97266db5f.zip
Way better Edit
Diffstat (limited to 'res/test-ck')
-rwxr-xr-xres/test-ck112
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