chiark / gitweb /
Add start of regression testing of packages
authorFredrik Fornwall <fredrik@fornwall.net>
Tue, 10 May 2016 18:43:31 +0000 (20:43 +0200)
committerFredrik Fornwall <fredrik@fornwall.net>
Tue, 10 May 2016 18:43:31 +0000 (20:43 +0200)
Current plan is to have a tests/ folder in packages, where each
file in this folder is a shell script which indicates a test
failure by a non-zero exit value.

packages/ruby/tests/default_encoding_isutf8.sh [new file with mode: 0644]
packages/ruby/tests/extension_modules_installed.sh [new file with mode: 0644]
scripts/test-runner.sh [new file with mode: 0755]

diff --git a/packages/ruby/tests/default_encoding_isutf8.sh b/packages/ruby/tests/default_encoding_isutf8.sh
new file mode 100644 (file)
index 0000000..87796c1
--- /dev/null
@@ -0,0 +1 @@
+assert_equals '#<Encoding:UTF-8>' `ruby -e 'p Encoding.default_external'`
diff --git a/packages/ruby/tests/extension_modules_installed.sh b/packages/ruby/tests/extension_modules_installed.sh
new file mode 100644 (file)
index 0000000..d04b61c
--- /dev/null
@@ -0,0 +1,2 @@
+ruby -e "require 'readline'"
+ruby -e "require 'openssl'"
diff --git a/scripts/test-runner.sh b/scripts/test-runner.sh
new file mode 100755 (executable)
index 0000000..e486816
--- /dev/null
@@ -0,0 +1,42 @@
+#!/data/data/com.termux/files/usr/bin/bash
+
+if [ $# != 1 ]; then
+        echo "Specify package to run tests for as only argument"
+        exit 1
+fi
+
+PACKAGE=$1
+TEST_DIR=packages/$PACKAGE/tests
+
+if [ ! -d $TEST_DIR ]; then
+        echo "ERROR: No tests folder for package $PACKAGE"
+        exit 1
+fi
+
+NUM_TESTS=0
+NUM_FAILURES=0
+
+for TEST_SCRIPT in $TEST_DIR/*; do
+        test -t 1 && printf "\033[32m"
+        echo "Running test ${TEST_SCRIPT}..."
+        (( NUM_TESTS += 1 ))
+        test -t 1 && printf "\033[31m"
+        (
+                assert_equals() {
+                        FIRST=$1
+                        SECOND=$2
+                        if [ "$FIRST" != "$SECOND" ]; then
+                                echo "assertion failed - expected '$FIRST', got '$SECOND'"
+                                exit 1
+                        fi
+                }
+                set -e -u
+                . $TEST_SCRIPT
+        )
+        if [ $? != 0 ]; then
+                (( NUM_FAILURES += 1 ))
+        fi
+        test -t 1 && printf "\033[0m"
+done
+
+echo "$NUM_TESTS tests run - $NUM_FAILURES failure(s)"