1 |
#!/usr/bin/perl |
2 |
|
3 |
use strict; |
4 |
use lib '.', 't'; |
5 |
use helper; |
6 |
use Test::More 'no_plan'; |
7 |
use Cwd 'getcwd'; |
8 |
|
9 |
|
10 |
need_root_and_prepare(); |
11 |
my $url = start_httpd(); |
12 |
|
13 |
my $name = 'various'; |
14 |
|
15 |
test($_) foreach 'various', 'various_no_subdir'; |
16 |
test_exotic_medium_name(); |
17 |
|
18 |
sub test { |
19 |
my ($medium_name) = @_; |
20 |
|
21 |
urpmi_addmedia("$medium_name $url/media/$medium_name"); |
22 |
urpmi($name); |
23 |
is(`rpm -qa --root $::pwd/root`, "$name-1-1\n"); |
24 |
urpme($name); |
25 |
urpmi_removemedia($medium_name); |
26 |
} |
27 |
|
28 |
sub test_exotic_medium_name { |
29 |
if (getcwd() =~ m!^/root/!) { |
30 |
warn "SKIPing test_exotic_medium_name() due to nobody having no access to /root/rpm*\n"; |
31 |
return; |
32 |
} |
33 |
my $medium_name = 'the medium (+name+)'; |
34 |
urpmi_addmedia("'$medium_name' $url/media/various"); |
35 |
|
36 |
# test urpmf/urpmq using synthesis |
37 |
is(run_urpm_cmd('urpmf --summary .'), "various:various\n"); |
38 |
is(run_urpm_cmd('urpmq --summary various'), "various : various ( 1-1 )\n"); |
39 |
|
40 |
# test urpmf/urpmq using info.xml.lzma as user |
41 |
mkdir 'root/tmp'; chmod 0777, 'root/tmp'; |
42 |
is(run_urpm_cmd_as_user('urpmf --sourcerpm .'), "various:various-1-1.src.rpm\n"); |
43 |
is(run_urpm_cmd_as_user('urpmq --sourcerpm various'), "various: various-1-1.src.rpm\n"); |
44 |
|
45 |
# test urpmf/urpmq using info.xml.lzma as root |
46 |
is(run_urpm_cmd('urpmf --sourcerpm .'), "various:various-1-1.src.rpm\n"); |
47 |
is(run_urpm_cmd('urpmq --sourcerpm various'), "various: various-1-1.src.rpm\n"); |
48 |
|
49 |
urpmi($name); |
50 |
is(`rpm -qa --root $::pwd/root`, "$name-1-1\n"); |
51 |
urpme($name); |
52 |
|
53 |
urpmi_removemedia("'$medium_name'"); |
54 |
} |
55 |
|
56 |
sub run_urpm_cmd_as_user { |
57 |
my ($cmd) = @_; |
58 |
my $full_cmd = "su nobody -c '" . urpm_cmd($cmd). "'"; |
59 |
warn "# $full_cmd\n"; |
60 |
`$full_cmd`; |
61 |
} |