#!/bin/sh SAMPLES=$(find playground/samples -name "*.newt") # NEWT ="bun run newt.js" NEWT=${NEWT:="node newt.js"} OUTFILE=${OUTFILE:="tmp/out.js"} RUNOUT=${RUNOUT:="node"} mkdir -p tmp total=0 failed=0 for fn in tests/*.newt ; do total=$((total + 1)) echo Test $fn bn=$(basename $fn) if [ -f ${fn}.golden ]; then $NEWT $fn -o $OUTFILE > tmp/${bn}.compile else # we've dropped support for compiling things without main for now. $NEWT $fn > tmp/${bn}.compile fi cerr=$? if [ -f ${fn}.fail ]; then if ! diff -q tmp/${bn}.compile ${fn}.fail; then echo "Compile failure mismatch for $fn" diff ${fn}.fail tmp/${bn}.compile failed=$((failed + 1)) if [ x$1 = "x--fix" ]; then cp tmp/${bn}.compile ${fn}.fail fi continue fi elif [ $cerr != "0" ]; then echo Compile failed for $fn failed=$((failed + 1)) cat tmp/${bn}.compile continue fi # if there is a golden file, run the code and compare output if [ -f ${fn}.golden ]; then $RUNOUT $OUTFILE > tmp/${bn}.out if [ $? != "0" ]; then echo Run failed for $fn failed=$((failed + 1)) continue fi if ! diff -q tmp/${bn}.out ${fn}.golden; then echo "Output mismatch for $fn" diff ${fn}.golden tmp/${bn}.out failed=$((failed + 1)) if [ x$1 = "x--fix" ]; then cp tmp/${bn}.out ${fn}.golden fi fi fi done echo "Total tests: $total" echo "Failed tests: $failed"