summaryrefslogtreecommitdiff
path: root/t/dh_install
diff options
context:
space:
mode:
Diffstat (limited to 't/dh_install')
-rwxr-xr-xt/dh_install88
-rwxr-xr-xt/dh_install/01-basics.t33
-rwxr-xr-xt/dh_install/02-bugs-53XXXX.t65
-rwxr-xr-xt/dh_install/03-866570-dont-install-from-host.t24
-rwxr-xr-xt/dh_install/04-sourcedir.t47
5 files changed, 169 insertions, 88 deletions
diff --git a/t/dh_install b/t/dh_install
deleted file mode 100755
index 447a40a8..00000000
--- a/t/dh_install
+++ /dev/null
@@ -1,88 +0,0 @@
-#!/usr/bin/perl
-use Test;
-plan(tests => 23);
-
-system("rm -rf debian/debhelper debian/tmp");
-
-# #537140: debian/tmp is explcitly specified despite being searched by
-# default in v7+
-system("mkdir -p debian/tmp/usr/bin; touch debian/tmp/usr/bin/foo; touch debian/tmp/usr/bin/bar");
-system("./dh_install", "debian/tmp/usr/bin/foo");
-ok(-e "debian/debhelper/usr/bin/foo");
-ok(! -e "debian/debhelper/usr/bin/bar");
-system("rm -rf debian/debhelper debian/tmp");
-
-# debian/tmp explicitly specified in filenames in older compat level
-system("mkdir -p debian/tmp/usr/bin; touch debian/tmp/usr/bin/foo; touch debian/tmp/usr/bin/bar");
-system("DH_COMPAT=6 ./dh_install debian/tmp/usr/bin/foo");
-ok(-e "debian/debhelper/usr/bin/foo");
-ok(! -e "debian/debhelper/usr/bin/bar");
-system("rm -rf debian/debhelper debian/tmp");
-
-# --sourcedir=debian/tmp in older compat level
-system("mkdir -p debian/tmp/usr/bin; touch debian/tmp/usr/bin/foo; touch debian/tmp/usr/bin/bar");
-system("DH_COMPAT=6 ./dh_install --sourcedir=debian/tmp usr/bin/foo");
-ok(-e "debian/debhelper/usr/bin/foo");
-ok(! -e "debian/debhelper/usr/bin/bar");
-system("rm -rf debian/debhelper debian/tmp");
-
-# redundant --sourcedir=debian/tmp in v7+
-system("mkdir -p debian/tmp/usr/bin; touch debian/tmp/usr/bin/foo; touch debian/tmp/usr/bin/bar");
-system("./dh_install --sourcedir=debian/tmp usr/bin/foo");
-ok(-e "debian/debhelper/usr/bin/foo");
-ok(! -e "debian/debhelper/usr/bin/bar");
-system("rm -rf debian/debhelper debian/tmp");
-
-# #537017: --sourcedir=debian/tmp/foo is used
-system("mkdir -p debian/tmp/foo/usr/bin; touch debian/tmp/foo/usr/bin/foo; touch debian/tmp/foo/usr/bin/bar");
-system("./dh_install", "--sourcedir=debian/tmp/foo", "usr/bin/bar");
-ok(-e "debian/debhelper/usr/bin/bar");
-ok(! -e "debian/debhelper/usr/bin/foo");
-system("rm -rf debian/debhelper debian/tmp");
-
-# #535367: installation of entire top-level directory from debian/tmp
-system("mkdir -p debian/tmp/usr/bin; touch debian/tmp/usr/bin/foo; touch debian/tmp/usr/bin/bar");
-system("./dh_install", "usr");
-ok(-e "debian/debhelper/usr/bin/foo");
-ok(-e "debian/debhelper/usr/bin/bar");
-system("rm -rf debian/debhelper debian/tmp");
-
-# #534565: fallback use of debian/tmp in v7+
-system("mkdir -p debian/tmp/usr/bin; touch debian/tmp/usr/bin/foo; touch debian/tmp/usr/bin/bar");
-system("./dh_install", "usr/bin");
-ok(-e "debian/debhelper/usr/bin/foo");
-ok(-e "debian/debhelper/usr/bin/bar");
-system("rm -rf debian/debhelper debian/tmp");
-
-# no fallback to debian/tmp before v7
-system("mkdir -p debian/tmp/usr/bin; touch debian/tmp/usr/bin/foo; touch debian/tmp/usr/bin/bar");
-system("DH_COMPAT=6 ./dh_install usr/bin 2>/dev/null");
-ok(! -e "debian/debhelper/usr/bin/foo");
-ok(! -e "debian/debhelper/usr/bin/bar");
-system("rm -rf debian/debhelper debian/tmp");
-
-# #534565: glob expands to dangling symlink -> should install the dangling link
-system("mkdir -p debian/tmp/usr/bin; ln -s broken debian/tmp/usr/bin/foo; touch debian/tmp/usr/bin/bar");
-system("./dh_install", "usr/bin/*");
-ok(-l "debian/debhelper/usr/bin/foo");
-ok(! -e "debian/debhelper/usr/bin/foo");
-ok(-e "debian/debhelper/usr/bin/bar");
-ok(! -l "debian/debhelper/usr/bin/bar");
-system("rm -rf debian/debhelper debian/tmp");
-
-# regular specification of file not in debian/tmp
-system("./dh_install", "dh_install", "usr/bin");
-ok(-e "debian/debhelper/usr/bin/dh_install");
-system("rm -rf debian/debhelper debian/tmp");
-
-# specification of file in source directory not in debian/tmp
-system("mkdir -p bar/usr/bin; touch bar/usr/bin/foo");
-system("./dh_install", "--sourcedir=bar", "usr/bin/foo");
-ok(-e "debian/debhelper/usr/bin/foo");
-system("rm -rf debian/debhelper bar");
-
-# specification of file in subdir, not in debian/tmp
-system("mkdir -p bar/usr/bin; touch bar/usr/bin/foo");
-system("./dh_install", "bar/usr/bin/foo");
-ok(-e "debian/debhelper/bar/usr/bin/foo");
-system("rm -rf debian/debhelper bar");
diff --git a/t/dh_install/01-basics.t b/t/dh_install/01-basics.t
new file mode 100755
index 00000000..b266196f
--- /dev/null
+++ b/t/dh_install/01-basics.t
@@ -0,0 +1,33 @@
+#!/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 qw(!dirname);
+
+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');
+};
+
diff --git a/t/dh_install/02-bugs-53XXXX.t b/t/dh_install/02-bugs-53XXXX.t
new file mode 100755
index 00000000..1c42489d
--- /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 qw(!dirname);
+
+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 00000000..92345d1d
--- /dev/null
+++ b/t/dh_install/03-866570-dont-install-from-host.t
@@ -0,0 +1,24 @@
+#!/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 qw(!dirname);
+
+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');
+};
+
diff --git a/t/dh_install/04-sourcedir.t b/t/dh_install/04-sourcedir.t
new file mode 100755
index 00000000..83bd0065
--- /dev/null
+++ b/t/dh_install/04-sourcedir.t
@@ -0,0 +1,47 @@
+#!/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 qw(!dirname);
+
+plan(tests => 3);
+
+
+each_compat_subtest {
+ 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_subtest {
+ 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_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');
+};