Files
2026-07-01 00:32:47 +02:00

105 lines
2.5 KiB
Bash

#!/usr/bin/env bash
#
# lib.sh — shared helpers for E2E test suite.
#
# Test functions set a global $FAILURES counter and $FAILED list so the
# caller can exit non-zero after all suites have run.
#
# Sourced by run.sh — do NOT execute directly.
#
FAILURES=0
PASSES=0
FAILED_TESTS=""
assert_eq() {
local desc="$1" expected="$2" actual="$3"
if [[ "$expected" == "$actual" ]]; then
printf ' \033[1;32mPASS\033[0m %s\n' "$desc"
((++PASSES))
else
printf ' \033[1;31mFAIL\033[0m %s\n' "$desc"
printf ' expected: %q\n' "$expected"
printf ' actual: %q\n' "$actual"
((++FAILURES))
FAILED_TESTS+="$desc; "
fi
}
assert_contains() {
local desc="$1" haystack="$2" needle="$3"
if [[ "$haystack" == *"$needle"* ]]; then
printf ' \033[1;32mPASS\033[0m %s\n' "$desc"
((++PASSES))
else
printf ' \033[1;31mFAIL\033[0m %s\n' "$desc"
printf ' haystack did not contain: %q\n' "$needle"
((++FAILURES))
FAILED_TESTS+="$desc; "
fi
}
assert_not_contains() {
local desc="$1" haystack="$2" needle="$3"
if [[ "$haystack" != *"$needle"* ]]; then
printf ' \033[1;32mPASS\033[0m %s\n' "$desc"
((++PASSES))
else
printf ' \033[1;31mFAIL\033[0m %s\n' "$desc"
printf ' haystack unexpectedly contained: %q\n' "$needle"
((++FAILURES))
FAILED_TESTS+="$desc; "
fi
}
assert_match() {
local desc="$1" haystack="$2" regex="$3"
if [[ "$haystack" =~ $regex ]]; then
printf ' \033[1;32mPASS\033[0m %s\n' "$desc"
((++PASSES))
else
printf ' \033[1;31mFAIL\033[0m %s\n' "$desc"
printf ' did not match regex: %s\n' "$regex"
((++FAILURES))
FAILED_TESTS+="$desc; "
fi
}
assert_file_exists() {
local desc="$1" path="$2"
if [[ -e "$path" ]]; then
printf ' \033[1;32mPASS\033[0m %s\n' "$desc"
((++PASSES))
else
printf ' \033[1;31mFAIL\033[0m %s\n' "$desc"
printf ' file not found: %s\n' "$path"
((++FAILURES))
FAILED_TESTS+="$desc; "
fi
}
assert_gt() {
local desc="$1" a="$2" b="$3"
if (( a > b )); then
printf ' \033[1;32mPASS\033[0m %s (%s > %s)\n' "$desc" "$a" "$b"
((++PASSES))
else
printf ' \033[1;31mFAIL\033[0m %s (%s <= %s)\n' "$desc" "$a" "$b"
((++FAILURES))
FAILED_TESTS+="$desc; "
fi
}
summary() {
echo
printf -- '---\n'
printf 'passes: %d\n' "$PASSES"
printf 'failures: %d\n' "$FAILURES"
if [[ -n "$FAILED_TESTS" ]]; then
printf 'failed: %s\n' "$FAILED_TESTS"
fi
if (( FAILURES > 0 )); then
return 1
fi
}