diff options
Diffstat (limited to 't/superuser--file-conflicts.t')
-rw-r--r-- | t/superuser--file-conflicts.t | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/t/superuser--file-conflicts.t b/t/superuser--file-conflicts.t new file mode 100644 index 00000000..8580b6f5 --- /dev/null +++ b/t/superuser--file-conflicts.t @@ -0,0 +1,75 @@ +#!/usr/bin/perl + +use strict; +use lib '.', 't'; +use helper; +use Expect; +use urpm::util; +use Test::More 'no_plan'; + +need_root_and_prepare(); + +my $medium_name = 'file-conflicts'; + +urpmi_addmedia("$medium_name $::pwd/media/$medium_name"); + + +test_rpm_same_transaction(); +test_rpm_different_transactions(); + +test_urpmi_same_transaction(); +test_urpmi_different_transactions(); + +sub test_rpm_same_transaction { + # disabled, fail + #test_rpm_i_fail('a', 'b'); + #check_nothing_installed(); + + test_rpm_i_succeeds('a', 'c'); + check_installed_and_remove('a', 'c'); +} + +sub test_rpm_different_transactions { + test_rpm_i_succeeds('a'); + + test_rpm_i_fail('b'); + check_installed_names('a'); + + test_rpm_i_succeeds('c'); + check_installed_and_remove('a', 'c'); +} + +sub test_urpmi_same_transaction { + # disabled, fail + #test_urpmi_fail('a', 'b'); + #check_nothing_installed(); + + urpmi('a c'); + check_installed_and_remove('a', 'c'); +} + +sub test_urpmi_different_transactions { + urpmi('a'); + + test_urpmi_fail('b'); + check_installed_names('a'); + + # disabled, fail when dropping RPMTAG_FILEDIGESTS + #urpmi('c'); + #check_installed_and_remove('a', 'c'); +} + +sub test_rpm_i_succeeds { + my (@rpms) = @_; + my $rpms = join(' ', map { "media/$medium_name/$_-*.rpm" } @rpms); + system_("rpm --root $::pwd/root -i $rpms"); +} +sub test_rpm_i_fail { + my (@rpms) = @_; + my $rpms = join(' ', map { "media/$medium_name/$_-*.rpm" } @rpms); + system_should_fail("rpm --root $::pwd/root -i $rpms"); +} +sub test_urpmi_fail { + my ($rpms) = @_; + system_should_fail(urpmi_cmd() . " $rpms"); +} |