#!/usr/bin/env bash

cd "${0%/*}"

. ./mo
PASS=0
FAIL=0

for TEST in tests/*.expected; do
    export BASE="${TEST%.expected}"
    export MO_FALSE_IS_EMPTY=

    echo -n "$BASE ... "

    (
        if [[ -f "${BASE}.sh" ]]; then
            # Run a shell script if one exists
            "${BASE}.sh"
        else
            # Fall back to using .env and .template
            . "${BASE}.env"
            echo "Do not read this input" | mo "${BASE}.template"
        fi
    ) | diff -wU5 - "${TEST}" > "${BASE}.diff"

    if [[ $? -ne 0 ]]; then
        echo "FAIL"
        FAIL=$(( FAIL + 1 ))
    else
        echo "ok"
        PASS=$(( PASS + 1 ))
        rm "${BASE}.diff"
    fi
done

echo ""
echo "Pass:  $PASS"
echo "Fail: $FAIL"
[[ $FAIL -gt 0 ]] && exit 1