aboutsummaryrefslogtreecommitdiffstats
path: root/tests/run-all
diff options
context:
space:
mode:
authorGuilhem Moulin <guilhem@fripost.org>2019-11-09 03:13:45 +0100
committerGuilhem Moulin <guilhem@fripost.org>2019-11-13 06:23:56 +0100
commit67440844c422ee30b31df9a46a7f99ac0e833add (patch)
tree989381e5b94d5939dafdd1e99c7db2ada95355ec /tests/run-all
parentb9da6cc7ecf71026d1023dc3354b820c7518426e (diff)
Refactor and improve test suite.
Diffstat (limited to 'tests/run-all')
-rwxr-xr-xtests/run-all65
1 files changed, 65 insertions, 0 deletions
diff --git a/tests/run-all b/tests/run-all
new file mode 100755
index 0000000..1eca50c
--- /dev/null
+++ b/tests/run-all
@@ -0,0 +1,65 @@
+#!/bin/bash
+
+#----------------------------------------------------------------------
+# Test suite for InterIMAP
+# Copyright © 2019 Guilhem Moulin <guilhem@fripost.org>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#----------------------------------------------------------------------
+
+set -ue
+PATH=/usr/bin:/bin
+export PATH
+
+BASEDIR="$(dirname -- "$0")"
+RUN="$BASEDIR/run"
+
+failed=0
+
+while IFS="" read -r x; do
+ if [[ "$x" =~ ^([[:blank:]]*)([^[:blank:]#]+)[[:blank:]]+(.*)$ ]]; then
+ indent="${BASH_REMATCH[1]}"
+ t="${BASH_REMATCH[2]}"
+ desc="${BASH_REMATCH[3]}"
+
+ if [ "$t" = "." ]; then
+ printf "%s%s:\\n" "$indent" "$desc"
+ continue
+ elif [ "$t" = "..." ]; then
+ t="$desc"
+ desc="..."
+ fi
+ elif [[ "$x" =~ ^([[:blank:]]*)([^[:blank:]#]+)$ ]]; then
+ indent="${BASH_REMATCH[1]}"
+ t="${BASH_REMATCH[2]}"
+ unset desc
+ else
+ continue
+ fi
+
+ if [ ! -d "$BASEDIR/$t" ]; then
+ printf "WARN: %s does doesn't exist, skipping\\n" "$t" >&2
+ continue
+ fi
+
+ INDENT="$indent" "$RUN" "$t" ${desc+"$desc"} || failed=$(( failed+1 ))
+done <"$BASEDIR/list"
+
+if [ $failed -eq 0 ]; then
+ printf "All tests passed.\\n"
+ exit 0
+else
+ printf "%d test(s) failed.\\n" $failed
+ exit 1
+fi