#!/bin/bash set -e set -E declare -r ME="$(basename "$0")" declare -r OPTS=("$@") declare -a PROVE_OPTS=() NGCP_TESTS_MODE=${NGCP_TESTS_MODE:=prove} error() { if [ "${NGCP_TESTS_MODE}" = 'tap' ]; then echo "Bail out! $*" >&2 else echo "$ME: error: $*" >&2 fi exit 1 } usage() { cat <...] Options: --mode Operation mode to use. Values: jenkins, tap, prove. -h, --help Print this help message and exit. HELP } get_options() { local _cmdline_opts="help,mode:" local _opt_temp _opt_temp=$(getopt -n "${ME}" -o 'h' -l "${_cmdline_opts}" -- "${OPTS[@]}") eval set -- "${_opt_temp}" while :; do case "$1" in --help|-h) usage exit 0 ;; --mode) shift NGCP_TESTS_MODE="$1" ;; --) shift break ;; *) error "Internal getopt error! $1" ;; esac shift done PROVE_OPTS=("$@") } if ! [ -d /etc/ngcp-system-tests/ ]; then error "Missing system test suite files, please run 'ngcpcfg build'" fi get_options "$@" case "${NGCP_TESTS_MODE}" in jenkins) export GOSS_NOCOLOR=true $0 --mode=tap ;; prove) export NGCP_TESTS_MODE=tap prove "${PROVE_OPTS[@]}" -f "$0" ;; *) DEBIAN_RELEASE=$(sed -e 's/\([0-9]*\)\..*/\1/' /etc/debian_version) # Translate Debian codenames that don't have a version number (yet) into # according numbers case "${DEBIAN_RELEASE}" in bookworm*) DEBIAN_RELEASE=12 ;; trixie*) DEBIAN_RELEASE=13 ;; esac export DEBIAN_RELEASE # Use an actual variable so that the values do not evaluate as strings, # and thus as always true. if [ "$(ngcp-check-active -v)" = 'active' ]; then NODE_ACTIVE=true else NODE_ACTIVE=false fi VARS=$(mktemp --tmpdir ngcp-system-tests.XXXXXXXXXX.yaml) trap 'rm -f "${VARS}"' EXIT cat >"${VARS}" <<-EOF SKIP_DNS_CHECK_TEST: ${SKIP_DNS_CHECK_TEST:-false} NODE_ACTIVE: ${NODE_ACTIVE} EOF PLAN='/etc/ngcp-system-tests/goss.yaml' goss --gossfile "${PLAN}" --vars "${VARS}" \ validate --format "${NGCP_TESTS_MODE}" ;; esac