diff options
Diffstat (limited to '.extras')
| -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 |
