From 3acd48aad8be07754581650ee6400de88073290c Mon Sep 17 00:00:00 2001 From: "Danilo M." Date: Sat, 11 Jul 2026 11:01:12 +0200 Subject: Add collect_shadows dup detection + self-check Finds upstream SBo packages shadowed by a personal-tree twin, read-only, no removal. Personal package = subdir with matching .SlackBuild; prune array excludes every SBO_PERSONAL_TREES path from the search so a personal package never lists itself. Co-Authored-By: Claude Opus 4.8 --- test-logic.sh | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'test-logic.sh') diff --git a/test-logic.sh b/test-logic.sh index 423d2b5..cbdef9d 100755 --- a/test-logic.sh +++ b/test-logic.sh @@ -152,6 +152,28 @@ echo "$ex" | grep -qx -- "--exclude=/pentesting/" && ok "rsync_excludes pentesti declare -A SBO_PERSONAL_TREES=() [[ -z "$(rsync_excludes)" ]] && ok "rsync_excludes empty for no trees" || bad "rsync_excludes should be empty, got [$(rsync_excludes)]" +# --- collect_shadows: upstream dups of personal packages ------------------- +S=$(mktemp -d) +mkslb() { mkdir -p "$S/$1/$2"; : > "$S/$1/$2/$2.SlackBuild"; } +# upstream copies +mkslb academic foo +mkslb network bar +# personal copies (win) +mkslb personal foo +mkslb pentesting bar +# decoy: personal pkg with no upstream twin +mkslb personal nomatch +# decoy: personal subdir without a .SlackBuild (ignored) +mkdir -p "$S/personal/noslb" +declare -A SBO_PERSONAL_TREES=([personal]=u1 [pentesting]=u2) + +got="$(collect_shadows "$S" | sort)" +want="$(printf 'academic/foo\nnetwork/bar\n' | sort)" +[[ "$got" == "$want" ]] && ok "collect_shadows finds upstream dups only" || bad "collect_shadows wrong; got [$got] want [$want]" +echo "$got" | grep -q "personal/" && bad "collect_shadows returned a personal path" || ok "collect_shadows excludes personal trees" +echo "$got" | grep -q "nomatch" && bad "collect_shadows invented a match for nomatch" || ok "collect_shadows ignores no-twin pkg" +rm -rf "$S" + # --- result ----------------------------------------------------------------- echo echo "$pass passed, $fail failed" -- cgit v1.2.3