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