#!/bin/bash

TEST_FILE_FULL="${!#}"
TEST_FILE="${!###*/}"
ARGUMENTS=$(echo "${1+"$@"}" | sed "s| \?$TEST_FILE_FULL||")
echo -n "Running test $TEST_FILE ($ARGUMENTS) ... "

function on_exit_trap() {
    if [ ! -z "$EXPECTED" ]; then
        rm -f "$EXPECTED"
    fi
    if [ ! -z "$ACTUAL" ]; then
        rm -f "$ACTUAL"
    fi
}

trap on_exit_trap EXIT
EXPECTED=$(tempfile --suffix=.expected)
ACTUAL=$(tempfile --suffix=.actual)

grep -v "^#" "$TEST_FILE_FULL" > "$EXPECTED"
eval "bin/test-executor $ARGUMENTS > '$ACTUAL'"

if ! diff -q "$ACTUAL" "$EXPECTED" > /dev/null; then
    echo "FAIL"
    echo ""
    diff -U5 "$ACTUAL" "$EXPECTED" | sed "s/^/    /"
    echo ""
    exit 1
else
    echo "PASS"
fi
