summaryrefslogtreecommitdiff
path: root/t
diff options
context:
space:
mode:
authorNiels Thykier <niels@thykier.net>2017-06-30 18:34:52 +0000
committerNiels Thykier <niels@thykier.net>2017-06-30 18:34:52 +0000
commit7f2f5c8aa8898e562b4edaf25070efd67be92652 (patch)
tree4ee2d8f38914c9eaf27ac1247282e31070d1faab /t
parentb617c93668b117f605aeaf6a25340dd8abe83b84 (diff)
dh_install.t: Run the tests against all relevant compat levels
Signed-off-by: Niels Thykier <niels@thykier.net>
Diffstat (limited to 't')
-rwxr-xr-xt/dh_install.t191
1 files changed, 117 insertions, 74 deletions
diff --git a/t/dh_install.t b/t/dh_install.t
index 64e4df89..48b153c2 100755
--- a/t/dh_install.t
+++ b/t/dh_install.t
@@ -1,91 +1,134 @@
#!/usr/bin/perl
-use Test;
-plan(tests => 23);
+use strict;
+use warnings;
+use Test::More;
-system("rm -rf debian/debhelper debian/tmp");
+use File::Basename qw(dirname);
+use lib dirname(__FILE__);
+use Test::DH;
-# #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");
+plan(tests => 12);
-# 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 2>/dev/null");
-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 2>/dev/null");
-ok(-e "debian/debhelper/usr/bin/foo");
-ok(! -e "debian/debhelper/usr/bin/bar");
-system("rm -rf debian/debhelper debian/tmp");
+each_compat_from_and_above_subtest(7, sub {
+ my ($compat) = @_;
+ # #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_COMPAT=${compat} dh_install debian/tmp/usr/bin/foo 2>/dev/null");
+ ok(-e "debian/debhelper/usr/bin/foo", "#537140 [${compat}]");
+ ok(! -e "debian/debhelper/usr/bin/bar", "#537140 [${compat}]");
+ 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");
+each_compat_up_to_and_incl_subtest(6, sub {
+ my ($compat) = @_;
+ # 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=${compat} dh_install debian/tmp/usr/bin/foo 2>/dev/null");
+ 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");
+each_compat_up_to_and_incl_subtest(6, sub {
+ my ($compat) = @_;
+ # --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=${compat} dh_install --sourcedir=debian/tmp usr/bin/foo 2>/dev/null");
+ ok(-e "debian/debhelper/usr/bin/foo");
+ ok(! -e "debian/debhelper/usr/bin/bar");
+ 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");
+each_compat_from_and_above_subtest(7, sub {
+ my ($compat) = @_;
+ # 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_COMPAT=${compat} dh_install --sourcedir=debian/tmp usr/bin/foo 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: 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");
+each_compat_subtest {
+ my ($compat) = @_;
+ # #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_COMPAT=${compat} dh_install --sourcedir=debian/tmp/foo usr/bin/bar 2>/dev/null");
+ ok(-e "debian/debhelper/usr/bin/bar", "#537017 [${compat}]");
+ ok(!-e "debian/debhelper/usr/bin/foo", "#537017 [${compat}]");
+ 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");
+each_compat_from_and_above_subtest(7, sub {
+ my ($compat) = @_;
+ # #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_COMPAT=${compat} dh_install usr 2>/dev/null");
+ ok(-e "debian/debhelper/usr/bin/foo", "#535367 [${compat}]");
+ ok(-e "debian/debhelper/usr/bin/bar", "#535367 [${compat}]");
+ 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");
+each_compat_from_and_above_subtest(7, sub {
+ my ($compat) = @_;
+ # #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_COMPAT=${compat} dh_install usr/bin 2>/dev/null");
+ ok(-e "debian/debhelper/usr/bin/foo", "#534565 [${compat}]");
+ ok(-e "debian/debhelper/usr/bin/bar", "#534565 [${compat}]");
+ 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");
+each_compat_up_to_and_incl_subtest(6, sub {
+ my ($compat) = @_;
+ # 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=${compat} 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");
+});
+
+each_compat_from_and_above_subtest(7, sub {
+ my ($compat) = @_;
+ # #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_COMPAT=${compat} dh_install 'usr/bin/*' 2>/dev/null");
+ 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}]");
+ system("rm -rf debian/debhelper debian/tmp");
+});
+
+each_compat_subtest {
+ my ($compat) = @_;
+ # regular specification of file not in debian/tmp
+ system("DH_COMPAT=${compat} dh_install dh_install usr/bin 2>/dev/null");
+ ok(-e "debian/debhelper/usr/bin/dh_install");
+ system("rm -rf debian/debhelper debian/tmp");
+};
+
+each_compat_subtest {
+ my ($compat) = @_;
+ # specification of file in source directory not in debian/tmp
+ system("mkdir -p bar/usr/bin; touch bar/usr/bin/foo");
+ system("DH_COMPAT=${compat} dh_install --sourcedir=bar usr/bin/foo 2>/dev/null");
+ ok(-e "debian/debhelper/usr/bin/foo");
+ system("rm -rf debian/debhelper bar");
+};
-# 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");
+each_compat_subtest {
+ my ($compat) = @_;
+ # specification of file in subdir, not in debian/tmp
+ system("mkdir -p bar/usr/bin; touch bar/usr/bin/foo");
+ system("DH_COMPAT=${compat} dh_install bar/usr/bin/foo 2>/dev/null");
+ ok(-e "debian/debhelper/bar/usr/bin/foo");
+ system("rm -rf debian/debhelper bar");
+};
# Local Variables:
# indent-tabs-mode: t