xref: /netbsd-src/tests/usr.bin/error/t_error.sh (revision 92925e854e37bc41cdeb5b0e0906feacaf41704e)
1*92925e85Srillig# $NetBSD: t_error.sh,v 1.1 2023/08/26 10:06:16 rillig Exp $
2*92925e85Srillig#
3*92925e85Srillig# Copyright (c) 2023 The NetBSD Foundation, Inc.
4*92925e85Srillig# All rights reserved.
5*92925e85Srillig#
6*92925e85Srillig# This code is derived from software contributed to The NetBSD Foundation
7*92925e85Srillig# by Roland Illig.
8*92925e85Srillig#
9*92925e85Srillig# Redistribution and use in source and binary forms, with or without
10*92925e85Srillig# modification, are permitted provided that the following conditions
11*92925e85Srillig# are met:
12*92925e85Srillig# 1. Redistributions of source code must retain the above copyright
13*92925e85Srillig#    notice, this list of conditions and the following disclaimer.
14*92925e85Srillig# 2. Redistributions in binary form must reproduce the above copyright
15*92925e85Srillig#    notice, this list of conditions and the following disclaimer in the
16*92925e85Srillig#    documentation and/or other materials provided with the distribution.
17*92925e85Srillig#
18*92925e85Srillig# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
19*92925e85Srillig# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
20*92925e85Srillig# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
21*92925e85Srillig# PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
22*92925e85Srillig# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23*92925e85Srillig# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24*92925e85Srillig# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25*92925e85Srillig# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26*92925e85Srillig# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27*92925e85Srillig# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28*92925e85Srillig# POSSIBILITY OF SUCH DAMAGE.
29*92925e85Srillig#
30*92925e85Srillig
31*92925e85Srilligcreate_file() {
32*92925e85Srillig	local fn="$1"; shift
33*92925e85Srillig	printf '%s\n' "$@" > "$fn"
34*92925e85Srillig}
35*92925e85Srillig
36*92925e85Srilligatf_test_case cc
37*92925e85Srilligcc_body() {
38*92925e85Srillig	create_file code.c \
39*92925e85Srillig	    'goto error'
40*92925e85Srillig	create_file err \
41*92925e85Srillig	    'code.c:1: error: syntax error'
42*92925e85Srillig	create_file expected \
43*92925e85Srillig	    '/*###1 [cc] error: syntax error%%%*/' \
44*92925e85Srillig	    'goto error'
45*92925e85Srillig
46*92925e85Srillig	atf_check -o ignore \
47*92925e85Srillig	    error err
48*92925e85Srillig	atf_check -o 'file:expected' cat code.c
49*92925e85Srillig}
50*92925e85Srillig
51*92925e85Srilligatf_test_case f77
52*92925e85Srilligf77_body() {
53*92925e85Srillig	create_file code.f \
54*92925e85Srillig		'doi=1,1,1'
55*92925e85Srillig	create_file err \
56*92925e85Srillig		'Compiler error line 1 of code.f: syntax error'
57*92925e85Srillig	create_file expected \
58*92925e85Srillig	    'C###1 [f77] Compiler error line 1 of code.f syntax error%%%' \
59*92925e85Srillig	    'doi=1,1,1'
60*92925e85Srillig
61*92925e85Srillig	atf_check -o ignore \
62*92925e85Srillig	    error err
63*92925e85Srillig	atf_check -o 'file:expected' cat code.f
64*92925e85Srillig}
65*92925e85Srillig
66*92925e85Srilligatf_test_case lint
67*92925e85Srilliglint_body() {
68*92925e85Srillig	create_file code.c \
69*92925e85Srillig	    'goto error'
70*92925e85Srillig	create_file err \
71*92925e85Srillig	    'code.c(1): syntax error'
72*92925e85Srillig	create_file expected \
73*92925e85Srillig	    '/*###1 [lint] syntax error%%%*/' \
74*92925e85Srillig	    'goto error'
75*92925e85Srillig
76*92925e85Srillig	atf_check -o ignore \
77*92925e85Srillig	    error err
78*92925e85Srillig	atf_check -o 'file:expected' cat code.c
79*92925e85Srillig}
80*92925e85Srillig
81*92925e85Srilligatf_test_case mod2
82*92925e85Srilligmod2_body() {
83*92925e85Srillig	create_file code.m2 \
84*92925e85Srillig	    'END.'
85*92925e85Srillig	create_file err \
86*92925e85Srillig	    'File code.m2, line 1: missing BEGIN'
87*92925e85Srillig	create_file expected \
88*92925e85Srillig	    '(*###1 [mod2] missing BEGIN%%%*)' \
89*92925e85Srillig	    'END.'
90*92925e85Srillig
91*92925e85Srillig	atf_check -o ignore \
92*92925e85Srillig	    error err
93*92925e85Srillig	atf_check -o 'file:expected' cat code.m2
94*92925e85Srillig}
95*92925e85Srillig
96*92925e85Srilligatf_init_test_cases() {
97*92925e85Srillig	atf_add_test_case cc
98*92925e85Srillig	atf_add_test_case f77
99*92925e85Srillig	atf_add_test_case lint
100*92925e85Srillig	atf_add_test_case mod2
101*92925e85Srillig}
102