#! /bin/bash
filename=/tmp/$$; file_count=0; short=0; long=0
while [ $ case $1 in -*) echo $1 > $filename; opt=`sed 's/-//' $filename`; eval "$opt=1" ;;
*) ((file_count++)); eval "log$file_count=$1" ;;
esac; shift;
done
echo "old: $log1
new: $log2
"
if [ $file_count -gt 1 ]; then
failed_self_test1=`grep "WARNING: Couldn't test self" $log1 | wc -l`
failed_self_test2=`grep "WARNING: Couldn't test self" $log2 | wc -l`
if ([ $failed_self_test1 -eq 0 ] && [ $failed_self_test2 -ne 0 ]) || ([ $failed_self_test1 -ne 0 ] && [ $failed_self_test2 -eq 0 ])
then echo "NOTE: self testing failed in one of these runs - probably because one of the gdb's is a release build. So gdb test summary numbers for the two runs won't match up."
fi
fi
if [ $long -eq 1 ]; then
test_types="KPASS XPASS PASS KFAIL FAIL XFAIL UNRESOLVED UNTESTED UNSUPPORTED"
else test_types="FAIL UNRESOLVED UNTESTED UNSUPPORTED"; fi
for test_type in $test_types; do
grep "^$test_type:" $log1 > $filename.1
if [ $file_count -gt 1 ]; then
grep "^$test_type:" $log2 > $filename.2
diff $filename.1 $filename.2 | grep '^>' > $filename.3
else
cat $filename.1 > $filename.3
fi
count=`cat $filename.3 | wc -l`
if [ $count -ne 0 ]; then echo "
New $test_type""s: $count
----------------------------------"
if [ $file_count -gt 1 ]; then
if [ $short -eq 1 ]; then
sed "s/^> $test_type: //" $filename.3 | sed "s/:.*$//" | uniq
else sed "s/^> $test_type: //" $filename.3; fi
else
if [ $short -eq 1 ]; then
sed "s/^$test_type: //" $filename.3 | sed "s/:.*$//" | uniq
else sed "s/^$test_type: //" $filename.3; fi
fi
fi
rm -f $filename.1 $filename.2 $filename.3
done
if [ $long -ne 0 ]; then
echo "
ERRORs:`grep ERROR: $log1 | wc -l`
-----------------------"
grep ERROR: $log1
echo "
WARNINGs:`grep WARNING: $log1 | wc -l`
-----------------------"
grep WARNING: $log1
else
echo "
ERRORs:`grep ERROR: $log1 | wc -l`
-----------------------
WARNINGs:`grep WARNING: $log1 | wc -l`
-----------------------"
fi