diff options
author | Niels Thykier <niels@thykier.net> | 2018-05-18 18:22:13 +0000 |
---|---|---|
committer | Niels Thykier <niels@thykier.net> | 2018-05-18 18:23:57 +0000 |
commit | 3533ce28a8770f824e6fcaf7a2ed3c0b0b7a9406 (patch) | |
tree | c4f0ee61b3bdbb76822eea70826abb96704b11b0 | |
parent | eccf9c8d3b000dfd059a141a61a34bc44730cc46 (diff) | |
download | debhelper-3533ce28a8770f824e6fcaf7a2ed3c0b0b7a9406.tar.gz |
Dh_Lib.pm: Add "is_empty_dir"
Signed-off-by: Niels Thykier <niels@thykier.net>
-rw-r--r-- | lib/Debian/Debhelper/Dh_Lib.pm | 18 | ||||
-rwxr-xr-x | t/Dh_Lib/path.t | 26 |
2 files changed, 44 insertions, 0 deletions
diff --git a/lib/Debian/Debhelper/Dh_Lib.pm b/lib/Debian/Debhelper/Dh_Lib.pm index 7da49443..a2b0d4f1 100644 --- a/lib/Debian/Debhelper/Dh_Lib.pm +++ b/lib/Debian/Debhelper/Dh_Lib.pm @@ -101,6 +101,7 @@ qw( rm_files excludefile is_so_or_exec_elf_file + is_empty_dir reset_perm_and_owner log_installed_files @@ -2360,6 +2361,23 @@ sub is_so_or_exec_elf_file { return 1; } +# Returns true iff the given argument is an empty directory. +# Corner-cases: +# - false if not a directory +sub is_empty_dir { + my ($dir) = @_; + return 0 if not -d $dir; + my $ret = 1; + opendir(my $dir_fd, $dir) or error("opendir($dir) failed: $!"); + while (defined(my $entry = readdir($dir_fd))) { + next if $entry eq '.' or $entry eq '..'; + $ret = 0; + last; + } + closedir($dir_fd); + return $ret; +} + sub on_pkgs_in_parallel(&) { unshift(@_, $dh{DOPACKAGES}); goto \&on_items_in_parallel; diff --git a/t/Dh_Lib/path.t b/t/Dh_Lib/path.t new file mode 100755 index 00000000..e5f90616 --- /dev/null +++ b/t/Dh_Lib/path.t @@ -0,0 +1,26 @@ +#!/usr/bin/perl + +use strict; +use warnings; +use Test::More; + +use Cwd qw(abs_path); +use File::Basename qw(dirname); +use File::Temp qw(tempdir); + +BEGIN { + my $dir = dirname(abs_path(__FILE__)); + unshift(@INC, dirname($dir)); + chdir($dir) or error("chdir($dir) failed: $!"); +}; + +use Test::DH; +use Debian::Debhelper::Dh_Lib qw(!dirname); + +plan(tests => 3); + +ok(!is_empty_dir(__FILE__), "is_empty_dir(file) is false"); +ok(!is_empty_dir(dirname(__FILE__)), "is_empty_dir(non-empty) is false"); + +my $tempdir = tempdir(CLEANUP => 1); +ok(is_empty_dir($tempdir), "is_empty_dir(new-temp-dir) is true"); |