summaryrefslogtreecommitdiff
path: root/t/dh_compress.t
diff options
context:
space:
mode:
authorRafael Kitover <rkitover@gmail.com>2015-08-07 14:04:58 -0400
committerNiels Thykier <niels@thykier.net>2015-09-26 08:57:53 +0200
commit60f59661194029a6bba28ebf39d0bf5193789bc5 (patch)
treefe67cce2ac04e8a022eff2dc76e0316d7a419581 /t/dh_compress.t
parent0df8fdb046add9ddd72a7fbfd2d36fc949b1faa8 (diff)
downloaddebhelper-60f59661194029a6bba28ebf39d0bf5193789bc5.tar.gz
fix file lists and abspaths for dh_compress w/test
Fix dh_compress to accept file names on the command line that it would otherwise compress anyway, by removing duplicates. Also allow dh_compress to accept absolute paths, by stripping the leading slashes. Add tests for the desired behavior in t/dh_compress.t . Fix an undefined warning in dh_compress that is sometimes triggered. Add a . -> lib symlink so that prove -vwlr t works. Signed-off-by: Niels Thykier <niels@thykier.net>
Diffstat (limited to 't/dh_compress.t')
-rwxr-xr-xt/dh_compress.t93
1 files changed, 93 insertions, 0 deletions
diff --git a/t/dh_compress.t b/t/dh_compress.t
new file mode 100755
index 00000000..dcd7f901
--- /dev/null
+++ b/t/dh_compress.t
@@ -0,0 +1,93 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use File::Basename qw(dirname);
+use lib dirname(__FILE__).'/..';
+use File::Path qw(make_path remove_tree);
+use Test::More;
+
+chdir dirname(__FILE__).'/..';
+$ENV{PERL5OPT} = '-I'.dirname(__FILE__).'/..';
+my $PREFIX = 'debian/debhelper/usr/share/doc/debhelper';
+
+# we are testing compressing doc txt files
+# foo.txt is 2k and bar.txt is 5k
+mk_test_dir();
+
+# default operation, bar.txt becomes bar.txt.gz and foo.txt is unchanged
+dh_compress();
+
+is_deeply(
+ [map { s{${PREFIX}/}{}; $_ } sort glob "$PREFIX/*"],
+ [qw|bar.txt.gz foo.txt|],
+ '5k txt doc compressed, 2k txt doc not compressed'
+);
+
+mk_test_dir();
+
+# now if I want to pass both on the command line to dh_compress, it should
+# compress both
+dh_compress(qw|
+ --
+ usr/share/doc/debhelper/foo.txt
+ usr/share/doc/debhelper/bar.txt
+|);
+
+is_deeply(
+ [map { s{${PREFIX}/}{}; $_ } sort glob "$PREFIX/*"],
+ [qw|bar.txt.gz foo.txt.gz|],
+ 'both 5k and 2k txt docs compressed'
+);
+
+mk_test_dir();
+
+# absolute paths should also work
+dh_compress(qw|
+ --
+ /usr/share/doc/debhelper/foo.txt
+ /usr/share/doc/debhelper/bar.txt
+|);
+
+is_deeply(
+ [map { s{${PREFIX}/}{}; $_ } sort glob "$PREFIX/*"],
+ [qw|bar.txt.gz foo.txt.gz|],
+ 'both 5k and 2k txt docs compressed by absolute path args'
+);
+
+rm_test_dir();
+
+done_testing;
+
+sub mk_test_dir {
+ rm_test_dir();
+
+ make_path('debian/debhelper/usr/share/doc/debhelper');
+
+ my $fh;
+
+ # write 2k to foo.txt
+ open $fh, '>', 'debian/debhelper/usr/share/doc/debhelper/foo.txt'
+ or die "Could not write to debian/debhelper/usr/share/doc/debhelper/foo.txt: $!";
+ print $fh 'X' x 2048;
+ close $fh
+ or die "Could not write to debian/debhelper/usr/share/doc/debhelper/bar.txt: $!";
+
+ # write 5k to bar.txt
+ open $fh, '>', 'debian/debhelper/usr/share/doc/debhelper/bar.txt'
+ or die "Could not write to debian/debhelper/usr/share/doc/debhelper/bar.txt: $!";
+ print $fh 'X' x 5120;
+ close $fh
+ or die "Could not write to debian/debhelper/usr/share/doc/debhelper/bar.txt: $!";
+}
+
+sub rm_test_dir {
+ remove_tree('debian/debhelper');
+
+ unlink 'debian/debhelper.debhelper.log'; # ignore error, it may not exist
+}
+
+sub dh_compress {
+ system('./dh_compress', @_) == 0
+ or fail("Could not run ./dh_compress @_: $?");
+}