#!/bin/sh if [ "$1" != "" ]; then cd $1 fi testin=test.in testdb=test.cdc expected=expected binary=binary output=output prog="$$prog" trap "rm -rf $testdb $expected $binary $output $prog; exit" 0 1 2 echo -n "Testing..." perl -e 'while (<>) { if (s/^\t//) { if (s/^Output: // || s/^\t//) { print STDOUT; } } else { print STDERR; } }' < $testin 1> $expected 2> $testdb ./coldcc -o -W -t $testdb 1> $output 2>/dev/null ## temporary hack until I fix the problems with output files in ## coldcc perl -e 'while (<>) { (!/^\r/) && print; }' < $output > ${output}.tmp mv ${output}.tmp $output if cmp -s $expected $output; then echo "All Tests pass." exit fi echo "FAILURE...The following test(s) failed:" echo ' open(EXP, "expected") || die("open(expected): $!\n"); $eline = 0; $test = ""; $nextpos = <STDIN>; while (!eof(STDIN)) { $pos = $nextpos; $exp = ""; $rec = ""; while (<STDIN>) { if (s/^([<>-])//) { if ($1 eq "<") { $exp .= " $_"; } elsif ($1 eq ">") { $rec .= " $_"; } } else { $nextpos = $_; last; } } $xpos = int($pos); if ($eline < $xpos) { while (<EXP>) { $eline++; if ($eline >= $pos) { last; } if (!/^\s/) { chop($test = $_); } } } print "-- ${test}\n Expected:\n${exp} Received:\n${rec}"; }' > $prog diff $expected $output | perl $prog