if modver_gt_or_eq_and_lt( 'Test::More', '1.200', '1.301001_099' );
local $ENV{DBICTEST_IN_PERSISTENT_ENV} = 1;
+ local $ENV{DBICTEST_ANFANG_DEFANG} = 1;
require File::Spec;
require warnings and warnings->import;
require strict and strict->import;
}
-
- # allow 'use ANFANG' to work after it's been do()ne
- $INC{"ANFANG.pm"} ||= __FILE__;
- $INC{"t/lib/ANFANG.pm"} ||= __FILE__;
- $INC{"./t/lib/ANFANG.pm"} ||= __FILE__;
}
-BEGIN {
+#
+# FROM THIS POINT ONWARD EVERYTHING HAPPENS LINEARLY AT RUNTIME
+#
+our $anfang_loaded;
+
+# this allows the obscure but possible call case to behave correctly:
+#
+# perl -Mt::lib::ANFANG -e 'do "./t/lib/ANFANG.pm" or die ( $@ || $! )'
+#
+return 1 if $anfang_loaded;
+# cover even more bases
+$INC{$_} ||= __FILE__ for (qw( ANFANG.pm t/lib/ANFANG.pm ./t/lib/ANFANG.pm ));
+
+{
# load-me-first sanity check
if (
and
- # if this is set - all bets are off
- ! $ENV{PERL5OPT}
+ # if these are set - all bets are off
+ ! (
+ $ENV{PERL5OPT}
+ or
+ scalar grep { $_ =~ m| \/ sitecustomize\.pl $ |x } keys %INC
+ )
and
goto $orig;
};
}
-
}
-use lib 't/lib';
+
+require lib;
+lib->import('t/lib');
+
# everything expects this to be there
! -d 't/var' and (
die "Unable to create 't/var': $!\n"
);
+
# Back in ab340f7f ribasushi stupidly introduced a "did you check your deps"
# verification tied very tightly to Module::Install. The check went away, and
# so eventually will M::I, but bisecting can bring all of this back from the
# dead. In order to reduce hair-pulling make sure that ./inc/ is always there
-f 'Makefile.PL' and mkdir 'inc' and mkdir 'inc/.author';
-1;
+
+# make absolutely sure this is last
+$anfang_loaded = 1;
use List::Util 'shuffle';
SKIP: {
- skip 'Lean load pattern testing unsafe with $ENV{PERL5OPT}', 1 if $ENV{PERL5OPT};
- skip 'Lean load pattern testing useless with $ENV{RELEASE_TESTING}', 1 if $ENV{RELEASE_TESTING};
+ skip 'Lean load pattern testing unsafe with $ENV{PERL5OPT}', 1
+ if $ENV{PERL5OPT};
+
+ skip 'Lean load pattern testing unsafe with sitecustomize.pl', 1
+ if grep { $_ =~ m| \/ sitecustomize\.pl $ |x } keys %INC;
+
+ skip 'Lean load pattern testing useless with $ENV{RELEASE_TESTING}', 1
+ if $ENV{RELEASE_TESTING};
+
is_deeply
$inc_before,
[],
-BEGIN { $ENV{DBICTEST_ANFANG_DEFANG} = 1 }
-
# Use a require override instead of @INC munging (less common)
# Do the override as early as possible so that CORE::require doesn't get compiled away
my ($initial_inc_contents, $expected_dbic_deps, $require_sites);
BEGIN {
- # these envvars *will* bring in more stuff than the baseline
- delete @ENV{qw(DBICTEST_SQLT_DEPLOY DBIC_TRACE)};
-
- # make sure extras do not load even when this is set
- $ENV{PERL_STRICTURES_EXTRA} = 1;
-
unshift @INC, 't/lib';
require DBICTest::Util::OverrideRequire;
plan skip_all => 'A defined PERL5OPT may inject extra deps crashing this test'
if $ENV{PERL5OPT};
+ plan skip_all => 'Presence of sitecustomize.pl may inject extra deps crashing this test'
+ if grep { $_ =~ m| \/ sitecustomize\.pl $ |x } keys %INC;
+
plan skip_all => 'Dependency load patterns are radically different before perl 5.10'
if "$]" < 5.010;
+ # these envvars *will* bring in more stuff than the baseline
+ delete @ENV{qw(
+ DBIC_TRACE
+ DBICTEST_SQLT_DEPLOY
+ DBICTEST_VIA_REPLICATED
+ DBICTEST_DEBUG_CONCURRENCY_LOCKS
+ )};
+
+ $ENV{DBICTEST_ANFANG_DEFANG} = 1;
+
+ # make sure extras do not load even when this is set
+ $ENV{PERL_STRICTURES_EXTRA} = 1;
+
# add what we loaded so far
for (keys %INC) {
my $mod = $_;
}
}
-BEGIN {
- delete $ENV{$_} for qw(
- DBICTEST_VIA_REPLICATED
- DBICTEST_DEBUG_CONCURRENCY_LOCKS
- );
-}
#######
### This is where the test starts