use Carp 'confess';
use List::Util 'shuffle';
-ok ( (! grep { $_ =~ m|DBIx/Class| } @$inc_before ), 'Nothing DBIC related was loaded before inc-test')
- unless $ENV{PERL5OPT}; # a defined PERL5OPT may inject extra deps crashing this test
-
-is_deeply (
- [ sort @$inc_after],
- [ sort (@$inc_before, qw( DBIx/Class/Optional/Dependencies.pm if.pm )) ],
- 'Nothing loaded other than DBIx::Class::OptDeps',
-) unless $ENV{RELEASE_TESTING};
+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};
+ is_deeply
+ $inc_before,
+ [],
+ 'Nothing was loaded before inc-test'
+ ;
+ is_deeply
+ $inc_after,
+ [ 'DBIx/Class/Optional/Dependencies.pm' ],
+ 'Nothing was loaded other than DBIx::Class::OptDeps'
+ ;
+}
# check the project-local groups for sanity
lives_ok {
{
# make module loading impossible, regardless of actual libpath contents
- local @INC = (sub { confess('Optional Dep Test') } );
+ local @INC;
# basic test using the deploy target
for ('deploy', ['deploy']) {
DBIx::Class::Optional::Dependencies->modreq_missing_for ($_),
qr/
\A
- " SQL::Translator \~ \>\= [\d\.]+ "
+ SQL::Translator \~ [\d\.]+
\z
/x,
'expected modreq missing string contents',
DBIx::Class::Optional::Dependencies->req_missing_for ($_),
qr/
\A
- " SQL::Translator \~ \>\= [\d\.]+ "
+ SQL::Translator \~ [\d\.]+
\Q (see DBIx::Class::Optional::Dependencies documentation for details)\E
\z
/x,
like (
DBIx::Class::Optional::Dependencies->modreq_errorlist_for ($_)->{'SQL::Translator'},
- qr/Optional Dep Test/,
- 'custom exception found in errorlist',
+ qr|\QCan't locate SQL/Translator.pm|,
+ 'correct "unable to locate" exception found in errorlist',
);
#make it so module appears loaded
is(
DBIx::Class::Optional::Dependencies->req_missing_for([qw( rdbms_pg test_rdbms_pg )]),
- '"DBD::Pg~>=2.009002" as well as the following group(s) of environment variables: DBICTEST_PG_DSN/..._USER/..._PASS',
+ 'DBD::Pg~2.009002 as well as the following group(s) of environment variables: DBICTEST_PG_DSN/..._USER/..._PASS',
'optional dependencies for testing Postgres without envvar'
);
is(
DBIx::Class::Optional::Dependencies->req_missing_for([shuffle qw( test_rdbms_mysql test_rdbms_pg )]),
- 'DBD::mysql "DBD::Pg~>=2.009002" as well as the following group(s) of environment variables: DBICTEST_MYSQL_DSN/..._USER/..._PASS and DBICTEST_PG_DSN/..._USER/..._PASS',
+ 'DBD::mysql DBD::Pg~2.009002 as well as the following group(s) of environment variables: DBICTEST_MYSQL_DSN/..._USER/..._PASS and DBICTEST_PG_DSN/..._USER/..._PASS',
'optional dependencies for testing Postgres+MySQL without envvars'
);
is(
DBIx::Class::Optional::Dependencies->req_missing_for([shuffle qw( rdbms_pg test_rdbms_pg )]),
- '"DBD::Pg~>=2.009002"',
+ 'DBD::Pg~2.009002',
'optional dependencies error text for testing Postgres matches with evvar',
);
# ICDT augmentation
- my $mysql_icdt = [shuffle qw( test_rdbms_mysql icdt )];
+ my %expected_icdt_base = ( DateTime => '0.55', 'DateTime::TimeZone::OlsonDB' => 0 );
+
+ my $mysql_icdt = [shuffle qw( test_rdbms_mysql ic_dt )];
is_deeply(
DBIx::Class::Optional::Dependencies->modreq_list_for($mysql_icdt),
{
- 'DateTime' => '0.55',
+ %expected_icdt_base,
'DBD::mysql' => 0,
'DateTime::Format::MySQL' => 0,
},
is_deeply(
DBIx::Class::Optional::Dependencies->req_list_for($mysql_icdt),
- {
- 'DateTime' => '0.55',
- },
+ \%expected_icdt_base,
'optional dependencies list for testing ICDT MySQL without envvar',
);
is(
DBIx::Class::Optional::Dependencies->req_missing_for($mysql_icdt),
- '"DateTime~>=0.55" DateTime::Format::MySQL DBD::mysql as well as the following group(s) of environment variables: DBICTEST_MYSQL_DSN/..._USER/..._PASS',
+ "DateTime~0.55 DateTime::Format::MySQL DateTime::TimeZone::OlsonDB DBD::mysql as well as the following group(s) of environment variables: DBICTEST_MYSQL_DSN/..._USER/..._PASS",
'missing optional dependencies for testing ICDT MySQL without envvars'
);
# test multi-level include with a variable and mandatory part converging on same included dep
local $ENV{DBICTEST_MSACCESS_ODBC_DSN};
local $ENV{DBICTEST_MSSQL_ODBC_DSN} = 'foo';
- my $msaccess_mssql_icdt = [ shuffle qw( test_rdbms_msaccess_odbc test_rdbms_mssql_odbc icdt ) ];
+ my $msaccess_mssql_icdt = [ shuffle qw( test_rdbms_msaccess_odbc test_rdbms_mssql_odbc ic_dt ) ];
is_deeply(
DBIx::Class::Optional::Dependencies->req_missing_for($msaccess_mssql_icdt),
- 'Data::GUID "DateTime~>=0.55" "DateTime::Format::Strptime~>=1.2" DBD::ODBC as well as the following group(s) of environment variables: DBICTEST_MSACCESS_ODBC_DSN/..._USER/..._PASS',
+ 'Data::GUID DateTime~0.55 DateTime::Format::Strptime~1.2 DateTime::TimeZone::OlsonDB DBD::ODBC as well as the following group(s) of environment variables: DBICTEST_MSACCESS_ODBC_DSN/..._USER/..._PASS',
'Correct req_missing_for on multi-level converging include',
);
is_deeply(
DBIx::Class::Optional::Dependencies->modreq_missing_for($msaccess_mssql_icdt),
- 'Data::GUID "DateTime~>=0.55" "DateTime::Format::Strptime~>=1.2" DBD::ODBC',
+ 'Data::GUID DateTime~0.55 DateTime::Format::Strptime~1.2 DateTime::TimeZone::OlsonDB DBD::ODBC',
'Correct modreq_missing_for on multi-level converging include',
);
DBIx::Class::Optional::Dependencies->req_list_for($msaccess_mssql_icdt),
{
'DBD::ODBC' => 0,
- 'DateTime' => '0.55',
'DateTime::Format::Strptime' => '1.2',
+ %expected_icdt_base,
},
'Correct req_list_for on multi-level converging include',
);
{
'DBD::ODBC' => 0,
'Data::GUID' => 0,
- 'DateTime' => '0.55',
'DateTime::Format::Strptime' => '1.2',
+ %expected_icdt_base,
},
'Correct modreq_list_for on multi-level converging include',
);