The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/bin/csh -f

# shell program to test rank.pl's response to erroneous conditions. 

# Subtest 1: Check what happens when source file cannot be opened.

echo "Subtest 1: When source file cannot be opened."
echo ""

# required error output file
set TARGETFILE = "test-2.sub-1.reqd"

if (!(-e $TARGETFILE)) then
    echo "File $TARGETFILE does not exist... aborting"
    exit
endif

# now the test!
echo "Test:   rank.pl boo >& error.out" 
rank.pl boo >& error.out

# compare the actual output with the required output
diff error.out $TARGETFILE > difference
if (-z difference) then
    echo "Status: OK\!\! Output matches target output (as provided in $TARGETFILE)"
else
    echo "Status: ERROR\!\! Following differences exist between test-1.out and $TARGETFILE :"
    cat difference
endif

echo ""

/bin/rm -f difference 
/bin/rm -f error.out

# Subtest 2: When two files haven't been provided. 

echo "Subtest 2: When two files have not been provided."
echo ""

# a test file is required
set TESTFILE = "test-1-1.txt"

if (!(-e $TESTFILE)) then
    echo "File $TESTFILE does not exist... aborting"
    exit
endif

# required error output file
set TARGETFILE = "test-2.sub-2.reqd"

if (!(-e $TARGETFILE)) then
    echo "File $TARGETFILE does not exist... aborting"
    exit
endif

# now the test!
echo "Test:   rank.pl $TESTFILE >& error.out" 
rank.pl $TESTFILE >& error.out

# compare the actual output with the required output
diff error.out $TARGETFILE > difference
if (-z difference) then
    echo "Status: OK\!\! Output matches target output (as provided in $TARGETFILE)"
else
    echo "Status: ERROR\!\! Following differences exist between test-1.out and $TARGETFILE :"
    cat difference
endif

echo ""

/bin/rm -f difference 
/bin/rm -f error.out