A BEGIN block around the checks should work, if it was constructed properly.

But you can also use Test::Needs to do this check for you, with much less
fuss.

use strict;
use warnings;
use Test::More;
use Test::Needs qw(Regexp::Common Image::Info);
use Graphics::Fig;
...


On Mon, Jun 19, 2017 at 9:40 PM, Scott Guthridge via cpan-testers-discuss <
cpan-testers-discuss@perl.org> wrote:

> Slaven,  I tried to do what you suggested, but without success:
>
> use strict;
> use warnings;
> use Test::More;
>
> #
> # Skip tests if required modules are not available.
> #
> if (!eval { require Regexp::Common; 1 }) {
>     plan skip_all => "Regexp::Common moduled required";
> }
> if (!eval { require Image::Info; 1 }) {
>     plan skip_all => "Image::Info moduled required";
> }
> plan tests => 1;
>
> #
> # Load module under test.
> #
> use Graphics::Fig;        # uses the modules checked above
>
> ....
>
> When "plan skip_all" is executed, it exits the script without allowing
> control to continue after the statement.  So my expectation was that the
> "use Graphics::Fig" below would not be executed if one of the tests above
> failed.  But it seems that perl looks ahead and processes all "use"
> directives before starting execution of the script; therefore, if
> Graphics::Fig has unsatisfied dependencies, the script blows up before
> executing the module check code at the top.
>
> I tried to force the execution order by putting the module tests inside a
> BEGIN block.  That also didn't work.
>
> Scott
>
> ------------------------------
> *From:* Slaven Rezic <sla...@rezic.de>
> *To:* Scott Guthridge via cpan-testers-discuss <
> cpan-testers-discuss@perl.org>; Scott Guthridge <pdx_scoo...@yahoo.com>
> *Sent:* Wednesday, June 14, 2017 10:37 AM
> *Subject:* Re: tests failing due to dependency on Regexp::Common
>
> Something like this could work:
>
>     use Test::More;
>     plan skip_all => "Regexp::Common required for test" if !eval { require
> Regexp::Common; 1 };
>     plan tests => ...;
>
> > Scott Guthridge via cpan-testers-discuss <cpan-testers-discuss@perl.org>
> hat am 14. Juni 2017 um 01:16 geschrieben:
>
> >
> > In Graphics::Fig v1.0.1, several runs are failing due to a missing
> dependency on the Regexp::Common module:
> >
> > #    Tried to use 'Graphics::Fig'.
> > #    Error:  Can't locate Regexp/Common.pm in @INC (you may need to
> install the Regexp::Common module) (@INC contains:
> /home/cpan/pit/bare/conf/perl-5.18.2/.cpanplus/5.18.2/build/
> NYePZvq91K/Graphics-Fig-v1.0.1/blib/lib /home/cpan/pit/bare/conf/perl-
> 5.18.2/.cpanplus/5.18.2/build/NYePZvq91K/Graphics-Fig-v1.0.1/blib/arch
> /home/cpan/pit/bare/conf/perl-5.18.2/.cpanplus/5.18.2/build/
> NYePZvq91K/Graphics-Fig-v1.0.1/blib/lib /home/cpan/pit/bare/conf/perl-
> 5.18.2/.cpanplus/5.18.2/build/NYePZvq91K/Graphics-Fig-v1.0.1/blib/arch
> /home/cpan/pit/bare/perl-5.18.2/lib/site_perl/5.18.2/x86_64-linux
> /home/cpan/pit/bare/perl-5.18.2/lib/site_perl/5.18.2
> /home/cpan/pit/bare/perl-5.18.2/lib/5.18.2/x86_64-linux
> /home/cpan/pit/bare/perl-5.18.2/lib/5.18.2 .) at
> /home/cpan/pit/bare/conf/perl-5.18.2/.cpanplus/5.18.2/build/
> NYePZvq91K/Graphics-Fig-v1.0.1/blib/lib/Graphics/Fig/Parameters.pm line
> 23.
> > # BEGIN failed--compilation aborted at /home/cpan/pit/bare/conf/perl-
> 5.18.2/.cpanplus/5.18.2/build/NYePZvq91K/Graphics-Fig-v1.0.
> 1/blib/lib/Graphics/Fig/Parameters.pm line 23.
> > # Compilation failed in require at /home/cpan/pit/bare/conf/perl-
> 5.18.2/.cpanplus/5.18.2/build/NYePZvq91K/Graphics-Fig-v1.0.1/blib/lib/Graphics/Fig.pm
> line 25.
> > # BEGIN failed--compilation aborted at /home/cpan/pit/bare/conf/perl-
> 5.18.2/.cpanplus/5.18.2/build/NYePZvq91K/Graphics-Fig-v1.0.1/blib/lib/Graphics/Fig.pm
> line 25.
> > # Compilation failed in require at t/arc.t line 15
> >
> > Is there a way to list specific module dependencies in the test
> configuration?  Or should I recode my module to not depend on that module?
> >
> > Thanks,
> > Scott
>
>
>

Reply via email to