t_xlint.sh revision 1.1
11.1Srillig# $NetBSD: t_xlint.sh,v 1.1 2023/01/15 23:18:05 rillig Exp $ 21.1Srillig# 31.1Srillig# Copyright (c) 2023 The NetBSD Foundation, Inc. 41.1Srillig# All rights reserved. 51.1Srillig# 61.1Srillig# Redistribution and use in source and binary forms, with or without 71.1Srillig# modification, are permitted provided that the following conditions 81.1Srillig# are met: 91.1Srillig# 1. Redistributions of source code must retain the above copyright 101.1Srillig# notice, this list of conditions and the following disclaimer. 111.1Srillig# 2. Redistributions in binary form must reproduce the above copyright 121.1Srillig# notice, this list of conditions and the following disclaimer in the 131.1Srillig# documentation and/or other materials provided with the distribution. 141.1Srillig# 151.1Srillig# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 161.1Srillig# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 171.1Srillig# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 181.1Srillig# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 191.1Srillig# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 201.1Srillig# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 211.1Srillig# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 221.1Srillig# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 231.1Srillig# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 241.1Srillig# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 251.1Srillig# POSSIBILITY OF SUCH DAMAGE. 261.1Srillig# 271.1Srillig 281.1Srillig: ${lint:='/usr/bin/lint'} 291.1Srillig 301.1Srilligrun_lint1_error_head() 311.1Srillig{ 321.1Srillig : 331.1Srillig} 341.1Srillig 351.1Srilligrun_lint1_error_body() 361.1Srillig{ 371.1Srillig cat <<-EOF >input.c || atf_fail 'prepare input.c' 381.1Srillig #include <stdbool.h> 391.1Srillig 401.1Srillig bool 411.1Srillig return_true(void) 421.1Srillig { 431.1Srillig return 1; 441.1Srillig } 451.1Srillig EOF 461.1Srillig 471.1Srillig atf_check \ 481.1Srillig -s 'exit:1' \ 491.1Srillig -o "inline:input.c(6): error: function has return type '_Bool' but returns 'int' [211]\n" \ 501.1Srillig "$lint" -aabceghiprSTxz input.c 511.1Srillig 521.1Srillig # In case of an error, no output file is written. 531.1Srillig atf_check \ 541.1Srillig -s 'exit:1' \ 551.1Srillig test -f input.ln 561.1Srillig} 571.1Srillig 581.1Srillig 591.1Srilligrun_lint1_warning_head() 601.1Srillig{ 611.1Srillig : 621.1Srillig} 631.1Srillig 641.1Srilligrun_lint1_warning_body() 651.1Srillig{ 661.1Srillig cat <<-EOF >input.c || atf_fail 'prepare input.c' 671.1Srillig static int number; 681.1Srillig 691.1Srillig const void * 701.1Srillig function(int a, const char *s) 711.1Srillig { 721.1Srillig return s + a; 731.1Srillig } 741.1Srillig EOF 751.1Srillig cat <<-EOF >input.exp || atf_fail 'prepare input.exp' 761.1Srillig 0sinput.c 771.1Srillig Sinput.c 781.1Srillig 1s<built-in> 791.1Srillig 2s<command-line> 801.1Srillig 4d0.4dr8functionF2IPcCPcV 811.1Srillig EOF 821.1Srillig 831.1Srillig atf_check \ 841.1Srillig -o "inline:input.c(1): warning: static variable 'number' unused [226]\n" \ 851.1Srillig "$lint" -aabceghiprSTxz input.c 861.1Srillig atf_check \ 871.1Srillig -o 'file:input.exp' \ 881.1Srillig cat input.ln 891.1Srillig} 901.1Srillig 911.1Srilligrun_lint2_head() 921.1Srillig{ 931.1Srillig : 941.1Srillig} 951.1Srillig 961.1Srilligrun_lint2_body() 971.1Srillig{ 981.1Srillig cat <<-EOF >input.ln || atf_fail 'prepare input.ln' 991.1Srillig 0sinput.c 1001.1Srillig Sinput.c 1011.1Srillig 1s<built-in> 1021.1Srillig 2s<command-line> 1031.1Srillig 4d0.4dr8functionF2IPcCPcV 1041.1Srillig EOF 1051.1Srillig 1061.1Srillig # Most of the command line options are not relevant for lint2, 1071.1Srillig # so they are effectively ignored. The option '-i' is absent. 1081.1Srillig atf_check \ 1091.1Srillig -o 'inline:function defined( input.c(4) ), but never used\n' \ 1101.1Srillig -e 'inline:lint: cannot find llib-lc.ln\n' \ 1111.1Srillig "$lint" -aabceghprSTxz input.ln 1121.1Srillig} 1131.1Srillig 1141.1Srillig 1151.1Srilligatf_init_test_cases() 1161.1Srillig{ 1171.1Srillig atf_add_test_case 'run_lint1_error' 1181.1Srillig atf_add_test_case 'run_lint1_warning' 1191.1Srillig atf_add_test_case 'run_lint2' 1201.1Srillig} 121