This repository has been archived on 2024-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
dagger/tests/test-test.sh

113 lines
3.3 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
set -o errexit -o errtrace -o functrace -o nounset -o pipefail
# The purpose of this is solely to test::one the test::one framework in test-lib.sh
readonly d=$(cd "$(dirname "${BASH_SOURCE[0]:-$PWD}")" 2>/dev/null 1>&2 && pwd)
# Performing self-diagnostic linting check first
shellcheck "$d/"*.sh
# shellcheck source=/dev/null
. "$d/test-lib.sh"
########################################################################
# Verifying the test::one framework is working
########################################################################
self::command(){
local stdout="${1:-}"
local stderr="${2:-}"
local ret="${3:-0}"
printf "%s" "$stdout"
>&2 printf "%s" "$stderr"
exit "$ret"
}
self::test(){
# Command success testing
test::one "Command success, no expectation should succeed" self::command || {
logger::error "FAIL!"
exit 1
}
test::one "Command success, --exit=0 should succeed" self::command --exit=0 || {
logger::error "FAIL!"
exit 1
}
test::one "Command success, --exit=1 should fail" self::command --exit=1 && {
logger::error "FAIL!"
exit 1
}
test::one "Command success, matching --stderr should succeed" self::command "" "to err" --stderr="to err" || {
logger::error "FAIL!"
exit 1
}
test::one "Command success, non matching --stderr should fail" self::command --stderr="to stderr" && {
logger::error "FAIL!"
exit 1
}
test::one "Command success, matching --stdout foo should succeed" self::command "lol foo" --stdout="lol foo" || {
logger::error "FAIL!"
exit 1
}
test::one "Command success, non matching --stdout should fail" self::command "lol foo" --stdout="lol" && {
logger::error "FAIL!"
exit 1
}
test::one "Command success, all expectation match should succeed" self::command "lol" --exit=0 --stdout="lol" --stderr= || {
logger::error "FAIL!"
exit 1
}
# Command failure testing
test::one "Command failure, no expectation should fail" self::command "" "" 10 && {
logger::error "FAIL!"
exit 1
}
test::one "Command failure, --exit=0 should fail" self::command "" "" 10 --exit=0 && {
logger::error "FAIL!"
exit 1
}
test::one "Command failure, --exit=10 should succeed" self::command "" "" 10 --exit=10 || {
logger::error "FAIL!"
exit 1
}
test::one "Command failure, matching --stderr should succeed" self::command "" "" 10 --exit=10 --stderr= || {
logger::error "FAIL!"
exit 1
}
test::one "Command failure, non matching --stderr should fail" self::command "" "" 10 --exit=10 --stderr=lala && {
logger::error "FAIL!"
exit 1
}
test::one "Command failure, matching --stdout should succeed" self::command "to stdout" "" 10 --exit=10 --stdout="to stdout" || {
logger::error "FAIL!"
exit 1
}
test::one "Command failure, non matching --stdout should fail" self::command "to stdout" "" 10 --exit=10 --stdout="non matching" && {
logger::error "FAIL!"
exit 1
}
test::one "Command failure, all expectation match should succeed" self::command "to stdout" "to stderr" 10 --exit=10 --stdout="to stdout" --stderr="to stderr" || {
logger::error "FAIL!"
exit 1
}
}
>&2 logger::info "Performing self-diagnostic"
self::test
>&2 logger::info "All tests successful. Test framework is operational."