As seen in a recent thread here (cross-posted to
module-auth...@perl.org), I was thinking of moving the Makefile.PL
"C++ guess" logic to a separate module to decouple development from
the core Inline::CPP module.  The discussion that followed led me to
find ExtUtils::CppGuess, which looks like a really nice alternative.
EU::CG seems to have a strong 'PASS' rate with the CPAN testers.
Nevertheless, I don't want to give up any hard-won ground by blindly
shifting over.  It would be a shame to take two steps forward and one
backward, when some care in transitioning could bring us three steps
forward instead.

Here's a strategy I've come up with:

First step: scrape all the CPAN smoke test reports for the latest
Inline::CPP distribution.  Parse them for the various $Config{...}
stats that we currently use as a basis for our C++ compiler guess
logic, and assemble those stats into a csv file, along with a column
for 'pass/fail'.

Second step:  Import our existing Makefile.PL logic into a test
script.  Within that test script, run each of the configuration
profiles against our existing logic, and compare it to results from
ExtUtils::CppGuess.  Spit out a log of any differences between our
guesses, and EU::CG's guesses along with whether or not that
particular profile resulted in an Inline::CPP pass or fail.

Now, ideally everywhere I currently have a FAIL, EU::CG will have a
different guess, and everywhere I have a PASS the existing logic will
agree with EU::CG.  That would be ideal.  Drop in EU::CG and relax.
Ideal, but highly unlikely.

The worst case would be different guesses for each profile, and no
relationship to PASS/FAIL.  Give up on the idea, create my own module
instead.  Also an unlikely scenario.

What I'm actually hoping to find will be that most of the time we're
guessing identically, and that in those few cases where the guesses
disagree I'll be able to assess whether the winner should be EU::CG,
or my existing logic.  Hopefully there would be at least some
correlation between FAILS and differences between our guesses.  After
working through those discrepancies, in those (hopefully few) places
where Inline::CPP's Makefile.PL logic is guessing better than EU::CG,
I could submit bug reports (hopefully with patches) to EU::CG.  That
could lead to EU::CG gaining additional ground, making it the obvious
solution to Inline::CPP's need.  Otherwise, I could special-case a few
profiles in Makefile.PL, and still shift to EU::CG.

Does anyone see a better approach to regression testing this sort of transition?

Dave

Reply via email to