http://www.perlmonks.org?node_id=1005112


in reply to Re: how to force Build test to load all modules from blib/lib first
in thread how to force Build test to load all modules from blib/lib first

I already have a BEGIN block in the test, like this
#! /usr/bin/env perl use Test::More tests => 7; use POSIX qw(strftime); use lib "$ENV{FVIS_HOME}/monitor/lib"; use lib "$ENV{FVIS_HOME}/monitor/tools"; BEGIN { use Cwd; use File::Path; use File::Basename qw(basename dirname); my $tmpdir = &getcwd() . "/test/" . basename($0); rmtree($tmpdir); mkpath("$tmpdir/log"); mkpath("$tmpdir/monitor/schedule"); mkpath("$tmpdir/monitor/etc"); symlink("$ENV{FVIS_HOME}/lib", "$tmpdir/lib"); symlink("$ENV{FVIS_HOME}/etc", "$tmpdir/etc"); $ENV{FVIS_HOME} = $tmpdir; $ENV{GUMS_ROOT} = "$tmpdir/monitor"; unshift(@INC, "$ENV{FVIS_HOME}/lib/perl"); unshift(@INC, "./blib/lib"); } use FVIS::Rachlis::Job; use FVIS::Rachlis::Schedule::File; use FVIS::Rachlis::Schedule;
What this is doing is setting up a sandbox linking parts to the actual installed area. The behavior with our without the two unshift() is the same. Both FVIS::Rachlis::Job and FVIS::Rachlis::Schedule::File; are loaded from blib/lib, FVIS::Rachlis::Schedule is loaded from $ENV{FVIS_HOME}/lib/perl which is already in PERL5LIB. Both load FVIS::Log which wraps part of Log::Log4perl. Flipping the order of the last two flips which one is loaded from blib/lib.