summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNiels Thykier <niels@thykier.net>2018-04-07 10:30:25 +0000
committerNiels Thykier <niels@thykier.net>2018-04-07 10:30:25 +0000
commit47bb3b44de87adcbcfb3a041dacd3880f1e4d4b2 (patch)
treeb77e6ee5f998993b6d75d1e5c0cca38b06499f1f
parent778a9174cafc20340455d726b7ece4243f5fa070 (diff)
downloaddebhelper-47bb3b44de87adcbcfb3a041dacd3880f1e4d4b2.tar.gz
t: Add test for dh_usrlocal
Signed-off-by: Niels Thykier <niels@thykier.net>
-rwxr-xr-xt/dh_usrlocal/01-basic.t87
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; };
+};
+