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.