On Sun, Nov 25, 2001 at 10:31:15PM -0700, chromatic wrote:
On Sunday 25 November 2001 22:31, Michael G Schwern wrote:
Porta-paranoia. cflags() and canonpath() are delegated to it. This may
be why File::Spec was commingled.
Now wait a second, this means you're not actually testing what
ExtUtils::MM_Cygwin-catfile() and cflags() and perl_script() do.
There exist neither ExtUtils::MM_Cygwin::catfile() or
ExtUtils::MM_Cygwin::perl_script(). They're both inherited from somewhere,
and are called within ExtUtils::MM_Cygwin::manifypods().
They should be inherited from ExtUtils::MM_Unix.
Inheritance within the MM_* modules is a little confused. Actually
it's a lot confused. ExtUtils::MakeMaker and all the MM_* modules are
all tangled up in each other. This is something I want to pull apart
after there are some tests.
It basically goes like this:
ExtUtils::MakeMaker sets up the MM class:
@MM::ISA = qw[ExtUtils::MM_Unix ExtUtils::Liblist::Kid
ExtUtils::MakeMaker];
It then looks at $^O and requires the appropriate ExtUtils::MM_*
class. In this case, ExtUtils::MM_Cygwin. MM_Cygwin then makes it's
own addition to @MM::ISA...
unshift @MM::ISA, 'ExtUtils::MM_Cygwin';
Leaving you with a fine example of multiple inheritance abuse:
@MM::ISA = qw[ExtUtils::MM_Cygwin ExtUtils::MM_Unix
ExtUtils::Liblist::Kid ExtUtils::MakeMaker];
So before ExtUtils::MM_Cygwin is used, you have to set the initial
@MM::ISA that ExtUtils::MakeMaker normally does, then let
ExtUtils::MM_Cygwin add itself. Sorry, forgot to mention that bit of
fun. In the end, test it like this:
@MM::ISA = qw[ExtUtils::MM_Unix ExtUtils::Liblist::Kid
ExtUtils::MakeMaker];
use_ok('ExtUtils::MM_Cygwin');
I'll start tearing apart the way MM inheritance works shortly.
My assumption (which may very well be invalid) is that anything that breaks
ExtUtils::MM_Unix should be caught by the ExtUtils::MM_Unix test.
Right, the MM_Unix test. I could have sworn we had one... And the
patch to make MM_Unix use File::Spec doesn't seem to have gone in.
The ExtUtils::MM_Cygwin test is predicated upon the assumption that
the bits in ExtUtils::MM_Unix Just Work. As such, I considered them
fair game to be replaced with decaf crystals.
Is there a need to do so? ExtUtils::MM_Unix::catfile() should work on
Cygwin else MM_Cygwin would override it. Ditto the rest. Do they
have weird side effects?
--
Michael G. Schwern [EMAIL PROTECTED]http://www.pobox.com/~schwern/
Perl Quality Assurance [EMAIL PROTECTED] Kwalitee Is Job One
We have cornered the market on senselessness and have profited.