#!/bin/sh ################################################## # A test script that uses ./runner.sh to run all # # tests for a given phase. # ################################################## function java() { base="$1" if [[ $(basename $base) == *.* ]]; then base="${base%.*}" fi expected=$(bash runner.sh java "${base}.java") } function match() { [[ "$1" == *"error"* ]] && expected="Type error" || expected="Program type checked successfully" } dir1="./output" dir2="" case "$1" in "heat") ext="java" comp="match" dir2="./output/negative" ;; "boil") ext="java" comp="java" ;; "vaporize") ext="vapor" comp="java" ;; "condense") ext="vaporm" comp="java" ;; *) echo "usage $0 [heat|boil|vaporize|condense]" exit 1 ;; esac for dir in "$dir1" "$dir2"; do if [ -n "$dir" ] && [ -d "$dir" ]; then for file in $dir/*.$ext; do [ -f "$file" ] || break base=${file%.*} echo -n "Processing file: $base " $comp $base actual=$(bash runner.sh $1 $file 2>/dev/null) [[ $expected == $actual ]] && echo 'PASSED' || echo -e "FAILED" done fi done