| #!/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' ****************************" |
| ) |