diff options
| author | Danilo M. <danix@danix.xyz> | 2026-07-13 10:36:37 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-07-13 10:36:37 +0200 |
| commit | f4dff4e6d537700314736dc1f28a53e3ab0e1da9 (patch) | |
| tree | 2c24766cf12acc9cc9670f8e1168752951dcc9da | |
| parent | 5d1fb3ab2e027176dfd29e6bcc69d606aa550c2b (diff) | |
| download | sbo-slackbuilds-f4dff4e6d537700314736dc1f28a53e3ab0e1da9.tar.gz sbo-slackbuilds-f4dff4e6d537700314736dc1f28a53e3ab0e1da9.zip | |
test-build: port BLOCKED-BY-DEP propagation
| -rwxr-xr-x | .extras/test-build | 17 | ||||
| -rw-r--r-- | .extras/test-logic.sh | 15 |
2 files changed, 32 insertions, 0 deletions
diff --git a/.extras/test-build b/.extras/test-build index 1f7920c..706d5ab 100755 --- a/.extras/test-build +++ b/.extras/test-build @@ -372,6 +372,23 @@ resolve_cache_root() { mkdir -p "$CACHE_ROOT" } +# Does SlackBuild dir $1 directly require any prog in the dead list (nameref $2)? +# Direct-requires check only; transitive blocking works because run_target +# iterates in topo order, propagating a failure one hop per package. +depends_on_failed() { + local dir="$1"; local -n failed="$2" + local info="$dir/$(basename "$dir").info" + local req tok f + req="$(read_requires "$info")" + for tok in $req; do + [[ "$tok" == "%README%" ]] && continue + for f in "${failed[@]:-}"; do + [[ "$tok" == "$f" ]] && return 0 + done + done + return 1 +} + main() { parse_args "$@" init_color diff --git a/.extras/test-logic.sh b/.extras/test-logic.sh index d4249bb..841793b 100644 --- a/.extras/test-logic.sh +++ b/.extras/test-logic.sh @@ -133,6 +133,21 @@ CACHE_ROOT_SAVE="$CACHE_ROOT"; USE_CACHE=0 [[ "$(cache_decision net libfoo 1.2)" == "new" ]] && ok "--no-cache disables (new)" || bad "disabled cache got [$(cache_decision net libfoo 1.2)]" USE_CACHE=1; CACHE_ROOT="$CACHE_ROOT_SAVE" +# --- BLOCKED-BY-DEP (depends_on_failed) ------------------------------------- +dead=(b) +if depends_on_failed "$T/cat/g" dead; then ok "g blocked when b dead"; else bad "g should block on b"; fi +if depends_on_failed "$T/cat/a" dead; then ok "a blocked when b dead (direct)"; else bad "a should block on b"; fi + +dead=(c) +if depends_on_failed "$T/cat/a" dead; then bad "a wrongly blocked on c"; else ok "a not directly blocked by c"; fi +if depends_on_failed "$T/cat/b" dead; then ok "b blocked when c dead"; else bad "b should block on c"; fi + +dead=() +if depends_on_failed "$T/cat/a" dead; then bad "a blocked with empty dead"; else ok "no block when nothing dead"; fi + +dead=("%README%") +if depends_on_failed "$T/cat/a" dead; then bad "%README% treated as dep"; else ok "%README% not treated as dep"; fi + echo echo "$pass passed, $fail failed" [[ $fail -eq 0 ]] || exit 1 |
