| @@ -1,90 +1,93 @@ | | | @@ -1,90 +1,93 @@ |
1 | #! /bin/sh | | 1 | #! /bin/sh |
2 | # $NetBSD: accept.sh,v 1.1 2021/06/29 09:44:25 rillig Exp $ | | 2 | # $NetBSD: accept.sh,v 1.2 2021/07/11 12:07:14 rillig Exp $ |
3 | # | | 3 | # |
4 | # Copyright (c) 2021 The NetBSD Foundation, Inc. | | 4 | # Copyright (c) 2021 The NetBSD Foundation, Inc. |
5 | # All rights reserved. | | 5 | # All rights reserved. |
6 | # | | 6 | # |
7 | # Redistribution and use in source and binary forms, with or without | | 7 | # Redistribution and use in source and binary forms, with or without |
8 | # modification, are permitted provided that the following conditions | | 8 | # modification, are permitted provided that the following conditions |
9 | # are met: | | 9 | # are met: |
10 | # 1. Redistributions of source code must retain the above copyright | | 10 | # 1. Redistributions of source code must retain the above copyright |
11 | # notice, this list of conditions and the following disclaimer. | | 11 | # notice, this list of conditions and the following disclaimer. |
12 | # 2. Redistributions in binary form must reproduce the above copyright | | 12 | # 2. Redistributions in binary form must reproduce the above copyright |
13 | # notice, this list of conditions and the following disclaimer in the | | 13 | # notice, this list of conditions and the following disclaimer in the |
14 | # documentation and/or other materials provided with the distribution. | | 14 | # documentation and/or other materials provided with the distribution. |
15 | # | | 15 | # |
16 | # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS | | 16 | # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS |
17 | # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED | | 17 | # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED |
18 | # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | | 18 | # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
19 | # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS | | 19 | # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS |
20 | # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | | 20 | # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
21 | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | | 21 | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
22 | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | | 22 | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
23 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | | 23 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
24 | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | | 24 | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
25 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | | 25 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
26 | # POSSIBILITY OF SUCH DAMAGE. | | 26 | # POSSIBILITY OF SUCH DAMAGE. |
27 | # | | 27 | # |
28 | | | 28 | |
29 | # usage: accept.sh <pattern>... | | 29 | # usage: accept.sh <pattern>... |
30 | # | | 30 | # |
31 | # Accept the actual output from running the lint tests and save them | | 31 | # Accept the actual output from running the lint tests and save them |
32 | # back into the .exp files. | | 32 | # back into the .exp files. |
33 | | | 33 | |
34 | set -eu | | 34 | set -eu |
35 | | | 35 | |
36 | . './t_integration.sh' | | 36 | . './t_integration.sh' |
37 | | | 37 | |
38 | for pattern in "$@"; do | | 38 | for pattern in "$@"; do |
39 | for test in *$pattern*.c; do | | 39 | for test in *$pattern*.c; do |
40 | base=${test%.*} | | 40 | base=${test%.*} |
41 | cfile="$base.c" | | 41 | cfile="$base.c" |
42 | expfile="$base.exp" | | 42 | expfile="$base.exp" |
43 | tmpfile="$base.exp.tmp" | | 43 | tmpfile="$base.exp.tmp" |
44 | ln_file="$base.ln" | | 44 | ln_file="$base.ln" |
45 | | | 45 | |
46 | configure_test_case "$cfile" | | 46 | configure_test_case "$cfile" |
| | | 47 | # shellcheck disable=SC2154 |
47 | if [ $skip = yes ]; then | | 48 | if [ $skip = yes ]; then |
48 | continue | | 49 | continue |
49 | fi | | 50 | fi |
50 | | | 51 | |
51 | if [ ! -f "$ln_file" ]; then | | 52 | if [ ! -f "$ln_file" ]; then |
52 | ln_file='/dev/null' | | 53 | ln_file='/dev/null' |
53 | fi | | 54 | fi |
54 | | | 55 | |
| | | 56 | # shellcheck disable=SC2154 |
| | | 57 | # shellcheck disable=SC2086 |
55 | if "$lint1" $flags "$base.c" "$ln_file" > "$tmpfile"; then | | 58 | if "$lint1" $flags "$base.c" "$ln_file" > "$tmpfile"; then |
56 | if [ -s "$tmpfile" ]; then | | 59 | if [ -s "$tmpfile" ]; then |
57 | echo "$base produces output but exits successfully" | | 60 | echo "$base produces output but exits successfully" |
58 | sed 's,^,| ,' "$tmpfile" | | 61 | sed 's,^,| ,' "$tmpfile" |
59 | fi | | 62 | fi |
60 | rm -f "$expfile" "$tmpfile" | | 63 | rm -f "$expfile" "$tmpfile" |
61 | else | | 64 | else |
62 | if [ -f "$tmpfile" ] && cmp -s "$tmpfile" "$expfile"; then | | 65 | if [ -f "$tmpfile" ] && cmp -s "$tmpfile" "$expfile"; then |
63 | rm "$tmpfile" | | 66 | rm "$tmpfile" |
64 | else | | 67 | else |
65 | echo "replacing $base" | | 68 | echo "replacing $base" |
66 | mv "$tmpfile" "$expfile" | | 69 | mv "$tmpfile" "$expfile" |
67 | fi | | 70 | fi |
68 | fi | | 71 | fi |
69 | | | 72 | |
70 | case "$base" in (msg_*) | | 73 | case "$base" in (msg_*) |
71 | if [ ! -f "$expfile" ]; then | | 74 | if [ ! -f "$expfile" ]; then |
72 | echo "$base should produce warnings" | | 75 | echo "$base should produce warnings" |
73 | elif grep '^TODO: "Add example code' "$base.c" >/dev/null; then | | 76 | elif grep '^TODO: "Add example code' "$base.c" >/dev/null; then |
74 | : 'ok, this test is not yet written' | | 77 | : 'ok, this test is not yet written' |
75 | else | | 78 | else |
76 | msgid=${base} | | 79 | msgid=${base} |
77 | msgid=${msgid#msg_00} | | 80 | msgid=${msgid#msg_00} |
78 | msgid=${msgid#msg_0} | | 81 | msgid=${msgid#msg_0} |
79 | msgid=${msgid#msg_} | | 82 | msgid=${msgid#msg_} |
80 | msgid=${msgid%_*} | | 83 | msgid=${msgid%_*} |
81 | if ! grep "\\[$msgid\\]" "$expfile" >/dev/null; then | | 84 | if ! grep "\\[$msgid\\]" "$expfile" >/dev/null; then |
82 | echo "$base should trigger the message '$msgid'" | | 85 | echo "$base should trigger the message '$msgid'" |
83 | fi | | 86 | fi |
84 | fi | | 87 | fi |
85 | esac | | 88 | esac |
86 | | | 89 | |
87 | done | | 90 | done |
88 | done | | 91 | done |
89 | | | 92 | |
90 | lua '../check-expect.lua' *.c | | 93 | lua '../check-expect.lua' *.c |