1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
#!/bin/bash
#
# Take all of the .sum files from two directories and generate the differences
#
# Example:
# difftests.sh \
# build/gcc-4.6+svn173209/logs/armv7l-maverick-cbuild113-ursa3-cortexa9r1 \
# build/gcc-4.6+svn173722/logs/armv7l-maverick-cbuild114-ursa4-cortexa9r1
#
set -e
base=$1
next=$2
dir=`mktemp -d difftests.XXXXXXXXXX`
trap "rm -rf $dir" EXIT
mkdir -p $dir/base
mkdir -p $dir/next
# Copy across all logs
cp $base/*.sum* $dir/base
cp $next/*.sum* $dir/next
unxz -f $dir/base/*.xz $dir/next/*.xz
# Pull out jus the PASS/FAIL/etc lines and sort by test name
# * Change absolute path names to .../
# * Drop all limits tests
#
for i in `find $dir -name "*.sum"`; do
grep -E '^[A-Z]+:' $i \
| grep -Ev limits- \
| grep -Ev /guality/ \
| sed -r 's#/scratch/\w+/\w+/\w+/\w+/[^/]+#...#g' \
| sed -r "s#UNSUPPORTED: .+/testsuite/#UNSUPPORTED: #" \
| sort -k 2 > $i.tmp
mv $i.tmp $i
done
# diff returns non-zero if there is a difference
set +e
(cd $dir && diff -U 0 -r base next) > $dir/diff.txt
# Drop anything but changes in test lines
grep -E '^[+-][A-Z]' $dir/diff.txt || true
|