Subject: | Follow up to "fails on Win32" (http://rt.cpan.org/Ticket/Display.html?id=28020) |
As the author of http://rt.cpan.org/Ticket/Display.html?id=28020
reported, tests fail on Win32 wrt the path separator.
Having investigated this a bit further, the path separator check based
on $^O eq 'MSWin32' is not the problem. When running under prove, all
tests pass.
The cause appears to be some weirdness is going on when running under
nmake/dmake (verified with both), and therefore the cpan shell too.
Under these conditions the "expected" path separator magically changes
back to "/", causing the tests to fail.
If we can avoid setting the separator when running under a make binary
on Win32, the tests should pass. Not sure how to go about reliably
detecting this. One possibility might be
$seperator = "\\" if $^O eq 'MSWin32' && ! exists $ENV{MAKEFLAGS};
as MAKEFLAGS seems to be the only difference in %ENV. I don't know if
you could depend on that though.
Another possibility is using the value in $0, as it contains a path
complete with separator that changes depending whether you are running
under a make binary ("/") or via prove ("\"). This could be a more
workable solution IMO.
HTH, Will