diff options
Diffstat (limited to 't/dh_installman/01-basics.t')
-rwxr-xr-x | t/dh_installman/01-basics.t | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/t/dh_installman/01-basics.t b/t/dh_installman/01-basics.t new file mode 100755 index 0000000..141059a --- /dev/null +++ b/t/dh_installman/01-basics.t @@ -0,0 +1,94 @@ +#!/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); + +sub has_man_db_tool { + my ($tool) = @_; + open(my $old_stderr, '>&', *STDERR) or error("dup(STDERR, tmp_fd): $!"); + open(*STDERR, '>', '/dev/null') or error("re-open stderr as /dev/null: $!"); + + my $res = defined(`$tool --version`); + open(*STDERR, '>&', $old_stderr) or error("dup(tmp_fd, STDERR): $!"); + close($old_stderr); + return $res; +} + +if (has_man_db_tool('man') || has_man_db_tool('man-recode')) { + plan(tests => 2); +} else { + plan(skip_all => 'Test requires man or man-recode'); +} + +our @TEST_DH_EXTRA_TEMPLATE_FILES = (qw( + manpage-uncompressed.pod + manpage-compressed.pod + manpage-perl.pod + libmanpage.so.1.2.3.pod + libmanpage.so.9.2.3 +)); + +each_compat_subtest { + my ($compat) = @_; + if (! -d 'generated-manpages') { + # Static data that can be reused. Generate only in the first test + make_path('generated-manpages'); + for my $basename (qw(manpage-uncompressed manpage-compressed manpage-perl libmanpage.so.1.2.3)) { + doit('pod2man', '--utf8', '-c', 'Debhelper', '-r', '1.0', "${basename}.pod", + "generated-manpages/${basename}.1"); + } + doit('pod2man', '--utf8', '-c', 'Debhelper', '-r', '1.0', '-s', '3', 'manpage-perl.pod', + 'generated-manpages/manpage-perl.3perl'); + doit('gzip', '-9n', 'generated-manpages/manpage-compressed.1'); + } + ok(run_dh_tool('dh_installman', 'generated-manpages/manpage-uncompressed.1', + 'generated-manpages/manpage-compressed.1.gz', + 'generated-manpages/manpage-perl.3perl', + 'generated-manpages/libmanpage.so.1.2.3.1', + 'libmanpage.so.9.2.3')); + + ok(-e 'debian/debhelper/usr/share/man/man1/manpage-uncompressed.1'); + ok(-e 'debian/debhelper/usr/share/man/man1/manpage-compressed.1'); + ok(-e 'debian/debhelper/usr/share/man/man3/manpage-perl.3'); + ok(-e 'debian/debhelper/usr/share/man/man1/libmanpage.so.1.2.3.1'); + ok(! -e 'debian/debhelper/usr/share/man/man9/libmanpage.so.9.2.9.2.3'); + ok(-l 'debian/debhelper/usr/share/man/man3/libmanpage.so.9.2.3'); + remove_tree('debian/debhelper', 'debian/tmp', 'debian/.debhelper'); +}; + +each_compat_subtest { + my ($compat) = @_; + if (! -d 'generated-manpages') { + # Static data that can be reused. Generate only in the first test + make_path('generated-manpages'); + for my $basename (qw(manpage-uncompressed manpage-compressed libmanpage.so.1.2.3)) { + doit('pod2man', '--utf8', '-c', 'Debhelper', '-r', '1.0', "${basename}.pod", + "generated-manpages/${basename}.1"); + } + doit('pod2man', '--utf8', '-c', 'Debhelper', '-r', '1.0', '-s', '3', 'manpage-perl.pod', + 'generated-manpages/manpage-perl.3perl'); + doit('gzip', '-9n', 'generated-manpages/manpage-compressed.1'); + } + mkdirs('debian/debhelper/usr/share/man/man1'); + mkdirs('debian/debhelper/usr/share/man/man3'); + copy_file('generated-manpages/manpage-uncompressed.1', 'debian/debhelper/usr/share/man/man1/manpage-uncompressed.1'); + copy_file('generated-manpages/manpage-compressed.1.gz', 'debian/debhelper/usr/share/man/man1/manpage-compressed.1.gz'); + copy_file('generated-manpages/manpage-perl.3perl', 'debian/debhelper/usr/share/man/man3/manpage-perl.3perl'); + copy_file('generated-manpages/libmanpage.so.1.2.3.1', 'debian/debhelper/usr/share/man/man1/libmanpage.so.1.2.3.1'); + copy_file('libmanpage.so.9.2.3', 'debian/debhelper/usr/share/man/man3/libmanpage.so.9.2.3'); + ok(run_dh_tool('dh_installman')); + ok(-e 'debian/debhelper/usr/share/man/man1/manpage-uncompressed.1'); + ok(-e 'debian/debhelper/usr/share/man/man1/manpage-compressed.1'); + ok(-e 'debian/debhelper/usr/share/man/man3/manpage-perl.3perl'); + ok(-e 'debian/debhelper/usr/share/man/man1/libmanpage.so.1.2.3.1'); + ok(! -e 'debian/debhelper/usr/share/man/man9/libmanpage.so.9.2.9.2.3'); + ok(-l 'debian/debhelper/usr/share/man/man3/libmanpage.so.9.2.3'); + remove_tree('debian/debhelper', 'debian/tmp', 'debian/.debhelper'); +}; + |