123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- #!/bin/sh
- #
- # Command library that provides a boilerplate set of functions and variables
- # required for all bourne shell based scripts.
- #
- # Copyright (C) 2009, Cisco Systems Inc.
- #
- # This program is free software; you can redistribute it and/or modify
- # it under the terms of the GNU General Public License as published by
- # the Free Software Foundation; either version 2 of the License, or
- # (at your option) any later version.
- #
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- # GNU General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License along
- # with this program; if not, write to the Free Software Foundation, Inc.,
- # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- #
- # Ngie Cooper, August 2009
- #
- set -u
- export SHELL_DEBUG=${SHELL_DEBUG:=0}
- if [ "x$SHELL_DEBUG" = x1 ] ; then
- set -x
- fi
- #=============================================================================
- # FUNCTION: tst_cleanup
- # PURPOSE: Clean up after a testcase.
- #=============================================================================
- tst_cleanup()
- {
- # Disable the trap EXIT handler.
- trap '' EXIT
- # To ensure set -u passes...
- TCtmp=${TCtmp:=}
- tst_resm TINFO "Cleaning up."
- # Nuke the testcase temporary directory if it exists.
- [ -d "$TCtmp" ] && rm -rf "$TCtmp"
- }
- #=============================================================================
- # FUNCTION: setup
- # PURPOSE: Setup the test environment.
- #=============================================================================
- tst_setup()
- {
- TST_COUNT=1
- TST_TOTAL=${TST_TOTAL:=1}
- export TCID TST_COUNT TST_TOTAL
- for varname in TST_TOTAL; do
- if eval "test -z \"\$${varname}\""; then
- end_testcase "You must set ${varname} before calling setup()."
- fi
- done
- LTPROOT=${LTPROOT:="../../../../"}
- TEMPDIR=${TEMPDIR:=/tmp}
- TCtmp=${TCtmp:=$TEMPDIR/$TC$$}
- # User wants a temporary sandbox to play with.
- if [ -n "$TCtmp" -a "$TCtmp" != "$TEMPDIR/$$" ] ; then
- test -d "$TCtmp" || mkdir -p "$TCtmp"
- # Clean up on exit.
- trap tst_cleanup EXIT
- fi
- }
- #=============================================================================
- # FUNCTION NAME: end_testcase
- #
- # FUNCTION DESCRIPTION: Print out whether or not a test failed. Do not use
- # this when TBROK messages should be applied.
- #
- # PARAMETERS: Failure message, or "" / unset if passed.
- #
- # RETURNS: None.
- #=============================================================================
- end_testcase()
- {
- if [ $# -eq 0 ]; then
- tst_resm TPASS "Test successful"
- exit 0
- else
- tst_resm TFAIL "Test broken: $*"
- exit 1
- fi
- }
- #=============================================================================
- # FUNCTION: exists
- # PURPOSE: Check if command(s) used by this test script exist.
- #=============================================================================
- exists()
- {
- for cmd in $*; do
- if ! command -v $cmd >/dev/null 2>&1; then
- end_testcase "$cmd: command not found"
- exit 1
- fi
- done
- }
- incr_tst_count()
- {
- : $(( TST_COUNT += 1 ))
- }
- tst_require_root()
- {
- if [ "x$(id -u)" != "x0" ]; then
- tst_resm TCONF "You must be root to execute this test"
- exit 0
- fi
- }
- #
- # $0 is maintained by the caller script; tested on FreeBSD (ash) and Gentoo
- # GNU/Linux (bash) -- assuming you aren't calling this from another function
- # or command:
- #
- # foo.sh:
- # echo ${0##*/}
- # . ${$0%%*}/bar.sh
- # bar.sh:
- # echo ${0##*/}
- # echo $SHELL
- #
- # Gentoo:
- # gcooper@orangebox ~/Desktop $ ./foo.sh
- # foo.sh
- # foo.sh
- # /bin/bash
- # gcooper@orangebox ~/Desktop $ uname -sr
- # Linux 2.6.29-gentoo-r5
- #
- # FreeBSD:
- # $ ./foo.sh
- # foo.sh
- # foo.sh
- # /bin/sh
- # $ uname -sr
- # FreeBSD 8.0-BETA2
- #
- TCID=${TCID:=}
- [ -z "$TCID" ] && TCID=${0##*/}
- TC=$(echo "$TCID" | awk '{ sub( /[0-9]+$/,""); print; }')
- . daemonlib.sh
|