[debhelper-devel] [debhelper] 02/03: dh_install.t: Run the tests against all relevant compat levels
Niels Thykier
nthykier at moszumanska.debian.org
Fri Jun 30 18:44:41 UTC 2017
This is an automated email from the git hooks/post-receive script.
nthykier pushed a commit to branch expand-test-suite
in repository debhelper.
commit 7f2f5c8aa8898e562b4edaf25070efd67be92652
Author: Niels Thykier <niels at thykier.net>
Date: Fri Jun 30 18:34:52 2017 +0000
dh_install.t: Run the tests against all relevant compat levels
Signed-off-by: Niels Thykier <niels at thykier.net>
---
t/dh_install.t | 191 +++++++++++++++++++++++++++++++++++----------------------
1 file changed, 117 insertions(+), 74 deletions(-)
diff --git a/t/dh_install.t b/t/dh_install.t
index 64e4df8..48b153c 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
--
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