in reply to Re: Overcoming 5.10.0 vs 5.38.2 incompatibilities
in thread Overcoming 5.10.0 vs 5.38.2 incompatibilities

Test2::V) does not appear to have the equivalent of use_ok. And once I use it, The 'new' in Class::MethodMaker appears to be broken
  • Comment on Re^2: Overcoming 5.10.0 vs 5.38.2 incompatibilities

Replies are listed 'Best First'.
Re^3: Overcoming 5.10.0 vs 5.38.2 incompatibilities
by SankoR (Prior) on Mar 11, 2024 at 21:23 UTC
    Yeah, testing kinda moved past use_ok. As Test2::Bundle::More states, "These are not necessary. Use use and require directly." It's a show stopping fatal error if the module you're testing can't be used at all so wrapping it in an eval to make it non-fatal and then writing more code to bail out if that test failed because the following tests would also likely fail as well was kinda iffy.

    Back on topic, just so we have a starting place to figure out why you're getting unexpected values, try something like this to get the version of Date::Manip installed on your live environment (which is hopefully still up and running and not also the dev machine upgraded to 5.38.x...):

    perl -MDate::Manip -e 'warn $Date::Manip::VERSION'
    There's been a lot of time delta related changes in https://metacpan.org/dist/Date-Manip/changes since perl 5.10 was released. Hopefully we can narrow the range down a little with a version number. Class::MethodMaker might as well be magic the way it generates methods around other OOP modules so that'll be the last thing I'd try to dig into.
Re^3: Overcoming 5.10.0 vs 5.38.2 incompatibilities
by kcott (Archbishop) on Mar 12, 2024 at 18:06 UTC

    ++SankoR has shown a quote regarding use_ok from Test2::Bundle::More. You'd do well to read all of that page; in particular the sections "KEY DIFFERENCES FROM Test::More" and "THESE FUNCTIONS AND VARIABLES HAVE BEEN REMOVED".

    You don't show any code using use_ok. The code examples from Test::More::use_ok generally have this form:

    BEGIN { use_ok('Some::Module') }

    You could change whatever lines you have like that to

    use ok 'Some::Module';

    Note there's no underscore between use and ok. This will work under Test2::V0. See the core module ok for more on that.

    "... moving to 5.38.2 (don't ask :)"

    I'd expect Perl v5.40.0 to be released in the next couple of months or so. Test2::Suite should become a core module in that version: see "perldelta (for 5.39.4): New Modules and Pragmata". You obviously have a lot of work to do with this conversion: I won't ask why v5.38.2 but maybe v5.40.0 might be a better target as you won't need to download and install various Test2::* modules from CPAN.

    — Ken

      Thank you to all who have answered it
      It boils down to usage of DateCalc function which seems to be different between the old (5.10.0 era) and today's. I am searching for the exact definition of that function