diff options
author | Rafael Kitover <rkitover@gmail.com> | 2015-08-07 14:04:58 -0400 |
---|---|---|
committer | Niels Thykier <niels@thykier.net> | 2015-09-26 08:57:53 +0200 |
commit | 60f59661194029a6bba28ebf39d0bf5193789bc5 (patch) | |
tree | fe67cce2ac04e8a022eff2dc76e0316d7a419581 /t/dh_compress.t | |
parent | 0df8fdb046add9ddd72a7fbfd2d36fc949b1faa8 (diff) | |
download | debhelper-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-x | t/dh_compress.t | 93 |
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 @_: $?"); +} |