da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin########################################################################
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# This software is part of the ast package #
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner# Copyright (c) 1982-2010 AT&T Intellectual Property #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# and is licensed under the #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# Common Public License, Version 1.0 #
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# by AT&T Intellectual Property #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# A copy of the License is available at #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# Information and Software Systems Research #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# AT&T Research #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# Florham Park NJ #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# David Korn <dgk@research.att.com> #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin########################################################################
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# test the behavior of return and exit with functions
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainztmp=$(mktemp -dt) || { err_exit mktemp -dt failed; exit 1; }
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin then return $2
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin then exit $2
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin then return $2
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin then exit $2
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin [[ $foo = EXIT ]] || err_exit "foo "$@" : exit trap not set"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if [[ -f $file ]]
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin(return 35)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin[[ $bar = EXIT ]] || err_exit "foo 2 0: bar exit trap not set"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin[[ $bar = EXIT ]] || err_exit "foo 2 3: bar exit trap not set"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthen err_exit "return in dot script is $ret should be 3"
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz# next line should fail and cause an exit
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinprint -r -- "$0"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinif [[ $x != $0 ]]
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinx=$($SHELL -i --norc 2> /dev/null <<\!
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chintypeset -i x=1/0
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinif [[ $x != hello ]]
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthen err_exit "interactive shell terminates with error in bltin"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinx=$( set -e
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinif [[ $x != '' ]]
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthen err_exit "set -e doesn't terminate script on error"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinx=$( set -e
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthen err_exit "exit 0 in trap should doesn't set exit value to 0"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthen err_exit "exit 8 in trap should set exit value to 8"