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