feat: trust topmost installed dependents

This commit is contained in:
bryanpedini committed 2026-11-02 20:32:18 +01:00
1 parent 6da4312f5c
commit a059e37564
3 files changed
+112 -3

No files matched your search

+44
View File
@@ -555,3 +555,47 @@ UPGRADE='apt-get -y -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--forc
assert_line 'su-dummy-b: dummy package su-dummy-b for skeptical-updater tests'
refute_output --partial '=[3] su-dummy-c'
}
@test "N++ trusts the topmost installed dependent and its dependencies" {
run skup --no-refresh <<<$'2++\nq'
assert_success
assert_line 'trusted su-dummy-a (+1 dependency: su-dummy-b)'
run cut -f2,3 "$STATE_FILE"
assert_line "su-dummy-a${T}user"
assert_line "su-dummy-b${T}dep:su-dummy-a"
}
@test "N++ trusts all topmost branches including packages outside the list" {
local fixture_data="$BATS_TEST_TMPDIR/data"
cp -R "$FAKE_DATA" "$fixture_data"
printf 'su-dummy-b\nReverse Depends:\n su-dummy-a\n su-dummy-c\n' >"$fixture_data/apt/rdepends/su-dummy-b"
printf 'su-dummy-a\nReverse Depends:\n su-dummy-w\n' >"$fixture_data/apt/rdepends/su-dummy-a"
sed -i 's/su-virtual | su-dummy-alt/su-dummy-a/; s/^ii \(.*su-dummy-c\)\t\t\t\t/ii \1\t\tsu-dummy-b\t/' "$fixture_data/apt/dpkg-status.tsv"
FAKE_DATA="$fixture_data" run skup --no-refresh <<<$'2++\nq'
assert_success
assert_output --partial 'trusted su-dummy-c'
assert_output --partial 'trusted su-dummy-w'
run cut -f2,3 "$STATE_FILE"
assert_line "su-dummy-c${T}user"
assert_line "su-dummy-w${T}user"
assert_line "su-dummy-a${T}dep:su-dummy-w"
}
@test "N++ terminates on a dependency cycle and chooses one root" {
local fixture_data="$BATS_TEST_TMPDIR/data"
cp -R "$FAKE_DATA" "$fixture_data"
printf 'su-dummy-a\nReverse Depends:\n su-dummy-b\n' >"$fixture_data/apt/rdepends/su-dummy-a"
sed -i 's/^ii \(.*su-dummy-b\)\t\t\t\t/ii \1\t\tsu-dummy-a\t/' "$fixture_data/apt/dpkg-status.tsv"
FAKE_DATA="$fixture_data" run skup --no-refresh <<<$'2++\nq'
assert_success
assert_output --partial 'trusted su-dummy-a'
run cut -f2,3 "$STATE_FILE"
assert_line "su-dummy-a${T}user"
assert_line "su-dummy-b${T}dep:su-dummy-a"
}
@test "N++ trusts the package itself when it has no installed dependents" {
run skup --no-refresh <<<$'3++\nq'
assert_success
assert_line 'trusted su-dummy-c'
}