summaryrefslogtreecommitdiff
path: root/src/t
diff options
context:
space:
mode:
Diffstat (limited to 'src/t')
-rw-r--r--src/t/100_dpkg_divert.t45
1 files changed, 43 insertions, 2 deletions
diff --git a/src/t/100_dpkg_divert.t b/src/t/100_dpkg_divert.t
index 6d62fe561..f1e2775f0 100644
--- a/src/t/100_dpkg_divert.t
+++ b/src/t/100_dpkg_divert.t
@@ -33,11 +33,13 @@ if (! -x "@dd") {
exit(0);
}
-plan tests => 251;
+plan tests => 257;
sub cleanup {
system("rm -rf $tmpdir && mkdir -p $testdir");
- system("mkdir -p $admindir/updates && touch $admindir/status");
+ system("mkdir -p $admindir/updates");
+ system("rm -f $admindir/status && touch $admindir/status");
+ system("rm -rf $admindir/info && mkdir -p $admindir/info");
}
sub install_diversions {
@@ -47,6 +49,27 @@ sub install_diversions {
close(O);
}
+sub install_filelist {
+ my ($pkg, $arch, @files) = @_;
+ open(L, "> $admindir/info/$pkg.list");
+ for my $file (@files) {
+ print L "$file\n";
+ }
+ close(L);
+ # Only installed packages have their files list considered.
+ open(S, ">> $admindir/status");
+ print S <<EOF;
+Package: $pkg
+Status: install ok installed
+Version: 0
+Architecture: $arch
+Maintainer: dummy
+Description: dummy
+
+EOF
+ close(S);
+}
+
sub call {
my ($prog, $args, %opts) = @_;
@@ -392,6 +415,24 @@ EOF
cleanup();
+note("Adding diversion of file owned by --package");
+
+install_filelist("coreutils", "i386", "$testdir/foo");
+install_diversions('');
+system("touch $testdir/foo");
+
+call_divert(['--quiet', '--rename', '--add', '--package', 'coreutils', "$testdir/foo"],
+ expect_stderr => '', expect_stdout => '');
+ok(-e "$testdir/foo", "foo not renamed");
+ok(!-e "$testdir/foo.distrib", "foo renamed");
+diversions_eq(<<EOF);
+$testdir/foo
+$testdir/foo.distrib
+coreutils
+EOF
+
+cleanup();
+
note("Remove diversions");
install_diversions('');