| #!/bin/sh | |
| # | |
| # NAME | |
| # DiffOutput.sh | |
| # | |
| # SYNOPSIS | |
| # DiffOutput.sh <testtype> <testname> [<goodoutput>] | |
| # | |
| # DESCRIPTION | |
| # DiffOutput.sh looks for a file named Output/<testname>.out-<testtype> | |
| # and uses GNU diff to compare it against the file | |
| # Output/<testname>.out-<goodoutput>. This script is used to verify the | |
| # results of programs run in the LLVM test suite. By default, | |
| # <goodoutput> is "nat"; that is, test results are compared with output | |
| # from the program compiled with the native compiler. | |
| # If the files differ, DiffOutput.sh prints a portion of the | |
| # differences. | |
| # | |
| # EXIT STATUS | |
| # DiffOutput.sh always exits with a zero (successful) exit code. | |
| # | |
| # Command line parameters: | |
| WHICHOUTPUT=$1 | |
| PROG=$2 | |
| GOODOUTPUT=${3-nat} | |
| # Output filename: | |
| DIFFOUTPUT=Output/${PROG}.diff-${WHICHOUTPUT} | |
| # Input filenames: | |
| TESTOUTPUT=Output/${PROG}.out-${WHICHOUTPUT} | |
| GOODOUTPUT=Output/${PROG}.out-${GOODOUTPUT} | |
| # Find gnu diff | |
| DIFF=diff | |
| if which gdiff > /dev/null 2>&1 | |
| then | |
| where=`which gdiff 2>&1` | |
| if [ -x "$where" ] | |
| then | |
| DIFF=gdiff | |
| fi | |
| fi | |
| # Diff the two files. | |
| $DIFF -u $GOODOUTPUT $TESTOUTPUT > $DIFFOUTPUT || ( | |
| # They are different! | |
| echo "******************** TEST ($WHICHOUTPUT) '$PROG' FAILED! ********************" | |
| echo "Execution Context Diff:" | |
| head -n 200 $DIFFOUTPUT | cat -v | |
| rm $DIFFOUTPUT | |
| echo "******************** TEST ($WHICHOUTPUT) '$PROG' ****************************" | |
| ) |