summaryrefslogtreecommitdiffstats
path: root/t/superuser--rpmnew.t
blob: 9714d143e6b4ae89f8a547ac794f7d441cc6cc59 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#!/usr/bin/perl

use strict;
use lib '.', 't';
use helper;
use Test::More 'no_plan';

my $medium_name = 'rpmnew';

my @names = ('config-noreplace', 'config', 'normal');

need_root_and_prepare();

urpmi_addmedia("$medium_name $::pwd/media/$medium_name");

test(['orig', 'orig', 'orig'],
     ['orig', 'orig', 'orig'],
     ['changed', 'changed', 'changed']);

system("echo foo > $::pwd/root/etc/$_") foreach @names;

test(['foo', 'foo', 'orig'],
     ['foo', 'foo', 'orig'],
     ['foo', 'foo', 'changed']);

sub check_content {
    my ($rpm, $config_noreplace, $config, $normal) = @_;

    check_one_content($rpm, 'config-noreplace', $config_noreplace);
    check_one_content($rpm, 'config', $config);
    check_one_content($rpm, 'normal', $normal);
}

sub check_one_content {
    my ($rpm, $name, $val) = @_;
    my $s = `cat $::pwd/root/etc/$name`;
    chomp $s;
    is($s, $val, "$name for $rpm");
}

sub test {
    my ($v1, $v2, $v3) = @_;

    system_("rpm --root $::pwd/root -i media/$medium_name/a-1-*.rpm");
    is(`rpm -qa --root $::pwd/root`, "a-1-1\n");
    check_content('a-1', @$v1);

    system_("rpm --root $::pwd/root -U media/$medium_name/a-2-*.rpm");
    is(`rpm -qa --root $::pwd/root`, "a-2-1\n");
    check_content('a-2', @$v2);

    system_("rpm --root $::pwd/root -U media/$medium_name/a-3-*.rpm");
    is(`rpm -qa --root $::pwd/root`, "a-3-1\n");
    check_content('a-3', @$v3);

    system_("rpm --root $::pwd/root -e a");
}