1*d1c5dc47SRobert Mustacchi#!/usr/bin/ksh 2*d1c5dc47SRobert Mustacchi# 3*d1c5dc47SRobert Mustacchi# This file and its contents are supplied under the terms of the 4*d1c5dc47SRobert Mustacchi# Common Development and Distribution License ("CDDL"), version 1.0. 5*d1c5dc47SRobert Mustacchi# You may only use this file in accordance with the terms of version 6*d1c5dc47SRobert Mustacchi# 1.0 of the CDDL. 7*d1c5dc47SRobert Mustacchi# 8*d1c5dc47SRobert Mustacchi# A full copy of the text of the CDDL should have accompanied this 9*d1c5dc47SRobert Mustacchi# source. A copy of the CDDL is also available via the Internet at 10*d1c5dc47SRobert Mustacchi# http://www.illumos.org/license/CDDL. 11*d1c5dc47SRobert Mustacchi# 12*d1c5dc47SRobert Mustacchi 13*d1c5dc47SRobert Mustacchi# 14*d1c5dc47SRobert Mustacchi# Copyright 2016 Joyent, Inc. 15*d1c5dc47SRobert Mustacchi# 16*d1c5dc47SRobert Mustacchi 17*d1c5dc47SRobert Mustacchi# 18*d1c5dc47SRobert Mustacchi# Test quick_exit(3C). We specifically test the following things: 19*d1c5dc47SRobert Mustacchi# o That we get a requested exit status 20*d1c5dc47SRobert Mustacchi# o That at_quick_exit() functions fire in a registered, reverse order. 21*d1c5dc47SRobert Mustacchi# 22*d1c5dc47SRobert Mustacchi# These are all done by helper programs 23*d1c5dc47SRobert Mustacchi# 24*d1c5dc47SRobert Mustacchi 25*d1c5dc47SRobert Mustacchiset -o errexit 26*d1c5dc47SRobert Mustacchiset -o pipefail 27*d1c5dc47SRobert Mustacchi 28*d1c5dc47SRobert Mustacchiqe_root=$(dirname $0) 29*d1c5dc47SRobert Mustacchiqe_status32=$qe_root/quick_exit_status.32 30*d1c5dc47SRobert Mustacchiqe_status64=$qe_root/quick_exit_status.64 31*d1c5dc47SRobert Mustacchiqe_order32=$qe_root/quick_exit_order.32 32*d1c5dc47SRobert Mustacchiqe_order64=$qe_root/quick_exit_order.64 33*d1c5dc47SRobert Mustacchi 34*d1c5dc47SRobert Mustacchifunction fatal 35*d1c5dc47SRobert Mustacchi{ 36*d1c5dc47SRobert Mustacchi typeset msg="$*" 37*d1c5dc47SRobert Mustacchi echo "Test Failed: $msg" >&2 38*d1c5dc47SRobert Mustacchi exit 1 39*d1c5dc47SRobert Mustacchi} 40*d1c5dc47SRobert Mustacchi 41*d1c5dc47SRobert Mustacchifunction check_status 42*d1c5dc47SRobert Mustacchi{ 43*d1c5dc47SRobert Mustacchi typeset stat=$1 44*d1c5dc47SRobert Mustacchi $qe_status32 $stat 45*d1c5dc47SRobert Mustacchi if [[ $? -ne $stat ]]; then 46*d1c5dc47SRobert Mustacchi fatal "Test failed: Expected $qestatus32 to exit $stat " \ 47*d1c5dc47SRobert Mustacchi "got $?" 48*d1c5dc47SRobert Mustacchi fi 49*d1c5dc47SRobert Mustacchi 50*d1c5dc47SRobert Mustacchi $qe_status64 $stat 51*d1c5dc47SRobert Mustacchi if [[ $? -ne $stat ]]; then 52*d1c5dc47SRobert Mustacchi fatal "Test failed: Expected $qestatus64 to exit $stat " \ 53*d1c5dc47SRobert Mustacchi "got $?" >&2 54*d1c5dc47SRobert Mustacchi fi 55*d1c5dc47SRobert Mustacchi} 56*d1c5dc47SRobert Mustacchi 57*d1c5dc47SRobert Mustacchifunction check_order 58*d1c5dc47SRobert Mustacchi{ 59*d1c5dc47SRobert Mustacchi $qe_order32 || fatal "$qe_order32 returned $?" 60*d1c5dc47SRobert Mustacchi $qe_order64 || fatal "$qe_order32 returned $?" 61*d1c5dc47SRobert Mustacchi} 62*d1c5dc47SRobert Mustacchi 63*d1c5dc47SRobert Mustacchicheck_status 0 64*d1c5dc47SRobert Mustacchicheck_status 23 65*d1c5dc47SRobert Mustacchicheck_status 42 66*d1c5dc47SRobert Mustacchicheck_order 67*d1c5dc47SRobert Mustacchiexit 0 68