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