Blame


1 3b0f3d61 2020-01-22 neels #!/bin/sh
2 3b0f3d61 2020-01-22 neels
3 9bf4a819 2022-08-03 op diff_prog="../diff/obj/diff"
4 9bf4a819 2022-08-03 op if [ ! -x $diff_prog ]; then
5 9bf4a819 2022-08-03 op diff_prog="../diff/diff"
6 9bf4a819 2022-08-03 op fi
7 3b0f3d61 2020-01-22 neels
8 11d9f2f7 2020-10-07 stsp # At present, test015 only passes with GNU patch.
9 11d9f2f7 2020-10-07 stsp # Larry's patch has a bug with empty files in combination with -R...
10 b9efd927 2022-08-03 op if command -v gpatch >/dev/null 2>&1; then
11 11d9f2f7 2020-10-07 stsp patch_prog="gpatch"
12 11d9f2f7 2020-10-07 stsp else
13 11d9f2f7 2020-10-07 stsp patch_prog="patch"
14 11d9f2f7 2020-10-07 stsp fi
15 11d9f2f7 2020-10-07 stsp
16 81b40973 2020-01-22 neels diff_type=unidiff
17 3b0f3d61 2020-01-22 neels
18 b9efd927 2022-08-03 op rm -f errors
19 548d9762 2020-10-11 neels
20 3b0f3d61 2020-01-22 neels verify_diff_script() {
21 3b0f3d61 2020-01-22 neels orig_left="$1"
22 3b0f3d61 2020-01-22 neels orig_right="$2"
23 3b0f3d61 2020-01-22 neels the_diff="$3"
24 417a6e49 2020-09-26 stsp expected_diff="$4"
25 417a6e49 2020-09-26 stsp diff_opts="$5"
26 3b0f3d61 2020-01-22 neels
27 23f98e9b 2020-10-12 neels if echo -- $diff_opts | grep -q -- 'w'; then
28 0c9a7e9d 2020-10-07 stsp ignore_whitespace="true"
29 0c9a7e9d 2020-10-07 stsp else
30 0c9a7e9d 2020-10-07 stsp ignore_whitespace=""
31 0c9a7e9d 2020-10-07 stsp fi
32 346d4986 2021-10-06 stsp
33 346d4986 2021-10-06 stsp if echo -- $diff_opts | grep -q -- 'e'; then
34 346d4986 2021-10-06 stsp is_edscript="true"
35 346d4986 2021-10-06 stsp else
36 346d4986 2021-10-06 stsp is_edscript=""
37 346d4986 2021-10-06 stsp fi
38 346d4986 2021-10-06 stsp
39 3b0f3d61 2020-01-22 neels verify_left="verify.$orig_left"
40 3b0f3d61 2020-01-22 neels verify_right="verify.$orig_right"
41 3b0f3d61 2020-01-22 neels
42 417a6e49 2020-09-26 stsp if [ -e "$expected_diff" ]; then
43 417a6e49 2020-09-26 stsp echo cmp "$got_diff" "$expected_diff"
44 732e8ee0 2020-09-20 stsp if ! cmp "$got_diff" "$expected_diff" ; then
45 548d9762 2020-10-11 neels echo "FAIL: $got_diff != $expected_diff" | tee -a errors
46 732e8ee0 2020-09-20 stsp return 1
47 732e8ee0 2020-09-20 stsp fi
48 417a6e49 2020-09-26 stsp fi
49 346d4986 2021-10-06 stsp if [ -z "$ignore_whitespace" -a -z "$is_edscript" -a "x$diff_type" = "xunidiff" ]; then
50 3b0f3d61 2020-01-22 neels cp "$orig_left" "$verify_right"
51 11d9f2f7 2020-10-07 stsp $patch_prog --quiet -u "$verify_right" "$the_diff"
52 3b0f3d61 2020-01-22 neels if ! cmp "$orig_right" "$verify_right" ; then
53 548d9762 2020-10-11 neels echo "FAIL: $orig_right != $verify_right" | tee -a errors
54 3b0f3d61 2020-01-22 neels return 1
55 3b0f3d61 2020-01-22 neels fi
56 3b0f3d61 2020-01-22 neels
57 3b0f3d61 2020-01-22 neels cp "$orig_right" "$verify_left"
58 11d9f2f7 2020-10-07 stsp $patch_prog --quiet -u -R "$verify_left" "$the_diff"
59 3b0f3d61 2020-01-22 neels if ! cmp "$orig_left" "$verify_left" ; then
60 548d9762 2020-10-11 neels echo "FAIL: $orig_left != $verify_left" | tee -a errors
61 3b0f3d61 2020-01-22 neels return 1
62 3b0f3d61 2020-01-22 neels fi
63 346d4986 2021-10-06 stsp elif [ -z "$ignore_whitespace" -a -z "$is_edscript" ]; then
64 3b0f3d61 2020-01-22 neels tail -n +3 "$the_diff" | grep -v "^+" | sed 's/^.//' > "$verify_left"
65 3b0f3d61 2020-01-22 neels tail -n +3 "$the_diff" | grep -v "^-" | sed 's/^.//' > "$verify_right"
66 3b0f3d61 2020-01-22 neels
67 3b0f3d61 2020-01-22 neels if ! cmp "$orig_left" "$verify_left" ; then
68 548d9762 2020-10-11 neels echo "FAIL: $orig_left != $verify_left" | tee -a errors
69 3b0f3d61 2020-01-22 neels return 1
70 3b0f3d61 2020-01-22 neels fi
71 3b0f3d61 2020-01-22 neels if ! cmp "$orig_right" "$verify_right" ; then
72 548d9762 2020-10-11 neels echo "FAIL: $orig_right != $verify_right" | tee -a errors
73 3b0f3d61 2020-01-22 neels return 1
74 3b0f3d61 2020-01-22 neels fi
75 3b0f3d61 2020-01-22 neels fi
76 3b0f3d61 2020-01-22 neels echo "OK: $diff_prog $orig_left $orig_right"
77 3b0f3d61 2020-01-22 neels return 0
78 3b0f3d61 2020-01-22 neels }
79 3b0f3d61 2020-01-22 neels
80 732e8ee0 2020-09-20 stsp for left in test*.left* ; do
81 732e8ee0 2020-09-20 stsp right="$(echo "$left" | sed 's/\.left/\.right/')"
82 0c9a7e9d 2020-10-07 stsp diff_opts="$(echo "$left" | sed 's/test[0-9]*\.left\([-a-zA-Z0-9]*\).txt/\1/')"
83 732e8ee0 2020-09-20 stsp expected_diff="$(echo "$left" | sed 's/test\([-0-9a-zA-Z]*\)\..*/expect\1.diff/')"
84 3b0f3d61 2020-01-22 neels got_diff="verify.$expected_diff"
85 3b0f3d61 2020-01-22 neels
86 732e8ee0 2020-09-20 stsp "$diff_prog" $diff_opts "$left" "$right" > "$got_diff"
87 3b0f3d61 2020-01-22 neels
88 417a6e49 2020-09-26 stsp verify_diff_script "$left" "$right" "$got_diff" "$expected_diff" "$diff_opts"
89 3b0f3d61 2020-01-22 neels done
90 3e6df916 2020-10-11 neels
91 4f58e891 2020-10-11 stsp # XXX required to keep GNU make completely silent during 'make regress'
92 4f58e891 2020-10-11 stsp if make -h 2>/dev/null | grep -q no-print-directory; then
93 4f58e891 2020-10-11 stsp make_opts="--no-print-directory"
94 4f58e891 2020-10-11 stsp fi
95 3e6df916 2020-10-11 neels for ctest in *_test.c ; do
96 3e6df916 2020-10-11 neels prog="$(echo "$ctest" | sed 's/.c//')"
97 3e6df916 2020-10-11 neels expect_output="expect.${prog}"
98 3e6df916 2020-10-11 neels prog_output="verify.$expect_output"
99 4f58e891 2020-10-11 stsp make $make_opts -s -C "$prog" regress > "$prog_output"
100 3e6df916 2020-10-11 neels if ! cmp "$prog_output" "$expect_output" ; then
101 548d9762 2020-10-11 neels echo "FAIL: $prog_output != $expect_output" | tee -a errors
102 3e6df916 2020-10-11 neels else
103 3e6df916 2020-10-11 neels echo "OK: $prog"
104 3e6df916 2020-10-11 neels fi
105 3e6df916 2020-10-11 neels done
106 548d9762 2020-10-11 neels
107 548d9762 2020-10-11 neels echo
108 548d9762 2020-10-11 neels if [ -f errors ]; then
109 548d9762 2020-10-11 neels echo "Tests failed:"
110 548d9762 2020-10-11 neels cat errors
111 548d9762 2020-10-11 neels exit 1
112 548d9762 2020-10-11 neels else
113 548d9762 2020-10-11 neels echo "All tests OK"
114 548d9762 2020-10-11 neels echo
115 548d9762 2020-10-11 neels fi