1*a8016b51Srillig# $NetBSD: t_usage.sh,v 1.27 2024/12/08 17:12:01 rillig Exp $ 21d3cf26eSrillig# 31d3cf26eSrillig# Copyright (c) 2023 The NetBSD Foundation, Inc. 41d3cf26eSrillig# All rights reserved. 51d3cf26eSrillig# 61d3cf26eSrillig# Redistribution and use in source and binary forms, with or without 71d3cf26eSrillig# modification, are permitted provided that the following conditions 81d3cf26eSrillig# are met: 91d3cf26eSrillig# 1. Redistributions of source code must retain the above copyright 101d3cf26eSrillig# notice, this list of conditions and the following disclaimer. 111d3cf26eSrillig# 2. Redistributions in binary form must reproduce the above copyright 121d3cf26eSrillig# notice, this list of conditions and the following disclaimer in the 131d3cf26eSrillig# documentation and/or other materials provided with the distribution. 141d3cf26eSrillig# 151d3cf26eSrillig# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 161d3cf26eSrillig# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 171d3cf26eSrillig# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 181d3cf26eSrillig# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 191d3cf26eSrillig# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 201d3cf26eSrillig# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 211d3cf26eSrillig# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 221d3cf26eSrillig# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 231d3cf26eSrillig# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 241d3cf26eSrillig# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 251d3cf26eSrillig# POSSIBILITY OF SUCH DAMAGE. 261d3cf26eSrillig# 271d3cf26eSrillig 281d3cf26eSrillig: "${lint1:=/usr/libexec/lint1}" 291d3cf26eSrillig 301d3cf26eSrillig 3186d9dbedSrilligatf_test_case 'suppress_messages' 321d3cf26eSrilligsuppress_messages_body() 331d3cf26eSrillig{ 341d3cf26eSrillig printf 'typedef int dummy;\n' > code.c 351d3cf26eSrillig 361d3cf26eSrillig # Message IDs are 0-based. 371d3cf26eSrillig atf_check \ 381d3cf26eSrillig "$lint1" -X 0 code.c /dev/null 391d3cf26eSrillig 401d3cf26eSrillig # The largest known message. 411d3cf26eSrillig atf_check \ 42*a8016b51Srillig "$lint1" -X 385 code.c /dev/null 431d3cf26eSrillig 441d3cf26eSrillig # Larger than the largest known message. 451d3cf26eSrillig atf_check \ 461d3cf26eSrillig -s 'exit:1' \ 47*a8016b51Srillig -e "inline:lint1: invalid message ID '386'\n" \ 48*a8016b51Srillig "$lint1" -X 386 code.c /dev/null 491d3cf26eSrillig 50f0ae73e1Srillig # Whitespace is not allowed before a message ID. 511d3cf26eSrillig atf_check \ 52f0ae73e1Srillig -s 'exit:1' \ 53f0ae73e1Srillig -e "inline:lint1: invalid message ID ' 1'\n" \ 541d3cf26eSrillig "$lint1" -X ' 1' code.c /dev/null 551d3cf26eSrillig 561d3cf26eSrillig # Whitespace is not allowed after a message ID. 571d3cf26eSrillig atf_check \ 581d3cf26eSrillig -s 'exit:1' \ 59f0ae73e1Srillig -e "inline:lint1: invalid message ID '1 '\n" \ 601d3cf26eSrillig "$lint1" -X '1 ' code.c /dev/null 611d3cf26eSrillig 621d3cf26eSrillig # Multiple message IDs can be comma-separated. 631d3cf26eSrillig atf_check \ 641d3cf26eSrillig "$lint1" -X '1,2,3,4' code.c /dev/null 651d3cf26eSrillig 66f0ae73e1Srillig # Whitespace is not allowed after a comma. 671d3cf26eSrillig atf_check \ 68f0ae73e1Srillig -s 'exit:1' \ 69f0ae73e1Srillig -e "inline:lint1: invalid message ID ' 2'\n" \ 701d3cf26eSrillig "$lint1" -X '1, 2, 3, 4' code.c /dev/null 711d3cf26eSrillig 72f0ae73e1Srillig # Trailing commas are not allowed. 731d3cf26eSrillig atf_check \ 74f0ae73e1Srillig -s 'exit:1' \ 75f0ae73e1Srillig -e "inline:lint1: invalid message ID ''\n" \ 761d3cf26eSrillig "$lint1" -X '1,,,,,,,' code.c /dev/null 771d3cf26eSrillig} 781d3cf26eSrillig 7986d9dbedSrilligatf_test_case 'enable_queries' 801d3cf26eSrilligenable_queries_body() 811d3cf26eSrillig{ 821d3cf26eSrillig printf 'typedef int dummy;\n' > code.c 831d3cf26eSrillig 841d3cf26eSrillig # Query IDs are 1-based. 851d3cf26eSrillig atf_check \ 861d3cf26eSrillig -s 'exit:1' \ 871d3cf26eSrillig -e "inline:lint1: invalid query ID '0'\n" \ 881d3cf26eSrillig "$lint1" -q 0 code.c /dev/null 891d3cf26eSrillig 901d3cf26eSrillig # The largest known query. 911d3cf26eSrillig atf_check \ 92b2ad51d9Srillig "$lint1" -q 24 code.c /dev/null 931d3cf26eSrillig 941d3cf26eSrillig # Larger than the largest known query. 951d3cf26eSrillig atf_check \ 961d3cf26eSrillig -s 'exit:1' \ 97b2ad51d9Srillig -e "inline:lint1: invalid query ID '25'\n" \ 98b2ad51d9Srillig "$lint1" -q 25 code.c /dev/null 991d3cf26eSrillig 1001d3cf26eSrillig # Whitespace is not allowed before a query ID. 1011d3cf26eSrillig atf_check \ 1021d3cf26eSrillig -s 'exit:1' \ 1031d3cf26eSrillig -e "inline:lint1: invalid query ID ' 1'\n" \ 1041d3cf26eSrillig "$lint1" -q ' 1' code.c /dev/null 1051d3cf26eSrillig 1061d3cf26eSrillig # Whitespace is not allowed after a query ID. 1071d3cf26eSrillig atf_check \ 1081d3cf26eSrillig -s 'exit:1' \ 1091d3cf26eSrillig -e "inline:lint1: invalid query ID '1 '\n" \ 1101d3cf26eSrillig "$lint1" -q '1 ' code.c /dev/null 1111d3cf26eSrillig 1121d3cf26eSrillig # Multiple query IDs can be comma-separated. 1131d3cf26eSrillig atf_check \ 1141d3cf26eSrillig "$lint1" -q '1,2,3,4' code.c /dev/null 1151d3cf26eSrillig 1161d3cf26eSrillig # Whitespace is not allowed after a comma. 1171d3cf26eSrillig atf_check \ 1181d3cf26eSrillig -s 'exit:1' \ 1191d3cf26eSrillig -e "inline:lint1: invalid query ID ' 2'\n" \ 1201d3cf26eSrillig "$lint1" -q '1, 2, 3, 4' code.c /dev/null 1211d3cf26eSrillig 1221d3cf26eSrillig # Trailing commas are not allowed. 1231d3cf26eSrillig atf_check \ 1241d3cf26eSrillig -s 'exit:1' \ 1251d3cf26eSrillig -e "inline:lint1: invalid query ID ''\n" \ 1261d3cf26eSrillig "$lint1" -q '1,,,,,,,' code.c /dev/null 1271d3cf26eSrillig} 1281d3cf26eSrillig 1291d3cf26eSrilligatf_init_test_cases() 1301d3cf26eSrillig{ 1311d3cf26eSrillig atf_add_test_case 'suppress_messages' 1321d3cf26eSrillig atf_add_test_case 'enable_queries' 1331d3cf26eSrillig} 134