[debhelper-devel] [debhelper] 18/30: t: Split dh_install tests

Niels Thykier nthykier at moszumanska.debian.org
Mon Jul 3 14:40:37 UTC 2017


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

nthykier pushed a commit to branch master
in repository debhelper.

commit 60cddb2082c887f3ee161364b71331a0005d796d
Author: Niels Thykier <niels at thykier.net>
Date:   Sun Jul 2 16:00:15 2017 +0000

    t: Split dh_install tests
    
    Signed-off-by: Niels Thykier <niels at thykier.net>
---
 t/Test/DH.pm                                    |  13 +-
 t/dh_install.t                                  | 162 ------------------------
 t/dh_install/01-basics.t                        |  38 ++++++
 t/dh_install/02-bugs-53XXXX.t                   |  65 ++++++++++
 t/dh_install/03-866570-dont-install-from-host.t |  29 +++++
 t/dh_install/04-sourcedir.t                     |  84 ++++++++++++
 6 files changed, 228 insertions(+), 163 deletions(-)

diff --git a/t/Test/DH.pm b/t/Test/DH.pm
index 34b3613..0f72850 100644
--- a/t/Test/DH.pm
+++ b/t/Test/DH.pm
@@ -36,7 +36,7 @@ use Debian::Debhelper::Dh_Lib;
 our @EXPORT = qw(
     each_compat_up_to_and_incl_subtest each_compat_subtest
     each_compat_from_and_above_subtest run_dh_tool
-    uid_0_test_is_ok
+    uid_0_test_is_ok create_empty_file
 );
 
 our ($TEST_DH_COMPAT, $ROOT_OK, $ROOT_CMD);
@@ -176,4 +176,15 @@ sub each_compat_subtest(&) {
     goto \&each_compat_from_and_above_subtest;
 }
 
+sub create_empty_file {
+    my ($file, $chmod) = @_;
+    open(my $fd, '>', $file) or die("open($file): $!\n");
+    close($fd) or die("close($file): $!\n");
+    if (defined($chmod)) {
+        chmod($chmod, $file)
+            or die(sprintf('chmod(%04o, %s): %s', $chmod, $file, $!));
+    }
+    return 1;
+}
+
 1;
