diff --git a/test.sh b/test.sh index 1eb25b1..c45ca75 100755 --- a/test.sh +++ b/test.sh @@ -17,22 +17,35 @@ set -euo pipefail -if [ -z "$1" ]; then - echo "Usage: test.sh " +DEFAULT_INPUT="src/test/resources/samples/*.txt" +FORK=${1:-""} +INPUT=${2:-$DEFAULT_INPUT} + +if [ "$#" -eq 0 ] || [ "$#" -gt 2 ] || [ "$FORK" = "-h" ]; then + echo "Usage: ./test.sh [input file pattern]" + echo + echo "For each test sample matching (default '$DEFAULT_INPUT')" + echo "runs implementation and diffs the result with the expected output." + echo "Note that optional should be quoted if contains wild cards." + echo + echo "Examples:" + echo "./test.sh baseline" + echo "./test.sh baseline src/test/resources/samples/measurements-1.txt" + echo "./test.sh baseline 'src/test/resources/samples/measurements-*.txt'" exit 1 fi -if [ -f "./prepare_$1.sh" ]; then - "./prepare_$1.sh" +if [ -f "./prepare_$FORK.sh" ]; then + "./prepare_$FORK.sh" fi -for sample in $(ls src/test/resources/samples/*.txt); do - echo "Validating calculate_average_$1.sh -- $sample" +for sample in $(ls $INPUT); do + echo "Validating calculate_average_$FORK.sh -- $sample" rm -f measurements.txt ln -s $sample measurements.txt - diff <("./calculate_average_$1.sh") ${sample%.txt}.out + diff <("./calculate_average_$FORK.sh") ${sample%.txt}.out done rm measurements.txt diff --git a/test_all.sh b/test_all.sh index e1141d7..eff975d 100755 --- a/test_all.sh +++ b/test_all.sh @@ -17,14 +17,30 @@ set -euo pipefail +INPUT=${1:-""} + +if [ "$INPUT" = "-h" ] || [ "$#" -gt 1 ]; then + echo "Usage: ./test_all.sh [input file pattern]" + echo + echo "For each available fork run ./test.sh [input file pattern]." + echo "Note that optional should be quoted if contains wild cards." + echo + echo "Examples:" + echo "./test_all.sh" + echo "./test_all.sh 2>/dev/null" + echo "./test_all.sh src/test/resources/samples/measurements-1.txt" + echo "./test_all.sh 'src/test/resources/samples/measurements-*.txt'" + exit 1 +fi + for impl in $(ls calculate_average_*.sh | sort); do noext="${impl%%.sh}" - name=${noext##calculate_average_} + fork=${noext##calculate_average_} - if output=$(./test.sh "$name" 2>&1); then - echo "PASS $name" + if output=$(./test.sh "$fork" "$INPUT" 2>&1); then + echo "PASS $fork" else - echo "FAIL $name" + echo "FAIL $fork" echo "$output" 1>&2 fi done