Blob


1 #!/bin/sh
3 diff_prog="../diff/diff"
5 # At present, test015 only passes with GNU patch.
6 # Larry's patch has a bug with empty files in combination with -R...
7 if which gpatch > /dev/null; then
8 patch_prog="gpatch"
9 else
10 patch_prog="patch"
11 fi
13 diff_type=unidiff
15 verify_diff_script() {
16 orig_left="$1"
17 orig_right="$2"
18 the_diff="$3"
19 expected_diff="$4"
20 diff_opts="$5"
22 if echo -- $diff_opts | grep -q -- '-w'; then
23 ignore_whitespace="true"
24 else
25 ignore_whitespace=""
26 fi
27 verify_left="verify.$orig_left"
28 verify_right="verify.$orig_right"
30 if [ -e "$expected_diff" ]; then
31 echo cmp "$got_diff" "$expected_diff"
32 if ! cmp "$got_diff" "$expected_diff" ; then
33 echo "FAIL: $got_diff != $expected_diff"
34 return 1
35 fi
36 fi
37 if [ -z "$ignore_whitespace" -a "x$diff_type" = "xunidiff" ]; then
38 cp "$orig_left" "$verify_right"
39 $patch_prog --quiet -u "$verify_right" "$the_diff"
40 if ! cmp "$orig_right" "$verify_right" ; then
41 echo "FAIL: $orig_right != $verify_right"
42 return 1
43 fi
45 cp "$orig_right" "$verify_left"
46 $patch_prog --quiet -u -R "$verify_left" "$the_diff"
47 if ! cmp "$orig_left" "$verify_left" ; then
48 echo "FAIL: $orig_left != $verify_left"
49 return 1
50 fi
51 elif [ -z "$ignore_whitespace" ]; then
52 tail -n +3 "$the_diff" | grep -v "^+" | sed 's/^.//' > "$verify_left"
53 tail -n +3 "$the_diff" | grep -v "^-" | sed 's/^.//' > "$verify_right"
55 if ! cmp "$orig_left" "$verify_left" ; then
56 echo "FAIL: $orig_left != $verify_left"
57 return 1
58 fi
59 if ! cmp "$orig_right" "$verify_right" ; then
60 echo "FAIL: $orig_right != $verify_right"
61 return 1
62 fi
63 fi
64 echo "OK: $diff_prog $orig_left $orig_right"
65 return 0
66 }
68 for left in test*.left* ; do
69 right="$(echo "$left" | sed 's/\.left/\.right/')"
70 diff_opts="$(echo "$left" | sed 's/test[0-9]*\.left\([-a-zA-Z0-9]*\).txt/\1/')"
71 expected_diff="$(echo "$left" | sed 's/test\([-0-9a-zA-Z]*\)\..*/expect\1.diff/')"
72 got_diff="verify.$expected_diff"
74 "$diff_prog" $diff_opts "$left" "$right" > "$got_diff"
76 set -e
77 verify_diff_script "$left" "$right" "$got_diff" "$expected_diff" "$diff_opts"
78 set +e
79 done