Blob


1 #!/bin/sh
3 diff_prog="../diff/diff"
5 diff_type=unidiff
7 verify_diff_script() {
8 orig_left="$1"
9 orig_right="$2"
10 the_diff="$3"
11 diff_opts="$4"
12 expected_diff="$5"
14 verify_left="verify.$orig_left"
15 verify_right="verify.$orig_right"
17 if [ -n "$diff_opts" ]; then
18 if ! cmp "$got_diff" "$expected_diff" ; then
19 echo "FAIL: $got_diff != $expected_diff"
20 return 1
21 fi
22 elif [ "x$diff_type" = "xunidiff" ]; then
23 cp "$orig_left" "$verify_right"
24 patch --quiet -u "$verify_right" "$the_diff"
25 if ! cmp "$orig_right" "$verify_right" ; then
26 echo "FAIL: $orig_right != $verify_right"
27 return 1
28 fi
30 cp "$orig_right" "$verify_left"
31 patch --quiet -u -R "$verify_left" "$the_diff"
32 if ! cmp "$orig_left" "$verify_left" ; then
33 echo "FAIL: $orig_left != $verify_left"
34 return 1
35 fi
36 else
37 tail -n +3 "$the_diff" | grep -v "^+" | sed 's/^.//' > "$verify_left"
38 tail -n +3 "$the_diff" | grep -v "^-" | sed 's/^.//' > "$verify_right"
40 if ! cmp "$orig_left" "$verify_left" ; then
41 echo "FAIL: $orig_left != $verify_left"
42 return 1
43 fi
44 if ! cmp "$orig_right" "$verify_right" ; then
45 echo "FAIL: $orig_right != $verify_right"
46 return 1
47 fi
48 fi
49 echo "OK: $diff_prog $orig_left $orig_right"
50 return 0
51 }
53 for left in test*.left* ; do
54 right="$(echo "$left" | sed 's/\.left/\.right/')"
55 diff_opts="$(echo "$left" | sed 's/test[0-9]*\.left\([-a-zA-Z]*\).txt/\1/')"
56 expected_diff="$(echo "$left" | sed 's/test\([-0-9a-zA-Z]*\)\..*/expect\1.diff/')"
57 got_diff="verify.$expected_diff"
59 "$diff_prog" $diff_opts "$left" "$right" > "$got_diff"
61 set -e
62 verify_diff_script "$left" "$right" "$got_diff" "$diff_opts" "$expected_diff"
63 set +e
64 done