Pod::Html test portability redux.
authorCraig A. Berry <craigberry@mac.com>
Fri, 4 Jan 2013 23:41:17 +0000 (17:41 -0600)
committerCraig A. Berry <craigberry@mac.com>
Sun, 6 Jan 2013 22:30:03 +0000 (16:30 -0600)
commit30c56e34c6955d703838cc0ce41e8e17723f11ea
tree1d81c53ad24c9c0b5d16ea02e80535d96be85f13
parent83799784cb180c4b27a23e2ba1a77e8ec80ec76a
Pod::Html test portability redux.

The flurry of activity to get these tests passing in the lead-up to
5.16.0 swept several issues under the rug.  In particular, some
of the tests had failures on VMS that became invisible once we
started skipping them wherever dots are not allowed in directory
names (which is true by default on VMS now, but is likely to change
very shortly).

The facts behind my changes, in no particular order:

File::Spec->rootdir() returns, on VMS, a a special string that will
not be found in any actual pathname, so taking the length of it and
stripping that much off the front of an actual pathname produces
garbage.

File::Spec->rootdir(), on VMS, returns a string that contains a volume
specification, so simply prepending a volume to it produces garbage.
To portably produce a complete path, use catpath().

Windows appears not to care which direction the slashes are leaning,
and VMS can handle pure-Unix paths as long as they aren't pasted onto
components of native paths, so it's reasonbly safe to obtain directory
components with splitdir, and join them together with forward slashes.

The tests pass a value to --podpath that is not absolute, but nor
is it relative in the usual sense.  It's apparently intended to be
relative to the filesystem root, which is an inherently non-portable
concept as neither Windows nor VMS has such a thing.  The best that
can be done (without a complete rethink of the tests and perhaps the
module) is to make it relative to the top-level directory on the
current volume.

This gets all tests passing on Windows, VMS, and OS X.
ext/Pod-Html/t/crossref.t
ext/Pod-Html/t/crossref2.t
ext/Pod-Html/t/crossref3.t
ext/Pod-Html/t/htmldir1.t
ext/Pod-Html/t/htmldir3.t
ext/Pod-Html/t/pod2html-lib.pl