t_trapsignal.sh revision 1.3
11.3Skamil# $NetBSD: t_trapsignal.sh,v 1.3 2018/05/22 04:32:56 kamil Exp $
21.1Schristos#
31.1Schristos# Copyright (c) 2017 The NetBSD Foundation, Inc.
41.1Schristos# All rights reserved.
51.1Schristos#
61.1Schristos# This code is derived from software contributed to The NetBSD Foundation
71.1Schristos# by Christos Zoulas.
81.1Schristos#
91.1Schristos# Redistribution and use in source and binary forms, with or without
101.1Schristos# modification, are permitted provided that the following conditions
111.1Schristos# are met:
121.1Schristos# 1. Redistributions of source code must retain the above copyright
131.1Schristos#    notice, this list of conditions and the following disclaimer.
141.1Schristos# 2. Redistributions in binary form must reproduce the above copyright
151.1Schristos#    notice, this list of conditions and the following disclaimer in the
161.1Schristos#    documentation and/or other materials provided with the distribution.
171.1Schristos#
181.1Schristos# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
191.1Schristos# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
201.1Schristos# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
211.1Schristos# PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
221.1Schristos# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
231.1Schristos# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
241.1Schristos# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
251.1Schristos# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
261.1Schristos# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
271.1Schristos# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
281.1Schristos# POSSIBILITY OF SUCH DAMAGE.
291.1Schristos#
301.1Schristos
311.1SchristosHELPER=$(atf_get_srcdir)/h_segv
321.3Skamilatf_test_case segv_simple
331.3Skamilsegv_simple()
341.3Skamil{
351.3Skamil	atf_set "descr" "Test unhandled SIGSEGV with the right exit code"
361.3Skamil}
371.3Skamilsegv_simple_body()
381.3Skamil{
391.3Skamil	atf_check -s signal:11 -o "inline:" -e "inline:" \
401.3Skamil		${HELPER} segv recurse
411.3Skamil}
421.3Skamil
431.3Skamilatf_test_case segv_handle
441.3Skamilsegv_handle()
451.3Skamil{
461.3Skamil	atf_set "descr" "Test handled SIGSEGV traps call the signal handler"
471.3Skamil}
481.3Skamilsegv_handle_body()
491.3Skamil{
501.3Skamil	atf_check -s exit:0 -o "inline:" -e "inline:got 11\n" \
511.3Skamil		${HELPER} segv handle
521.3Skamil}
531.3Skamil
541.3Skamilatf_test_case segv_mask
551.3Skamilsegv_mask()
561.3Skamil{
571.3Skamil	atf_set "descr" "Test that masking SIGSEGV get reset"
581.3Skamil}
591.3Skamilsegv_mask_body()
601.3Skamil{
611.3Skamil	atf_check -s signal:11 -o "inline:" -e "inline:" \
621.3Skamil		${HELPER} segv mask
631.3Skamil}
641.3Skamil
651.3Skamilatf_test_case segv_handle_mask
661.3Skamilsegv_handle_mask()
671.3Skamil{
681.3Skamil	atf_set "descr" "Test handled and masked SIGSEGV traps get reset"
691.3Skamil}
701.3Skamilsegv_handle_mask_body()
711.3Skamil{
721.3Skamil	atf_check -s signal:11 -o "inline:" -e "inline:" \
731.3Skamil		${HELPER} segv mask handle
741.3Skamil}
751.3Skamil
761.3Skamilatf_test_case segv_handle_recurse
771.3Skamilsegv_handle_recurse()
781.3Skamil{
791.3Skamil	atf_set "descr" "Test that receiving SIGSEGV in the handler resets"
801.3Skamil}
811.3Skamil
821.3Skamilsegv_handle_recurse_body()
831.3Skamil{
841.3Skamil	atf_check -s signal:11 -o "inline:" -e "inline:got 11\n" \
851.3Skamil		${HELPER} segv handle recurse
861.3Skamil}
871.3Skamil
881.3Skamilatf_test_case segv_ignore
891.3Skamilsegv_ignore()
901.3Skamil{
911.3Skamil	atf_set "descr" "Test ignored SIGSEGV trap with right exit code"
921.3Skamil}
931.3Skamil
941.3Skamilsegv_ignore_body()
951.3Skamil{
961.3Skamil	atf_check -s signal:11 -o "inline:" -e "inline:" \
971.3Skamil		${HELPER} segv ignore
981.3Skamil}
991.3Skamil
1001.1Schristosatf_test_case trap_simple
1011.1Schristostrap_simple()
1021.1Schristos{
1031.3Skamil	atf_set "descr" "Test unhandled SIGTRAP with the right exit code"
1041.1Schristos}
1051.1Schristostrap_simple_body()
1061.1Schristos{
1071.3Skamil	atf_check -s signal:5 -o "inline:" -e "inline:" \
1081.3Skamil		${HELPER} trap recurse
1091.1Schristos}
1101.1Schristos
1111.1Schristosatf_test_case trap_handle
1121.1Schristostrap_handle()
1131.1Schristos{
1141.3Skamil	atf_set "descr" "Test handled SIGTRAP traps call the signal handler"
1151.1Schristos}
1161.1Schristostrap_handle_body()
1171.1Schristos{
1181.3Skamil	atf_check -s exit:0 -o "inline:" -e "inline:got 5\n" \
1191.3Skamil		${HELPER} trap handle
1201.1Schristos}
1211.1Schristos
1221.1Schristosatf_test_case trap_mask
1231.1Schristostrap_mask()
1241.1Schristos{
1251.3Skamil	atf_set "descr" "Test that masking the trapped SIGTRAP signal get reset"
1261.1Schristos}
1271.1Schristostrap_mask_body()
1281.1Schristos{
1291.3Skamil	atf_check -s signal:5 -o "inline:" -e "inline:" \
1301.3Skamil		${HELPER} trap mask
1311.1Schristos}
1321.1Schristos
1331.1Schristosatf_test_case trap_handle_mask
1341.1Schristostrap_handle_mask()
1351.1Schristos{
1361.3Skamil	atf_set "descr" "Test handled and masked SIGTRAP traps get reset"
1371.1Schristos}
1381.1Schristostrap_handle_mask_body()
1391.1Schristos{
1401.3Skamil	atf_check -s signal:5 -o "inline:" -e "inline:" \
1411.3Skamil		${HELPER} trap mask handle
1421.1Schristos}
1431.1Schristos
1441.1Schristosatf_test_case trap_handle_recurse
1451.1Schristostrap_handle_recurse()
1461.1Schristos{
1471.3Skamil	atf_set "descr" "Test that receiving SIGTRAP in the handler resets"
1481.1Schristos}
1491.1Schristos
1501.1Schristostrap_handle_recurse_body()
1511.1Schristos{
1521.3Skamil	atf_check -s signal:5 -o "inline:" -e "inline:got 5\n" \
1531.3Skamil		${HELPER} trap handle recurse
1541.1Schristos}
1551.1Schristos
1561.2Skamilatf_test_case trap_ignore
1571.2Skamiltrap_ignore()
1581.2Skamil{
1591.2Skamil	atf_set "descr" "Test ignored trap with right exit code"
1601.2Skamil}
1611.2Skamil
1621.2Skamiltrap_ignore_body()
1631.2Skamil{
1641.3Skamil	atf_check -s signal:5 -o "inline:" -e "inline:" \
1651.3Skamil		${HELPER} trap ignore
1661.2Skamil}
1671.2Skamil
1681.1Schristosatf_init_test_cases()
1691.1Schristos{
1701.3Skamil	atf_add_test_case segv_simple
1711.3Skamil	atf_add_test_case segv_handle
1721.3Skamil	atf_add_test_case segv_mask
1731.3Skamil	atf_add_test_case segv_handle_recurse
1741.3Skamil	atf_add_test_case segv_ignore
1751.3Skamil
1761.1Schristos	atf_add_test_case trap_simple
1771.1Schristos	atf_add_test_case trap_handle
1781.1Schristos	atf_add_test_case trap_mask
1791.1Schristos	atf_add_test_case trap_handle_recurse
1801.2Skamil	atf_add_test_case trap_ignore
1811.1Schristos}
182