feat: purge selected packages in one transaction
This commit is contained in:
1 parent
2aa0a21056
commit
57a3dc97d6
5 files changed
+222
-67
No files matched your search
@@ -457,3 +457,82 @@ UPGRADE='apt-get -y -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--forc
|
||||
assert_line ' [3] su-dummy-c 1.0 -> 2.0 file:/srv/su-repo ./ [held]'
|
||||
assert_line 'su-dummy-c: dummy package su-dummy-c for skeptical-updater tests'
|
||||
}
|
||||
|
||||
@test "Nx: consecutive purges use one transaction including orphans" {
|
||||
FAKE_APT_AUTO_ORPHANS=su-dummy-a:su-dummy-b run skup --no-refresh <<<$'1x 3x\ny\nq'
|
||||
assert_success
|
||||
assert_line 'Purge su-dummy-a su-dummy-c now? This also removes: su-dummy-b [y/N] y'
|
||||
assert_line 'purged: su-dummy-a su-dummy-b su-dummy-c'
|
||||
assert_line 'Nothing left to upgrade.'
|
||||
log_has 'apt-get -y purge su-dummy-a su-dummy-b su-dummy-c'
|
||||
}
|
||||
|
||||
@test "Nx: other commands flush the batch before resolving removed rows" {
|
||||
FAKE_APT_AUTO_ORPHANS=su-dummy-a:su-dummy-b run skup --no-refresh <<<$'1x 2? 3x\ny\ny\nq'
|
||||
assert_success
|
||||
assert_line 'purged: su-dummy-a su-dummy-b'
|
||||
assert_output --partial 'no package [2] in the list'
|
||||
assert_line 'Purge su-dummy-c now? [y/N] y'
|
||||
assert_line 'purged: su-dummy-c'
|
||||
}
|
||||
|
||||
@test "Nx: a trust command cannot act on a removed row" {
|
||||
FAKE_APT_AUTO_ORPHANS=su-dummy-a:su-dummy-b run skup --no-refresh <<<$'1x 2+\ny\nq'
|
||||
assert_success
|
||||
assert_output --partial 'no package [2] in the list'
|
||||
assert_line 'purged: su-dummy-a su-dummy-b'
|
||||
}
|
||||
|
||||
@test "Nx: duplicate targets are purged once" {
|
||||
run skup --no-refresh <<<$'3x 3x\ny\nq'
|
||||
assert_success
|
||||
assert_line 'Purge su-dummy-c now? [y/N] y'
|
||||
assert_line 'purged: su-dummy-c'
|
||||
log_has 'apt-get -y purge su-dummy-c'
|
||||
}
|
||||
|
||||
@test "Nx: a refused target does not prevent other purges" {
|
||||
run skup --no-refresh <<<$'2x 3x\ny\nl\nq'
|
||||
assert_success
|
||||
assert_line 'not purged: su-dummy-b is required by: su-dummy-a - purge the dependents first'
|
||||
assert_line 'purged: su-dummy-c'
|
||||
log_has 'apt-get -y purge su-dummy-c'
|
||||
}
|
||||
|
||||
@test "Nx: invalid numbers do not interrupt a batch" {
|
||||
FAKE_APT_AUTO_ORPHANS=su-dummy-a:su-dummy-b run skup --no-refresh <<<$'1x 9x 3x\ny\nq'
|
||||
assert_success
|
||||
assert_output --partial 'no package [9] in the list'
|
||||
assert_line 'purged: su-dummy-a su-dummy-b su-dummy-c'
|
||||
log_has 'apt-get -y purge su-dummy-a su-dummy-b su-dummy-c'
|
||||
}
|
||||
|
||||
@test "Nx: rejecting the prompt purges nothing" {
|
||||
run skup --no-refresh <<<$'1x 3x\nn\nl\nq'
|
||||
assert_success
|
||||
assert_line 'not purged: su-dummy-a su-dummy-c'
|
||||
assert_line '3 upgradable, 0 trusted (hidden, use --all to show), 3 to review:'
|
||||
log_lacks '^apt-get -y purge'
|
||||
}
|
||||
|
||||
@test "Nx: failed transaction keeps all rows" {
|
||||
FAKE_APT_PURGE_RC=100 run skup --no-refresh <<<$'1x 3x\nyes\nl\nq'
|
||||
assert_success
|
||||
assert_output --partial 'purge of su-dummy-a su-dummy-c failed (apt exited 100); the rows stay in the list'
|
||||
assert_line '3 upgradable, 0 trusted (hidden, use --all to show), 3 to review:'
|
||||
}
|
||||
|
||||
@test "Nx: a dependent and dependency are planned together" {
|
||||
FAKE_APT_AUTO_ORPHANS=su-dummy-a:su-dummy-b run skup --no-refresh <<<$'2x 1x\ny\nq'
|
||||
assert_success
|
||||
assert_line 'Purge su-dummy-a su-dummy-b now? [y/N] y'
|
||||
assert_line 'purged: su-dummy-a su-dummy-b'
|
||||
log_has 'apt-get -y purge su-dummy-a su-dummy-b'
|
||||
}
|
||||
|
||||
@test "Nx: unexpected removals never leak into another target's purge" {
|
||||
FAKE_APT_SIM_EXTRA=su-dummy-a:su-dummy-c run skup --no-refresh <<<$'1x 2x\ny\nq'
|
||||
assert_success
|
||||
assert_output --partial 'would also remove su-dummy-c'
|
||||
log_lacks '^apt-get -y purge'
|
||||
}
|
||||
Reference in new issue
Block a user