#!/bin/sh
# Help:
#   $1 - make target
#   $2 - number: expected make exit code
#   $3 - path: expected make target log file
#   $4 - path: test make target log file
#   $5 - 1/0 - [Optional]: 1 == diff only exceptions from main()
#

make $1
EC=$?

if [ $EC -ne $2 ]; then
    echo "Expected exit code $2 but got $EC"
    exit 1
fi

TMP_RESULT=`mktemp /tmp/abrt_java_connector.XXXXXXX`

if [ -n "$5" ] && [ 1 -eq $5 ]; then
    tac $4 | awk \
'BEGIN             { main = 0; pfx = "" }
/^(Unc|C)aught/    { if (main == 1) { print $0; main = 0 } }
                   { if (main == 1) { print $0 } }
/\s*at .*\.main\(/ { if (main == 0) { print pfx$0; main = 1 } }
                   { pfx = "" }
/^executable:/     { pfx = $0"\n" }' | tac > $TMP_RESULT
else
    cp $4 $TMP_RESULT
fi

JAVA_RTLIB_PATH=`sed -n "s/^.*\(jar:file:\)\(.*\)\(\/rt.jar\!.*\).*$/\2/p" $TMP_RESULT | head -1`

if [ -n "$JAVA_RTLIB_PATH" ]; then
    sed -i "s,"$JAVA_RTLIB_PATH",JAVA_AND_SYSTEM_SPECIFIC_PATH," $TMP_RESULT
    sed -i "s/\(\.java:\)[0-9]\+\() \[.*JAVA_AND_SYSTEM_SPECIFIC_PATH\)/\1LINENO\2/" $TMP_RESULT
fi

diff -u $3 $TMP_RESULT
EC=$?

if [ 0 -ne $EC ]; then
    echo "Expected $3 differs from result $TMP_RESULT(origin $4)"
    exit 1
fi

rm -f $TMP_RESULT
exit 0
