Front page | perl.perl5.porters |
Postings from July 2012
[perl #114022] Pod-Html output differs between explicit outfile and redirection from STDOUT
Thread Previous
|
Thread Next
From:
James E Keenan
Date:
July 6, 2012 17:41
Subject:
[perl #114022] Pod-Html output differs between explicit outfile and redirection from STDOUT
Message ID:
rt-3.6.HEAD-28836-1341621662-542.114022-75-0@perl.org
# New Ticket Created by James E Keenan
# Please include the string: [perl #114022]
# in the subject line of all future correspondence about this issue.
# <URL: https://rt.perl.org:443/rt3/Ticket/Display.html?id=114022 >
This is a bug report for perl from jkeenan@cpan.org,
generated with the help of perlbug 1.39 running under perl 5.16.0.
-----------------------------------------------------------------
[Please describe your issue here]
The documentation for the 'pod2html' utility states that it is called:
#####
pod2html --help --htmlroot=<name> --infile=<name> --outfile=<name>
--podpath=<name>:...:<name> --podroot=<name>
--recurse --norecurse --verbose
--index --noindex --title=<name>
#####
... and goes on to state:
#####
outfile
--outfile=name
Specify the HTML file to create. Output goes to STDOUT if no
outfile is specified.
#####
The POD for core module Pod::Html (around which pod2html is a simple
wrapper) states much the same with respect to 'outfile'.
I would intuitively expect that if I (1) ran pod2html with '--outfile'
set; (2) then ran it again *without* setting '--outfile' but redirecting
STDOUT to a file; that (3) there would be no difference between the
.html files created by either approach.
Peeking further into the Pod::Html code, I would also intuitively expect
that if I (1) ran pod2html with '--outfile' set to a file; (2) then ran
it again with '--outfile=-' (i.e., STDOUT); that (3) there would also be
no difference between the .html files created by either approach.
Either my expectation is incorrect or there is a bug in Pod::Html.
The program attached, 'feature.pl', is adapted from
'ext/Pod-Html/t/feature.t' in the Perl 5 distribution. 't/feature.t'
reads a .pod file, writes an .html file, creates a second .html file
based on HTML code found in the __DATA__ section of 't/feature.t', then
runs a diff on the two files.
'feature.pl' has been modified to remove the explicit testing features
and to respond differently on the basis of a command-line option
'--control' which may be 0, 1 or 2:
#####
perl -Ilib feature.pl --control=0
# 0: --outfile is explicitly set to a file called '.t/feature.html'
perl -Ilib feature.pl --control=1 1> t/1feature.html
# 1: --outfile is set to '-'; STDOUT is redirected to 't/1feature.html'
perl -Ilib feature.pl --control=2 1> t/2feature.html
# 2: --outfile is not set; STDOUT is redirected to 't/2feature.html'
#####
Here is the diff between the first two .html files:
#####
$ diff ./t/feature.html ./t/1feature.html
32c32
< <p>some text and a link <a href="t/crossref.html">crossref</a></p>
---
> <p>some text and a link <a href="/t/crossref.html">crossref</a></p>
#####
Option '--control=2' produced exactly the same output as '--control=1',
so '2' produces the same diff with respect to '0' as does '1'.
Thus, running pod2hml or Pod::Html does not produce the same .html
output when sent to STDOUT as opposed to being sent to an explicit file.
This contradicts my intuitive expectation and is, I assert, a bug.
I discovered this bug in the course of working on my fork of Pod::Html
(https://github.com/jkeenan/Pod-Html). When I ran coverage analysis, I
began to suspect that the "print directly to STDOUT" option was not
being tested by the current Pod::Html test suite. This was not really
surprising, as I have had difficulty writing tests for this option
notwithstanding a lot of refactoring to make the code more explicitly
testable (http://thenceforward.net/Pod-Html/coverage/lib-Pod-Html-pm.html).
My hunch is that this bug lies in either the code or the usage of
subroutine relativize_url() found in the
Pod::Simple::XHTML::LocalPodLinks, itself found in lib/Pod/Html.pm. But
I don't understand the code well enough to pinpoint the problem -- and
I'm not really sure what the correct output should be.
Thoughts? Thank you very much.
[Please do not change anything below this line]
-----------------------------------------------------------------
---
Flags:
category=library
severity=medium
module=Pod::Html
---
Site configuration information for perl 5.16.0:
Configured by jimk at Sun May 20 20:01:26 EDT 2012.
Summary of my perl5 (revision 5 version 16 subversion 0) configuration:
Platform:
osname=darwin, osvers=8.11.0, archname=darwin-2level
uname='darwin macintosh-8.local 8.11.0 darwin kernel version
8.11.0: wed oct 10 18:26:00 pdt 2007; root:xnu-792.24.17~1release_ppc
power macintosh powerpc '
config_args='-des'
hint=recommended, useposix=true, d_sigaction=define
useithreads=undef, usemultiplicity=undef
useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
use64bitint=undef, use64bitall=undef, uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cc', ccflags ='-fno-common -DPERL_DARWIN -fno-strict-aliasing
-pipe -I/usr/local/include -I/opt/local/include',
optimize='-O3',
cppflags='-fno-common -DPERL_DARWIN -fno-strict-aliasing -pipe
-I/usr/local/include -I/opt/local/include'
ccversion='', gccversion='4.0.1 (Apple Computer, Inc. build 5250)',
gccosandvers=''
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=4321
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t',
lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='env MACOSX_DEPLOYMENT_TARGET=10.3 cc', ldflags ='
-L/usr/local/lib -L/opt/local/lib'
libpth=/usr/local/lib /opt/local/lib /usr/lib
libs=-ldbm -ldl -lm -lc
perllibs=-ldl -lm -lc
libc=, so=dylib, useshrplib=false, libperl=libperl.a
gnulibc_version=''
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=bundle, d_dlsymun=undef, ccdlflags=' '
cccdlflags=' ', lddlflags=' -bundle -undefined dynamic_lookup
-L/usr/local/lib -L/opt/local/lib'
Locally applied patches:
---
@INC for perl 5.16.0:
/usr/local/lib/perl5/site_perl/5.16.0/darwin-2level
/usr/local/lib/perl5/site_perl/5.16.0
/usr/local/lib/perl5/5.16.0/darwin-2level
/usr/local/lib/perl5/5.16.0
/usr/local/lib/perl5/site_perl/5.14.2
/usr/local/lib/perl5/site_perl/5.14.0
/usr/local/lib/perl5/site_perl/5.12.0
/usr/local/lib/perl5/site_perl/5.10.1
/usr/local/lib/perl5/site_perl/5.10.0
/usr/local/lib/perl5/site_perl
.
---
Environment for perl 5.16.0:
DYLD_LIBRARY_PATH=/Users/jimk/work/pseudoinstall/lib:/Users/jimk/gitwork/parrot/blib/lib
HOME=/Users/jimk
LANG (unset)
LANGUAGE (unset)
LD_LIBRARY_PATH (unset)
LOGDIR (unset)
PATH=/usr/local/bin:/opt/local/bin:/opt/local/sbin:/usr/local/bin:/opt/local/bin:/opt/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/Users/jimk/bin:/Users/jimk/bin/perl:/Users/jimk/bin/c:/Users/jimk/bin/shell:/sw/lib:/sw/bin:/Users/jimk/bin:/Users/jimk/bin/perl:/Users/jimk/bin/c:/Users/jimk/bin/shell:/sw/lib:/sw/bin
PERL_BADLANG (unset)
SHELL=/bin/bash
Thread Previous
|
Thread Next