#!/bin/bash # Arg 1: qb54 location PREFIX="Compilation" RESULTS_DIR="./tests/results/$PREFIX" mkdir -p $RESULTS_DIR QB64=$1 show_failure() { cat "$RESULTS_DIR/$1-compile_result.txt" cat "$RESULTS_DIR/$1-compilelog.txt" } show_incorrect_result() { printf "EXPECTED: '%s'\n" "$1" printf "GOT: '%s'\n" "$2" } for test in ./tests/compile_tests/* do test=$(basename "$test") TESTCASE="$test" EXE="$RESULTS_DIR/$test - output" # Clear out temp folder before next compile, avoids stale compilelog files rm -fr ./internal/temp/* "$QB64" -x "./tests/compile_tests/$test/test.bas" -o "$EXE" 1>"$RESULTS_DIR/$test-compile_result.txt" ERR=$? cp_if_exists ./internal/temp/compilelog.txt "$RESULTS_DIR/$test-compilelog.txt" (exit $ERR) assert_success_named "Compile" "Compilation Error:" show_failure "$test" test -f "$EXE" assert_success_named "exe exists" "$test-output executable does not exist!" show_failure "$test" if [ ! -f "./tests/compile_tests/$test/test.output" ]; then continue fi expectedResult="$(cat "./tests/compile_tests/$test/test.output")" pushd . > /dev/null cd "./tests/compile_tests/$test" testResult=$("../../../$EXE" 2>&1) ERR=$? popd > /dev/null (exit $ERR) assert_success_named "run" "Execution Error:" echo "$testResult" [ "$testResult" == "$expectedResult" ] assert_success_named "result" "Result is wrong:" show_incorrect_result "$expectedResult" "$testResult" done