From 7f2f5c8aa8898e562b4edaf25070efd67be92652 Mon Sep 17 00:00:00 2001 From: Niels Thykier Date: Fri, 30 Jun 2017 18:34:52 +0000 Subject: dh_install.t: Run the tests against all relevant compat levels Signed-off-by: Niels Thykier --- t/dh_install.t | 191 +++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 117 insertions(+), 74 deletions(-) (limited to 't') 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 -- cgit v1.2.3