[dpkg] 158/187: Dpkg::Dist::Files: Add new load_dir method

Reiner Herrmann reiner at reiner-h.de
Sun Nov 6 12:46:40 UTC 2016


This is an automated email from the git hooks/post-receive script.

deki-guest pushed a commit to branch master
in repository dpkg.

commit f89e053f3e3a6f0f73a9ce2c8dd2c72db93d44bb
Author: Guillem Jover <guillem at debian.org>
Date:   Thu Nov 3 03:38:44 2016 +0100

    Dpkg::Dist::Files: Add new load_dir method
    
    This method scans all fragment files inside a directory and loads
    each of them.
---
 scripts/Dpkg/Dist/Files.pm                 | 15 +++++++++++++++
 scripts/t/Dpkg_Dist_Files.t                | 16 +++++++++++++++-
 scripts/t/Dpkg_Dist_Files/files-fragment-a |  1 +
 scripts/t/Dpkg_Dist_Files/files-fragment-b |  1 +
 4 files changed, 32 insertions(+), 1 deletion(-)

diff --git a/scripts/Dpkg/Dist/Files.pm b/scripts/Dpkg/Dist/Files.pm
index c5d5fb0..2c4ab53 100644
--- a/scripts/Dpkg/Dist/Files.pm
+++ b/scripts/Dpkg/Dist/Files.pm
@@ -20,6 +20,8 @@ use warnings;
 
 our $VERSION = '0.01';
 
+use IO::Dir;
+
 use Dpkg::Gettext;
 use Dpkg::ErrorHandling;
 
@@ -101,6 +103,19 @@ sub parse {
     return $count;
 }
 
+sub load_dir {
+    my ($self, $dir) = @_;
+
+    my $count = 0;
+    my $dh = IO::Dir->new($dir) or syserr(g_('cannot open directory %s'), $dir);
+
+    while (defined(my $file = $dh->read)) {
+        $count += $self->load("$dir/$file");
+    }
+
+    return $count;
+}
+
 sub get_files {
     my $self = shift;
 
diff --git a/scripts/t/Dpkg_Dist_Files.t b/scripts/t/Dpkg_Dist_Files.t
index 01205f8..4dccffe 100644
--- a/scripts/t/Dpkg_Dist_Files.t
+++ b/scripts/t/Dpkg_Dist_Files.t
@@ -16,7 +16,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 25;
+use Test::More tests => 26;
 
 use_ok('Dpkg::Dist::Files');
 
@@ -156,6 +156,20 @@ is_deeply($dist->get_file('another:filename'),
 is($dist->output, $expected, 'Added source files');
 
 $expected = <<'FILES';
+BY-HAND-file webdocs optional
+other_0.txt text optional
+pkg-arch_2.0.0_amd64.deb admin required
+pkg-frag-a_0.0_arch.type section priority
+pkg-frag-b_0.0_arch.type section priority
+pkg-indep_0.0.1-2_all.deb net standard
+pkg-templ_1.2.3_arch.type section priority
+FILES
+
+$dist->reset();
+$dist->load_dir($datadir) or error('cannot parse fragment files');
+is($dist->output(), $expected, 'Parse fragment directory');
+
+$expected = <<'FILES';
 pkg-arch_2.0.0_amd64.deb admin required
 pkg-indep_0.0.1-2_all.deb net standard
 pkg-templ_1.2.3_arch.type section priority
diff --git a/scripts/t/Dpkg_Dist_Files/files-fragment-a b/scripts/t/Dpkg_Dist_Files/files-fragment-a
new file mode 100644
index 0000000..fd6461d
--- /dev/null
+++ b/scripts/t/Dpkg_Dist_Files/files-fragment-a
@@ -0,0 +1 @@
+pkg-frag-a_0.0_arch.type section priority
diff --git a/scripts/t/Dpkg_Dist_Files/files-fragment-b b/scripts/t/Dpkg_Dist_Files/files-fragment-b
new file mode 100644
index 0000000..2acf22f
--- /dev/null
+++ b/scripts/t/Dpkg_Dist_Files/files-fragment-b
@@ -0,0 +1 @@
+pkg-frag-b_0.0_arch.type section priority

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/reproducible/dpkg.git



More information about the Reproducible-commits mailing list