summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--t/cfg.t48
-rw-r--r--urpm/cfg.pm15
2 files changed, 59 insertions, 4 deletions
diff --git a/t/cfg.t b/t/cfg.t
new file mode 100644
index 00000000..6845b890
--- /dev/null
+++ b/t/cfg.t
@@ -0,0 +1,48 @@
+#!/usr/bin/perl
+
+use Test::More tests => 4;
+use MDK::Common;
+
+BEGIN { use_ok 'urpm::cfg' }
+
+my $file = 'testurpmi.cfg';
+open my $f, '>', $file or die $!;
+print $f (my $cfgtext = <<URPMICFG);
+{
+ downloader: wget
+ fuzzy: no
+ verify-rpm: 0
+}
+
+update\\ 1 http://foo/bar/ {
+ compress: 1
+ fuzzy: 1
+ keep: yes
+ update
+ verify-rpm: yes
+}
+
+update_2 ftp://foo/bar/ {
+ hdlist: hdlist.update2.cz
+ ignore
+ priority-upgrade: kernel
+ synthesis
+ with_hdlist: hdlist.update2.cz
+}
+
+URPMICFG
+close $f;
+
+my $config = urpm::cfg::load_config($file);
+ok( ref $config, 'config loaded' );
+
+ok( urpm::cfg::dump_config($file.2, $config), 'config written' );
+
+$cfgtext =~ s/\byes\b/1/g;
+$cfgtext =~ s/\bno\b/0/g;
+my $cfgtext2 = cat_($file.2);
+$cfgtext2 =~ s/# generated.*\n//;
+is( $cfgtext, $cfgtext2, 'config is the same' )
+ or system qw( diff -u ), $file, $file.2;
+
+END { unlink $file, $file.2 }
diff --git a/urpm/cfg.pm b/urpm/cfg.pm
index 0d9238d2..2b50c6f9 100644
--- a/urpm/cfg.pm
+++ b/urpm/cfg.pm
@@ -104,8 +104,9 @@ sub load_config ($) {
|auto
|resume)(?:\s*:\s*(.*))?$/x
) {
- my $yes = !$no;
- $config{$medium}{$k} = $v =~ /^(yes|on|1|)$/i ? $yes : !$yes;
+ my $yes = $no ? 0 : 1;
+ $no = $yes ? 0 : 1;
+ $config{$medium}{$k} = $v =~ /^(yes|on|1|)$/i ? $yes : $no;
next;
}
#- obsolete
@@ -129,8 +130,12 @@ sub dump_config ($$) {
};
print $f "# generated ".(scalar localtime)."\n";
for my $m (@media) {
- print $f quotespace($m), ' ', quotespace($config->{$m}{url}), " {\n";
- for (grep { $_ ne 'url' } keys %{$config->{$m}}) {
+ if ($m) {
+ print $f quotespace($m), ' ', quotespace($config->{$m}{url}), " {\n";
+ } else {
+ print $f "{\n";
+ }
+ for (sort grep { $_ ne 'url' } keys %{$config->{$m}}) {
if (/^(update|ignore|synthesis|virtual)$/) {
print $f " $_\n";
} else {
@@ -143,6 +148,8 @@ sub dump_config ($$) {
return 1;
}
+1;
+
__END__
=back