diff options
author | Niels Thykier <niels@thykier.net> | 2017-07-02 16:00:15 +0000 |
---|---|---|
committer | Niels Thykier <niels@thykier.net> | 2017-07-03 14:34:26 +0000 |
commit | 60cddb2082c887f3ee161364b71331a0005d796d (patch) | |
tree | 51ad87c50d5f8ad036b13621f7e257aa8ba6190a /t/dh_install | |
parent | b7a61e52e5afb3874f9cb052ad9ba97960cf953a (diff) | |
download | debhelper-60cddb2082c887f3ee161364b71331a0005d796d.tar.gz |
t: Split dh_install tests
Signed-off-by: Niels Thykier <niels@thykier.net>
Diffstat (limited to 't/dh_install')
-rwxr-xr-x | t/dh_install/01-basics.t | 38 | ||||
-rwxr-xr-x | t/dh_install/02-bugs-53XXXX.t | 65 | ||||
-rwxr-xr-x | t/dh_install/03-866570-dont-install-from-host.t | 29 | ||||
-rwxr-xr-x | t/dh_install/04-sourcedir.t | 84 |
4 files changed, 216 insertions, 0 deletions
diff --git a/t/dh_install/01-basics.t b/t/dh_install/01-basics.t new file mode 100755 index 00000000..9af589ab --- /dev/null +++ b/t/dh_install/01-basics.t @@ -0,0 +1,38 @@ +#!/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; + +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'); +}; + +# Local Variables: +# indent-tabs-mode: t +# tab-width: 4 +# cperl-indent-level: 4 +# End: diff --git a/t/dh_install/02-bugs-53XXXX.t b/t/dh_install/02-bugs-53XXXX.t new file mode 100755 index 00000000..aa4de5a3 --- /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; + +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..b815b6ce --- /dev/null +++ b/t/dh_install/03-866570-dont-install-from-host.t @@ -0,0 +1,29 @@ +#!/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; + +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'); +}; + +# Local Variables: +# indent-tabs-mode: t +# tab-width: 4 +# cperl-indent-level: 4 +# End: diff --git a/t/dh_install/04-sourcedir.t b/t/dh_install/04-sourcedir.t new file mode 100755 index 00000000..8b574c76 --- /dev/null +++ b/t/dh_install/04-sourcedir.t @@ -0,0 +1,84 @@ +#!/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; + +plan(tests => 6); + + +each_compat_up_to_and_incl_subtest(6, sub { + my ($compat) = @_; + # debian/tmp explicitly specified in filenames in older compat level + 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"); + ok(!-e "debian/debhelper/usr/bin/bar"); + remove_tree('debian/debhelper', 'debian/tmp'); +}); + +each_compat_up_to_and_incl_subtest(6, sub { + my ($compat) = @_; + # --sourcedir=debian/tmp in older compat level + 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_from_and_above_subtest(7, sub { + 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_from_and_above_subtest(7, sub { + 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_up_to_and_incl_subtest(6, sub { + my ($compat) = @_; + # no fallback to debian/tmp before 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({ 'quiet' => 1 }, 'dh_install', 'usr')); + 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) = @_; + # 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'); +}; |