diff --git a/t/dh_install.t b/t/dh_install.t
deleted file mode 100755
index fd6a03e..0000000
--- a/t/dh_install.t
+++ /dev/null
@@ -1,162 +0,0 @@
-#!/usr/bin/perl
-use strict;
-use warnings;
-use Test::More;
-
-use File::Basename qw(dirname);
-use lib dirname(__FILE__);
-use Test::DH;
-use File::Path qw(remove_tree make_path);
-use Debian::Debhelper::Dh_Lib;
-
-plan(tests => 13);
-
-each_compat_from_and_above_subtest(7, sub {
-    my ($compat) = @_;
-    # #537140: debian/tmp is explcitly specified despite being searched by
-    # default in v7+
-
-    make_path('debian/tmp/usr/bin');
-    system('touch', 'debian/tmp/usr/bin/foo', 'debian/tmp/usr/bin/bar');
-    ok(run_dh_tool('dh_install', 'debian/tmp/usr/bin/foo'));
-    ok(-e "debian/debhelper/usr/bin/foo", "#537140 [${compat}]");
-    ok(! -e "debian/debhelper/usr/bin/bar", "#537140 [${compat}]");
-    remove_tree('debian/debhelper', 'debian/tmp');
-});
-
-each_compat_up_to_and_incl_subtest(6, sub {
-    my ($compat) = @_;
-    # debian/tmp explicitly specified in filenames in older compat level
-    make_path('debian/tmp/usr/bin');
-    system('touch', 'debian/tmp/usr/bin/foo', 'debian/tmp/usr/bin/bar');
-    ok(run_dh_tool('dh_install', 'debian/tmp/usr/bin/foo'));
-    ok(-e "debian/debhelper/usr/bin/foo");
-    ok(!-e "debian/debhelper/usr/bin/bar");
-    remove_tree('debian/debhelper', 'debian/tmp');
-});
-
-each_compat_up_to_and_incl_subtest(6, sub {
-    my ($compat) = @_;
-    # --sourcedir=debian/tmp in older compat level
-    make_path('debian/tmp/usr/bin');
-	system('touch', 'debian/tmp/usr/bin/foo', 'debian/tmp/usr/bin/bar');
-    ok(run_dh_tool('dh_install', '--sourcedir=debian/tmp', 'usr/bin/foo'));
-    ok(-e "debian/debhelper/usr/bin/foo");
-    ok(! -e "debian/debhelper/usr/bin/bar");
-    remove_tree('debian/debhelper', 'debian/tmp');
-});
-
-each_compat_from_and_above_subtest(7, sub {
-    my ($compat) = @_;
-    # redundant --sourcedir=debian/tmp in v7+
-    make_path('debian/tmp/usr/bin');
-    system('touch', 'debian/tmp/usr/bin/foo', 'debian/tmp/usr/bin/bar');
-    ok(run_dh_tool('dh_install', '--sourcedir=debian/tmp', 'usr/bin/foo'));
-    ok(-e "debian/debhelper/usr/bin/foo");
-    ok(! -e "debian/debhelper/usr/bin/bar");
-    remove_tree('debian/debhelper', 'debian/tmp');
-});
-
-each_compat_subtest {
-    my ($compat) = @_;
-    # #537017: --sourcedir=debian/tmp/foo is used
-    make_path('debian/tmp/foo/usr/bin');
-    system('touch', 'debian/tmp/foo/usr/bin/foo', 'debian/tmp/foo/usr/bin/bar');
-    ok(run_dh_tool('dh_install', '--sourcedir=debian/tmp/foo', 'usr/bin/bar'));
-    ok(-e "debian/debhelper/usr/bin/bar", "#537017 [${compat}]");
-    ok(!-e "debian/debhelper/usr/bin/foo", "#537017 [${compat}]");
-    remove_tree('debian/debhelper', 'debian/tmp');
-};
-
-each_compat_from_and_above_subtest(7, sub {
-    my ($compat) = @_;
-    # #535367: installation of entire top-level directory from debian/tmp
-    make_path('debian/tmp/usr/bin');
-    system('touch', 'debian/tmp/usr/bin/foo', 'debian/tmp/usr/bin/bar');
-    ok(run_dh_tool('dh_install', 'usr'));
-    ok(-e "debian/debhelper/usr/bin/foo", "#535367 [${compat}]");
-    ok(-e "debian/debhelper/usr/bin/bar", "#535367 [${compat}]");
-    remove_tree('debian/debhelper', 'debian/tmp');
-});
-
-each_compat_from_and_above_subtest(7, sub {
-    my ($compat) = @_;
-    # #534565: fallback use of debian/tmp in v7+
-    make_path('debian/tmp/usr/bin');
-    system('touch', 'debian/tmp/usr/bin/foo', 'debian/tmp/usr/bin/bar');
-    ok(run_dh_tool('dh_install', 'usr'));
-    ok(-e "debian/debhelper/usr/bin/foo", "#534565 [${compat}]");
-    ok(-e "debian/debhelper/usr/bin/bar", "#534565 [${compat}]");
-    remove_tree('debian/debhelper', 'debian/tmp');
-});
-
-each_compat_up_to_and_incl_subtest(6, sub {
-    my ($compat) = @_;
-    # no fallback to debian/tmp before v7
-    make_path('debian/tmp/usr/bin');
-    system('touch', 'debian/tmp/usr/bin/foo', 'debian/tmp/usr/bin/bar');
-    ok(!run_dh_tool({ 'quiet' => 1 }, 'dh_install', 'usr'));
-    ok(!-e "debian/debhelper/usr/bin/foo");
-    ok(!-e "debian/debhelper/usr/bin/bar");
-    remove_tree('debian/debhelper', 'debian/tmp');
-});
-
-each_compat_from_and_above_subtest(7, sub {
-    my ($compat) = @_;
-    # #534565: glob expands to dangling symlink -> should install the dangling link
-    make_path('debian/tmp/usr/bin');
-    make_symlink_raw_target('broken', 'debian/tmp/usr/bin/foo');
-    system('touch', 'debian/tmp/usr/bin/bar');
-    ok(run_dh_tool('dh_install', 'usr/bin/*'));
-    ok(-l "debian/debhelper/usr/bin/foo", "#534565 [${compat}]");
-    ok(!-e "debian/debhelper/usr/bin/foo", "#534565 [${compat}]");
-    ok(-e "debian/debhelper/usr/bin/bar", "#534565 [${compat}]");
-    ok(!-l "debian/debhelper/usr/bin/bar", "#534565 [${compat}]");
-    remove_tree('debian/debhelper', 'debian/tmp');
-});
-
-each_compat_subtest {
-    my ($compat) = @_;
-    # regular specification of file not in debian/tmp
-    system('touch', 'dh_install');
-    ok(run_dh_tool('dh_install', 'dh_install', 'usr/bin'));
-    ok(-e "debian/debhelper/usr/bin/dh_install");
-    remove_tree('debian/debhelper', 'debian/tmp');
-};
-
-each_compat_subtest {
-    my ($compat) = @_;
-    # specification of file in source directory not in debian/tmp
-    make_path('bar/usr/bin');
-    system('touch', 'bar/usr/bin/foo');
-    ok(run_dh_tool('dh_install', '--sourcedir=bar', 'usr/bin/foo'));
-    ok(-e "debian/debhelper/usr/bin/foo");
-    remove_tree('debian/debhelper', 'debian/tmp');
-};
-
-each_compat_subtest {
-    my ($compat) = @_;
-    # specification of file in subdir, not in debian/tmp
-    make_path('bar/usr/bin');
-    system('touch', 'bar/usr/bin/foo');
-    ok(run_dh_tool('dh_install', 'bar/usr/bin/foo'));
-    ok(-e "debian/debhelper/bar/usr/bin/foo");
-    remove_tree('debian/debhelper', 'debian/tmp');
-};
-
-each_compat_subtest {
-    my ($compat) = @_;
-    # #866570 - leading slashes must *not* pull things from the root FS.
-    make_path('bin');
-    system('touch', 'bin/grep-i-licious');
-    ok(run_dh_tool('dh_install', '/bin/grep*'));
-    ok(-e "debian/debhelper/bin/grep-i-licious", "#866570 [${compat}]");
-    ok(!-e "debian/debhelper/bin/grep", "#866570 [${compat}]");
-    remove_tree('debian/debhelper', 'debian/tmp');
-};
-
-# Local Variables:
-# indent-tabs-mode: t
-# tab-width: 4
-# cperl-indent-level: 4
-# End:
diff --git a/t/dh_install/01-basics.t b/t/dh_install/01-basics.t
new file mode 100755
index 0000000..9af589a
--- /dev/null
+++ b/t/dh_install/01-basics.t
@@ -0,0 +1,38 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use Test::More;
+
+use File::Basename qw(dirname);
+use lib dirname(dirname(__FILE__));
+use Test::DH;
+use File::Path qw(remove_tree make_path);
+use Debian::Debhelper::Dh_Lib;
+
+plan(tests => 2);
+
+
+each_compat_subtest {
+    my ($compat) = @_;
+    # regular specification of file not in debian/tmp
+    create_empty_file('dh_install');
+    ok(run_dh_tool('dh_install', 'dh_install', 'usr/bin'));
+    ok(-e "debian/debhelper/usr/bin/dh_install");
+    remove_tree('debian/debhelper', 'debian/tmp');
+};
+
+each_compat_subtest {
+    my ($compat) = @_;
+    # specification of file in subdir, not in debian/tmp
+    make_path('bar/usr/bin');
+    create_empty_file('bar/usr/bin/foo');
+    ok(run_dh_tool('dh_install', 'bar/usr/bin/foo'));
+    ok(-e "debian/debhelper/bar/usr/bin/foo");
+    remove_tree('debian/debhelper', 'debian/tmp');
+};
+
+# Local Variables:
+# indent-tabs-mode: t
+# tab-width: 4
+# cperl-indent-level: 4
+# End:
diff --git a/t/dh_install/02-bugs-53XXXX.t b/t/dh_install/02-bugs-53XXXX.t
new file mode 100755
index 0000000..aa4de5a
--- /dev/null
+++ b/t/dh_install/02-bugs-53XXXX.t
@@ -0,0 +1,65 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use Test::More;
+
+use File::Basename qw(dirname);
+use lib dirname(dirname(__FILE__));
+use Test::DH;
+use File::Path qw(remove_tree make_path);
+use Debian::Debhelper::Dh_Lib;
+
+plan(tests => 4);
+
+each_compat_from_and_above_subtest(7, sub {
+    my ($compat) = @_;
+    # #537140: debian/tmp is explcitly specified despite being searched by
+    # default in v7+
+
+    make_path('debian/tmp/usr/bin');
+    create_empty_file('debian/tmp/usr/bin/foo');
+    create_empty_file('debian/tmp/usr/bin/bar');
+    ok(run_dh_tool('dh_install', 'debian/tmp/usr/bin/foo'));
+    ok(-e "debian/debhelper/usr/bin/foo", "#537140 [${compat}]");
+    ok(! -e "debian/debhelper/usr/bin/bar", "#537140 [${compat}]");
+    remove_tree('debian/debhelper', 'debian/tmp');
+});
+
+each_compat_from_and_above_subtest(7, sub {
+    my ($compat) = @_;
+    # #534565: glob expands to dangling symlink -> should install the dangling link
+    make_path('debian/tmp/usr/bin');
+    make_symlink_raw_target('broken', 'debian/tmp/usr/bin/foo');
+    create_empty_file('debian/tmp/usr/bin/bar');
+    ok(run_dh_tool('dh_install', 'usr/bin/*'));
+    ok(-l "debian/debhelper/usr/bin/foo", "#534565 [${compat}]");
+    ok(!-e "debian/debhelper/usr/bin/foo", "#534565 [${compat}]");
+    ok(-e "debian/debhelper/usr/bin/bar", "#534565 [${compat}]");
+    ok(!-l "debian/debhelper/usr/bin/bar", "#534565 [${compat}]");
+    remove_tree('debian/debhelper', 'debian/tmp');
+});
+
+each_compat_subtest {
+    my ($compat) = @_;
+    # #537017: --sourcedir=debian/tmp/foo is used
+    make_path('debian/tmp/foo/usr/bin');
+    create_empty_file('debian/tmp/foo/usr/bin/foo');
+    create_empty_file('debian/tmp/foo/usr/bin/bar');
+    ok(run_dh_tool('dh_install', '--sourcedir=debian/tmp/foo', 'usr/bin/bar'));
+    ok(-e "debian/debhelper/usr/bin/bar", "#537017 [${compat}]");
+    ok(!-e "debian/debhelper/usr/bin/foo", "#537017 [${compat}]");
+    remove_tree('debian/debhelper', 'debian/tmp');
+};
+
+each_compat_from_and_above_subtest(7, sub {
+    my ($compat) = @_;
+    # #535367: installation of entire top-level directory from debian/tmp
+    make_path('debian/tmp/usr/bin');
+    create_empty_file('debian/tmp/usr/bin/foo');
+    create_empty_file('debian/tmp/usr/bin/bar');
+    ok(run_dh_tool('dh_install', 'usr'));
+    ok(-e "debian/debhelper/usr/bin/foo", "#535367 [${compat}]");
+    ok(-e "debian/debhelper/usr/bin/bar", "#535367 [${compat}]");
+    remove_tree('debian/debhelper', 'debian/tmp');
+});
+
diff --git a/t/dh_install/03-866570-dont-install-from-host.t b/t/dh_install/03-866570-dont-install-from-host.t
new file mode 100755
index 0000000..b815b6c
--- /dev/null
+++ b/t/dh_install/03-866570-dont-install-from-host.t
@@ -0,0 +1,29 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use Test::More;
+
+use File::Basename qw(dirname);
+use lib dirname(dirname(__FILE__));
+use Test::DH;
+use File::Path qw(remove_tree make_path);
+use Debian::Debhelper::Dh_Lib;
+
+plan(tests => 1);
+
+each_compat_subtest {
+    my ($compat) = @_;
+    # #866570 - leading slashes must *not* pull things from the root FS.
+    make_path('bin');
+    create_empty_file('bin/grep-i-licious');
+    ok(run_dh_tool('dh_install', '/bin/grep*'));
+    ok(-e "debian/debhelper/bin/grep-i-licious", "#866570 [${compat}]");
+    ok(!-e "debian/debhelper/bin/grep", "#866570 [${compat}]");
+    remove_tree('debian/debhelper', 'debian/tmp');
+};
+
+# Local Variables:
+# indent-tabs-mode: t
+# tab-width: 4
+# cperl-indent-level: 4
+# End:
diff --git a/t/dh_install/04-sourcedir.t b/t/dh_install/04-sourcedir.t
new file mode 100755
index 0000000..8b574c7
--- /dev/null
+++ b/t/dh_install/04-sourcedir.t
@@ -0,0 +1,84 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use Test::More;
+
+use File::Basename qw(dirname);
+use lib dirname(dirname(__FILE__));
+use Test::DH;
+use File::Path qw(remove_tree make_path);
+use Debian::Debhelper::Dh_Lib;
+
+plan(tests => 6);
+
+
+each_compat_up_to_and_incl_subtest(6, sub {
+    my ($compat) = @_;
+    # debian/tmp explicitly specified in filenames in older compat level
+    make_path('debian/tmp/usr/bin');
+    create_empty_file('debian/tmp/usr/bin/foo');
+    create_empty_file('debian/tmp/usr/bin/bar');
+    ok(run_dh_tool('dh_install', 'debian/tmp/usr/bin/foo'));
+    ok(-e "debian/debhelper/usr/bin/foo");
+    ok(!-e "debian/debhelper/usr/bin/bar");
+    remove_tree('debian/debhelper', 'debian/tmp');
+});
+
+each_compat_up_to_and_incl_subtest(6, sub {
+    my ($compat) = @_;
+    # --sourcedir=debian/tmp in older compat level
+    make_path('debian/tmp/usr/bin');
+    create_empty_file('debian/tmp/usr/bin/foo');
+    create_empty_file('debian/tmp/usr/bin/bar');
+    ok(run_dh_tool('dh_install', '--sourcedir=debian/tmp', 'usr/bin/foo'));
+    ok(-e "debian/debhelper/usr/bin/foo");
+    ok(! -e "debian/debhelper/usr/bin/bar");
+    remove_tree('debian/debhelper', 'debian/tmp');
+});
+
+each_compat_from_and_above_subtest(7, sub {
+    my ($compat) = @_;
+    # redundant --sourcedir=debian/tmp in v7+
+    make_path('debian/tmp/usr/bin');
+    create_empty_file('debian/tmp/usr/bin/foo');
+    create_empty_file('debian/tmp/usr/bin/bar');
+    ok(run_dh_tool('dh_install', '--sourcedir=debian/tmp', 'usr/bin/foo'));
+    ok(-e "debian/debhelper/usr/bin/foo");
+    ok(! -e "debian/debhelper/usr/bin/bar");
+    remove_tree('debian/debhelper', 'debian/tmp');
+});
+
+each_compat_from_and_above_subtest(7, sub {
+    my ($compat) = @_;
+    # #534565: fallback use of debian/tmp in v7+
+    make_path('debian/tmp/usr/bin');
+    create_empty_file('debian/tmp/usr/bin/foo');
+    create_empty_file('debian/tmp/usr/bin/bar');
+    ok(run_dh_tool('dh_install', 'usr'));
+    ok(-e "debian/debhelper/usr/bin/foo", "#534565 [${compat}]");
+    ok(-e "debian/debhelper/usr/bin/bar", "#534565 [${compat}]");
+    remove_tree('debian/debhelper', 'debian/tmp');
+});
+
+each_compat_up_to_and_incl_subtest(6, sub {
+    my ($compat) = @_;
+    # no fallback to debian/tmp before v7
+    make_path('debian/tmp/usr/bin');
+    create_empty_file('debian/tmp/usr/bin/foo');
+    create_empty_file('debian/tmp/usr/bin/bar');
+    ok(!run_dh_tool({ 'quiet' => 1 }, 'dh_install', 'usr'));
+    ok(!-e "debian/debhelper/usr/bin/foo");
+    ok(!-e "debian/debhelper/usr/bin/bar");
+    remove_tree('debian/debhelper', 'debian/tmp');
+});
+
+
+each_compat_subtest {
+    my ($compat) = @_;
+    # specification of file in source directory not in debian/tmp
+    make_path('bar/usr/bin');
+    create_empty_file('bar/usr/bin/foo');
+    ok(run_dh_tool('dh_install', '--sourcedir=bar', 'usr/bin/foo'));
+    ok(-e "debian/debhelper/usr/bin/foo");
+    remove_tree('debian/debhelper', 'debian/tmp');
+};

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




More information about the debhelper-devel mailing list