#!/bin/bash # Prepare and run a test # # Copyright (C) 2014 Mike Gerwitz # # This file is part of pkgsh. # # pkgsh 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 3 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, see . # # This sets up the environment prior to running a test. ## # change wd to root to place us in a known state for sourcing declare -r __wd_orig="$( pwd )" cd "$( dirname "$0" )/../" || { echo "fatal: could not determine root directory" >&2 exit 1 } ## # Provide command to output assertion on failure # # We do not override the `test` builtin, as this would also affect pkgsh # itself. # assert() { test "$@" || { local -i code=$? echo "assertion failed: \`$@\` in ${BASH_SOURCE[1]}:${BASH_LINENO[0]}" echo -n 'prev: ' caller 1 return $code } >&2 } main() { local tpath="$1" # fail on any sort of command failure set -e source "$__wd_orig/$tpath" } main "${1?Missing test path}"