diff options
author | Niels Thykier <niels@thykier.net> | 2018-04-07 10:30:25 +0000 |
---|---|---|
committer | Niels Thykier <niels@thykier.net> | 2018-04-07 10:30:25 +0000 |
commit | 47bb3b44de87adcbcfb3a041dacd3880f1e4d4b2 (patch) | |
tree | b77e6ee5f998993b6d75d1e5c0cca38b06499f1f | |
parent | 778a9174cafc20340455d726b7ece4243f5fa070 (diff) | |
download | debhelper-47bb3b44de87adcbcfb3a041dacd3880f1e4d4b2.tar.gz |
t: Add test for dh_usrlocal
Signed-off-by: Niels Thykier <niels@thykier.net>
-rwxr-xr-x | t/dh_usrlocal/01-basic.t | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/t/dh_usrlocal/01-basic.t b/t/dh_usrlocal/01-basic.t new file mode 100755 index 00000000..c11b353f --- /dev/null +++ b/t/dh_usrlocal/01-basic.t @@ -0,0 +1,87 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +use Test::More; +plan(tests => 1); + +use File::Path qw(remove_tree); +use File::Basename qw(dirname); +use lib dirname(dirname(__FILE__)); +use Test::DH; +use Debian::Debhelper::Dh_Lib qw(!dirname); + +sub extract_generated_lines { + my ($file) = @_; + my (@lines, $marker); + return if not -f $file; + open(my $fd, '<', $file) or error("open($file) failed: $!"); + while (my $line = <$fd>) { + chomp($line); + if (defined($marker)) { + last if $line eq $marker; + push(@lines, $line); + next; + } + if ($line =~ m{\s*<<\s*(\S+)\s*$}) { + $marker = $1; + } + } + close($fd); + return @lines; +} + +each_compat_subtest { + + my (@postinst, @prerm); + my @scripts = qw( + debian/debhelper.postinst.debhelper + debian/debhelper.prerm.debhelper + ); + + rm_files(@scripts); + remove_tree('debian/debhelper'); + install_dir('debian/debhelper/usr/local/foo'); + install_dir('debian/debhelper/usr/local/bar'); + + ok(run_dh_tool('dh_usrlocal')); + @postinst = extract_generated_lines("debian/debhelper.postinst.debhelper"); + @prerm = extract_generated_lines("debian/debhelper.prerm.debhelper"); + + is_deeply(\@postinst, [ + '/usr/local/bar 02775 root staff', + '/usr/local/foo 02775 root staff', + ], "Correct dir creation") + or do { diag("postinst: $_") for @postinst; }; + is_deeply(\@prerm, [], "No removal of top level dirs #894549") + or do { diag("prerm: $_") for @prerm; }; + + remove_tree('debian/debhelper'); + rm_files(@scripts); + install_dir('debian/debhelper/usr/local/foo/dir/somewhere'); + install_dir('debian/debhelper/usr/local/bar/another-dir/elsewhere'); + + ok(run_dh_tool('dh_usrlocal')); + + @postinst = extract_generated_lines("debian/debhelper.postinst.debhelper"); + @prerm = extract_generated_lines("debian/debhelper.prerm.debhelper"); + + is_deeply(\@postinst, [ + '/usr/local/bar 02775 root staff', + '/usr/local/bar/another-dir 02775 root staff', + '/usr/local/bar/another-dir/elsewhere 02775 root staff', + '/usr/local/foo 02775 root staff', + '/usr/local/foo/dir 02775 root staff', + '/usr/local/foo/dir/somewhere 02775 root staff', + ], "Correct dir creation") + or do { diag("postinst: $_") for @postinst; }; + is_deeply(\@prerm, [ + '/usr/local/bar/another-dir/elsewhere', + '/usr/local/bar/another-dir', + '/usr/local/foo/dir/somewhere', + '/usr/local/foo/dir', + ], "Correct dir removal") + or do { diag("prerm: $_") for @prerm; }; +}; + |