diff options
Diffstat (limited to 't/dh_install')
-rwxr-xr-x | t/dh_install | 88 | ||||
-rwxr-xr-x | t/dh_install/01-basics.t | 33 | ||||
-rwxr-xr-x | t/dh_install/02-bugs-53XXXX.t | 65 | ||||
-rwxr-xr-x | t/dh_install/03-866570-dont-install-from-host.t | 24 | ||||
-rwxr-xr-x | t/dh_install/04-sourcedir.t | 47 |
5 files changed, 169 insertions, 88 deletions
diff --git a/t/dh_install b/t/dh_install deleted file mode 100755 index 447a40a8..00000000 --- a/t/dh_install +++ /dev/null @@ -1,88 +0,0 @@ -#!/usr/bin/perl -use Test; -plan(tests => 23); - -system("rm -rf debian/debhelper debian/tmp"); - -# #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"); - -# 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"); -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"); -ok(-e "debian/debhelper/usr/bin/foo"); -ok(! -e "debian/debhelper/usr/bin/bar"); -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"); - -# #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"); - -# #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"); - -# #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"); - -# 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"); - -# #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"); - -# 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"); - -# 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"); diff --git a/t/dh_install/01-basics.t b/t/dh_install/01-basics.t new file mode 100755 index 00000000..b266196f --- /dev/null +++ b/t/dh_install/01-basics.t @@ -0,0 +1,33 @@ +#!/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 qw(!dirname); + +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'); +}; + diff --git a/t/dh_install/02-bugs-53XXXX.t b/t/dh_install/02-bugs-53XXXX.t new file mode 100755 index 00000000..1c42489d --- /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 qw(!dirname); + +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..92345d1d --- /dev/null +++ b/t/dh_install/03-866570-dont-install-from-host.t @@ -0,0 +1,24 @@ +#!/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 qw(!dirname); + +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'); +}; + diff --git a/t/dh_install/04-sourcedir.t b/t/dh_install/04-sourcedir.t new file mode 100755 index 00000000..83bd0065 --- /dev/null +++ b/t/dh_install/04-sourcedir.t @@ -0,0 +1,47 @@ +#!/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 qw(!dirname); + +plan(tests => 3); + + +each_compat_subtest { + 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_subtest { + 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_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'); +}; |