[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