#!/bin/bash #---------------------------------------------------------------------- # Test suite for InterIMAP # Copyright © 2019 Guilhem Moulin # # 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 . #---------------------------------------------------------------------- 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