diff options
| author | Craig Jennings <c@cjennings.net> | 2026-07-25 15:00:44 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-07-25 15:00:44 -0500 |
| commit | d52da959bc416e09bc0f3e54994563bd80e19c64 (patch) | |
| tree | adaf2ce086e87c548c695e5b4a82eb63f7c926c8 /scripts/testing/run-maint-nspawn.sh | |
| parent | d25711a61172ffb7b622a6a834ed17fdf52a54de (diff) | |
| download | archsetup-d52da959bc416e09bc0f3e54994563bd80e19c64.tar.gz archsetup-d52da959bc416e09bc0f3e54994563bd80e19c64.zip | |
refactor(test): share runner and scenario contracts
Diffstat (limited to 'scripts/testing/run-maint-nspawn.sh')
| -rw-r--r-- | scripts/testing/run-maint-nspawn.sh | 60 |
1 files changed, 1 insertions, 59 deletions
diff --git a/scripts/testing/run-maint-nspawn.sh b/scripts/testing/run-maint-nspawn.sh index 04d4a32..dcc7c16 100644 --- a/scripts/testing/run-maint-nspawn.sh +++ b/scripts/testing/run-maint-nspawn.sh @@ -32,6 +32,7 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" source "$SCRIPT_DIR/lib/logging.sh" +source "$SCRIPT_DIR/lib/maint-scenario.sh" SCENARIO_DIR="${MAINT_SCENARIO_DIR:-$SCRIPT_DIR/maint-scenarios}" MAINT_SRC="${MAINT_SRC:-$HOME/.dotfiles/maint/src/maint}" @@ -63,29 +64,6 @@ done S_FILES=() S_NAMES=() S_DESCS=() -_scenario_var() { # <file> <varname> - bash -c 'set -eu; source "$1" || exit 9; eval "printf %s \"\${$2-}\""' \ - _probe "$1" "$2" 2>/dev/null -} - -_validate_scenario() { # <file> -> fatal on contract violation - local f="$1" base probe_err - base=$(basename "$f") - probe_err=$(bash -c 'set -eu; source "$1" - : "${SCENARIO_DESC:?missing SCENARIO_DESC}" - : "${SCENARIO_GROUP:?missing SCENARIO_GROUP}" - : "${SCENARIO_PROFILES:?missing SCENARIO_PROFILES}" - for p in $SCENARIO_PROFILES; do - case "$p" in btrfs|zfs|any) ;; *) - echo "bad profile token: $p" >&2; exit 1 ;; - esac - done - declare -f scenario_break scenario_fix scenario_assert >/dev/null \ - || { echo "missing scenario_break/fix/assert" >&2; exit 1; }' \ - _probe "$f" 2>&1 >/dev/null) \ - || fatal "scenario contract violation in $base: $probe_err" -} - build_plan() { [ -d "$SCENARIO_DIR" ] || fatal "scenario dir not found: $SCENARIO_DIR" local f base @@ -212,42 +190,6 @@ success "Container ready" PASS=() FAIL=() -run_scenario() { # <index> - local i="$1" name="${S_NAMES[$1]}" f="${S_FILES[$1]}" - section "Scenario: $name — ${S_DESCS[$1]}" - # shellcheck disable=SC1090 - source "$f" - local ok=true - step "break" - if ! scenario_break; then - error "$name: break step failed" - ok=false - fi - if [ "$ok" = "true" ]; then - step "fix" - if ! scenario_fix; then - error "$name: fix step failed" - ok=false - fi - fi - if [ "$ok" = "true" ]; then - step "assert" - if ! scenario_assert; then - error "$name: post-state assertion failed" - ok=false - fi - fi - unset -f scenario_break scenario_fix scenario_assert - unset SCENARIO_DESC SCENARIO_GROUP SCENARIO_PROFILES - if [ "$ok" = "true" ]; then - success "PASS: $name" - PASS+=("$name") - else - error "FAIL: $name" - FAIL+=("$name") - fi -} - for i in "${!S_FILES[@]}"; do run_scenario "$i" done |
