Revision history for DBIx::Class
+ * New Features
+ - DBIx::Class::Optional::Dependencies now properly understands
+ combinations of requirements and does the right thing with e.g.
+ ->req_list_for([qw( rdbms_oracle icdt )]) bringing in the Oracle
+ specific DateTime::Format dependencies
* Fixes
- Fix incorrect collapsing-parser source being generated in the
},
# a common placeholder for engines with IC::DT support based off DT::F::S
- # currently unused on purpose (see next commits)
- _icdt_strptime_based => {},
+ _icdt_strptime_based => {
+ augment => {
+ icdt => {
+ req => {
+ 'DateTime::Format::Strptime' => '1.2',
+ },
+ },
+ }
+ },
_rdbms_generic_odbc => {
req => {
},
},
+ icdt => {
+ req => {
+ 'DateTime' => '0.55',
+ },
+ pod => {
+ title => 'InflateColumn::DateTime support',
+ desc =>
+ 'Modules required for L<DBIx::Class::InflateColumn::DateTime>. '
+ . 'Note that this group does not require much on its own, but '
+ . 'instead is augmented by various RDBMS-specific groups. See the '
+ . 'documentation of each C<rbms_*> group for details',
+ },
+ },
+
id_shortener => {
req => {
'Math::BigInt' => '1.80',
},
},
- test_dt => {
- req => {
- 'DateTime' => '0.55',
- 'DateTime::Format::Strptime' => '1.2',
- },
- },
-
- test_dt_sqlite => {
- include => 'test_dt',
- req => {
- # t/36datetime.t
- # t/60core.t
- 'DateTime::Format::SQLite' => '0',
- },
- },
-
- test_dt_mysql => {
- include => 'test_dt',
- req => {
- # t/inflate/datetime_mysql.t
- # (doesn't need Mysql itself)
- 'DateTime::Format::MySQL' => '0',
- },
- },
-
- test_dt_pg => {
- include => 'test_dt',
- req => {
- # t/inflate/datetime_pg.t
- # (doesn't need PG itself)
- 'DateTime::Format::Pg' => '0.16004',
- },
- },
-
test_cdbicompat => {
- include => 'test_dt',
+ include => 'icdt',
req => {
'Class::DBI::Plugin::DeepAbstractSearch' => '0',
'Time::Piece::MySQL' => '0',
title => 'SQLite support',
desc => 'Modules required to connect to SQLite',
},
+ augment => {
+ icdt => {
+ req => {
+ 'DateTime::Format::SQLite' => '0',
+ },
+ },
+ },
+ },
+
+ # centralize the specification, as we have ICDT tests which can
+ # test the full behavior of RDBMS-specific ICDT on top of bare SQLite
+ # not _-prefixed so that it will show up under req_group_list
+ icdt_pg => {
+ augment => {
+ icdt => {
+ req => {
+ 'DateTime::Format::Pg' => '0.16004',
+ },
+ },
+ },
},
rdbms_pg => {
+ include => 'icdt_pg',
req => {
# when changing this list make sure to adjust xt/optional_deps.t
'DBD::Pg' => 0,
},
},
+ # centralize the specification, as we have ICDT tests which can
+ # test the full behavior of RDBMS-specific ICDT on top of bare SQLite
+ # not _-prefixed so that it will show up under req_group_list
+ icdt_mysql => {
+ augment => {
+ icdt => {
+ req => {
+ 'DateTime::Format::MySQL' => '0',
+ },
+ },
+ },
+ },
+
rdbms_mysql => {
+ include => 'icdt_mysql',
req => {
'DBD::mysql' => 0,
},
title => 'Oracle support',
desc => 'Modules required to connect to Oracle',
},
+ augment => {
+ icdt => {
+ req => {
+ 'DateTime::Format::Oracle' => '0',
+ },
+ },
+ },
},
rdbms_ase => {
},
_rdbms_db2_common => {
+ augment => {
+ icdt => {
+ req => {
+ 'DateTime::Format::DB2' => '0',
+ },
+ },
+ },
},
rdbms_db2 => {
DBICTEST_ORA_PASS => 0,
],
req => {
- 'DateTime::Format::Oracle' => '0',
'DBD::Oracle' => '1.24',
},
},
idx => 1 + keys %$rv,
missing_envvars => $missing_envvars->{$_},
} for @ret;
+ $rv->{$_}{user_requested} = 1 for @$groups;
$rv;
};
}
my $all_groups = __expand_includes($groups);
+ # pre-assemble list of augmentations, perform basic sanity checks
+ # Note that below we *DO NOT* respect the source/target reationship, but
+ # instead always default to augment the "later" group
+ # This is done so that the "stable/variable" boundary keeps working as
+ # expected
+ my $augmentations;
+ for my $requesting_group (keys %$all_groups) {
+ if (my $ag = $dbic_reqs->{$requesting_group}{augment}) {
+ for my $target_group (keys %$ag) {
+
+ croak "Group '$requesting_group' claims to augment a non-existent group '$target_group'"
+ unless $dbic_reqs->{$target_group};
+
+ croak "Augmentation combined with variable effective_modreqs currently unsupported for group '$requesting_group'"
+ if $dbic_reqs->{$requesting_group}{env};
+
+ croak "Augmentation of group '$target_group' with variable effective_modreqs unsupported (requested by '$requesting_group')"
+ if $dbic_reqs->{$target_group}{env};
+
+ if (my @foreign = grep { $_ ne 'req' } keys %{$ag->{$target_group}} ) {
+ croak "Only 'req' augmentations are currently supported (group '$requesting_group' attempts to alter '$foreign[0]' of group '$target_group'";
+ }
+
+ $ret->{augments}{$target_group} = 1;
+
+ # no augmentation for stuff that hasn't been selected
+ if ( $all_groups->{$target_group} and my $ar = $ag->{$target_group}{req} ) {
+ push @{$augmentations->{
+ ( $all_groups->{$requesting_group}{idx} < $all_groups->{$target_group}{idx} )
+ ? $target_group
+ : $requesting_group
+ }}, $ar;
+ }
+ }
+ }
+ }
+
for my $group (sort { $all_groups->{$a}{idx} <=> $all_groups->{$b}{idx} } keys %$all_groups ) {
my $group_reqs = $dbic_reqs->{$group}{req};
# sanity-check
- for (keys %$group_reqs) {
+ for my $req_bag ($group_reqs, @{ $augmentations->{$group} || [] } ) {
+ for (keys %$req_bag) {
- $_ =~ /\A [A-Z_a-z][0-9A-Z_a-z]* (?:::[0-9A-Z_a-z]+)* \z /x
- or croak "Requirement '$_' in group '$group' is not a valid module name";
+ $_ =~ /\A [A-Z_a-z][0-9A-Z_a-z]* (?:::[0-9A-Z_a-z]+)* \z /x
+ or croak "Requirement '$_' in group '$group' is not a valid module name";
- # !!!DO NOT CHANGE!!!
- # remember - version.pm may not be available on the system
- croak "Requirement '$_' in group '$group' specifies an invalid version '$group_reqs->{$_}' (only plain non-underscored floating point decimals are supported)"
- if ( ($group_reqs->{$_}||0) !~ / \A [0-9]+ (?: \. [0-9]+ )? \z /x );
+ # !!!DO NOT CHANGE!!!
+ # remember - version.pm may not be available on the system
+ croak "Requirement '$_' in group '$group' specifies an invalid version '$req_bag->{$_}' (only plain non-underscored floating point decimals are supported)"
+ if ( ($req_bag->{$_}||0) !~ / \A [0-9]+ (?: \. [0-9]+ )? \z /x );
+ }
}
if (my $e = $all_groups->{$group}{missing_envvars}) {
'modreqs',
( $ret->{missing_envvars} ? () : 'effective_modreqs' ),
) {
- for my $req_bag ($group_reqs) {
+ for my $req_bag ($group_reqs, @{ $augmentations->{$group} || [] } ) {
for my $mod (keys %$req_bag) {
$ret->{$type}{$mod} = $req_bag->{$mod}||0 if (
}
}
- $ret->{modreqs_fully_documented} &&= !!$dbic_reqs->{$group}{pod};
+ $ret->{modreqs_fully_documented} &&= !!$dbic_reqs->{$group}{pod}
+ if $all_groups->{$group}{user_requested};
$ret->{release_testing_mandatory} ||= !!$dbic_reqs->{$group}{release_testing_mandatory};
}
...
- my %DBIC_DEPLOY_DEPS = %{ eval {
+ my %DBIC_DEPLOY_AND_ORACLE_DEPS = %{ eval {
require $class;
- $class->req_list_for('deploy');
+ $class->req_list_for([qw( deploy rdbms_oracle icdt )]);
} || {} };
\$EUMM_ARGS{PREREQ_PM} = {
- \%DBIC_DEPLOY_DEPS,
+ \%DBIC_DEPLOY_AND_ORACLE_DEPS,
\%{ \$EUMM_ARGS{PREREQ_PM} || {} },
};
#@@
push @chunks, '=head1 CURRENT REQUIREMENT GROUPS';
+ my $standalone_info;
+
for my $group (sort keys %$dbic_reqs) {
- my $p = $dbic_reqs->{$group}{pod}
- or next;
- my $modlist = $class->modreq_list_for($group);
+ my $info = $standalone_info->{$group} ||= $class->_groups_to_reqs($group);
- next unless keys %$modlist;
+ next unless (
+ $info->{modreqs_fully_documented}
+ and
+ ( $info->{augments} or $info->{modreqs} )
+ );
+
+ my $p = $dbic_reqs->{$group}{pod};
push @chunks, (
"=head2 $p->{title}",
- "$p->{desc}",
+ "=head3 $group",
+ $p->{desc},
'=over',
- ( map { "=item * $_" . ($modlist->{$_} ? " >= $modlist->{$_}" : '') } (sort keys %$modlist) ),
- '=back',
- "Requirement group: B<$group>",
);
+
+ if ( keys %{ $info->{modreqs}||{} } ) {
+ push @chunks, map
+ { "=item * $_" . ($info->{modreqs}{$_} ? " >= $info->{modreqs}{$_}" : '') }
+ ( sort keys %{ $info->{modreqs} } )
+ ;
+ }
+ else {
+ push @chunks, '=item * No standalone requirements',
+ }
+
+ push @chunks, '=back';
+
+ for my $ag ( sort keys %{ $info->{augments} || {} } ) {
+ my $ag_info = $standalone_info->{$ag} ||= $class->_groups_to_reqs($ag);
+
+ my $newreqs = $class->modreq_list_for([ $group, $ag ]);
+ for (keys %$newreqs) {
+ delete $newreqs->{$_} if (
+ ( defined $info->{modreqs}{$_} and $info->{modreqs}{$_} == $newreqs->{$_} )
+ or
+ ( defined $ag_info->{modreqs}{$_} and $ag_info->{modreqs}{$_} == $newreqs->{$_} )
+ );
+ }
+
+ if (keys %$newreqs) {
+ push @chunks, (
+ "Combined with L</$ag> additionally requires:",
+ '=over',
+ ( map
+ { "=item * $_" . ($newreqs->{$_} ? " >= $newreqs->{$_}" : '') }
+ ( sort keys %$newreqs )
+ ),
+ '=back',
+ );
+ }
+ }
}
# Load them and empty the registry
# this loads the DT armada
- $has_dt = DBIx::Class::Optional::Dependencies->req_ok_for('test_dt_sqlite');
+ $has_dt = DBIx::Class::Optional::Dependencies->req_ok_for([qw( test_rdbms_sqlite icdt )]);
require Errno;
require DBI;
-use DBIx::Class::Optional::Dependencies -skip_all_without => 'test_dt_sqlite';
+use DBIx::Class::Optional::Dependencies -skip_all_without => qw( rdbms_sqlite icdt );
use strict;
use warnings;
-use DBIx::Class::Optional::Dependencies -skip_all_without => 'test_dt';
+use DBIx::Class::Optional::Dependencies -skip_all_without => qw( test_rdbms_sqlite icdt );
use strict;
use warnings;
-use DBIx::Class::Optional::Dependencies -skip_all_without => 'test_dt';
+use DBIx::Class::Optional::Dependencies -skip_all_without => qw( icdt _rdbms_firebird_common );
use strict;
use warnings;
DBICTEST_FIREBIRD_ODBC => 'test_rdbms_firebird_odbc',
};
-plan skip_all => join (' ',
- 'Set $ENV{DBICTEST_FIREBIRD_DSN} and/or $ENV{DBICTEST_FIREBIRD_INTERBASE_DSN}',
- 'and/or $ENV{DBICTEST_FIREBIRD_ODBC_DSN},',
- '_USER and _PASS to run these tests.',
-
- "WARNING: This test drops and creates a table called 'event'",
-) unless grep { $ENV{"${_}_DSN"} } keys %$env2optdep;
+my @tdeps = values %$env2optdep;
+plan skip_all => 'Test needs ' . (join ' OR ', map
+ { "[ @{[ DBIx::Class::Optional::Dependencies->req_missing_for( $_ ) ]} ]" }
+ @tdeps
+) unless scalar grep
+ { DBIx::Class::Optional::Dependencies->req_ok_for( $_ ) }
+ @tdeps
+;
my $schema;
-use DBIx::Class::Optional::Dependencies -skip_all_without => qw( test_dt test_rdbms_informix );
+use DBIx::Class::Optional::Dependencies -skip_all_without => qw( icdt test_rdbms_informix );
use strict;
use warnings;
+use DBIx::Class::Optional::Dependencies -skip_all_without => qw( icdt _rdbms_msaccess_common );
+
use strict;
use warnings;
use Test::More;
use Scope::Guard ();
use Try::Tiny;
-use DBIx::Class::Optional::Dependencies ();
use lib qw(t/lib);
use DBICTest;
+my @tdeps = qw( test_rdbms_msaccess_odbc test_rdbms_msaccess_ado );
+plan skip_all => 'Test needs ' . (join ' OR ', map
+ { "[ @{[ DBIx::Class::Optional::Dependencies->req_missing_for( $_ ) ]} ]" }
+ @tdeps
+) unless scalar grep
+ { DBIx::Class::Optional::Dependencies->req_ok_for( $_ ) }
+ @tdeps
+;
+
my ($dsn, $user, $pass) = @ENV{map { "DBICTEST_MSACCESS_ODBC_${_}" } qw/DSN USER PASS/};
my ($dsn2, $user2, $pass2) = @ENV{map { "DBICTEST_MSACCESS_ADO_${_}" } qw/DSN USER PASS/};
-plan skip_all => 'Test needs ' .
- (join ' and ', map { $_ ? $_ : () }
- DBIx::Class::Optional::Dependencies->req_missing_for('test_dt'),
- (join ' or ', map { $_ ? $_ : () }
- DBIx::Class::Optional::Dependencies->req_missing_for('test_rdbms_msaccess_odbc'),
- DBIx::Class::Optional::Dependencies->req_missing_for('test_rdbms_msaccess_ado')))
- unless
- DBIx::Class::Optional::Dependencies->req_ok_for ('test_dt') && (
- $dsn && DBIx::Class::Optional::Dependencies->req_ok_for('test_rdbms_msaccess_odbc')
- or
- $dsn2 && DBIx::Class::Optional::Dependencies->req_ok_for('test_rdbms_msaccess_ado'))
- or (not $dsn || $dsn2);
-
-plan skip_all => <<'EOF' unless $dsn || $dsn2;
-Set $ENV{DBICTEST_MSACCESS_ODBC_DSN} and/or $ENV{DBICTEST_MSACCESS_ADO_DSN} (and optionally _USER and _PASS) to run these tests.
-Warning: this test drops and creates the table 'track'.
-EOF
-
my @connect_info = (
[ $dsn, $user || '', $pass || '' ],
[ $dsn2, $user2 || '', $pass2 || '' ],
+use DBIx::Class::Optional::Dependencies -skip_all_without => qw( icdt _rdbms_mssql_common );
+
use strict;
use warnings;
use Test::Exception;
use Scope::Guard ();
use Try::Tiny;
-use DBIx::Class::Optional::Dependencies ();
use lib qw(t/lib);
use DBICTest;
+my @tdeps = qw( test_rdbms_mssql_odbc test_rdbms_mssql_sybase test_rdbms_mssql_ado );
+plan skip_all => 'Test needs ' . (join ' OR ', map
+ { "[ @{[ DBIx::Class::Optional::Dependencies->req_missing_for( $_ ) ]} ]" }
+ @tdeps
+) unless scalar grep
+ { DBIx::Class::Optional::Dependencies->req_ok_for( $_ ) }
+ @tdeps
+;
+
my ($dsn, $user, $pass) = @ENV{map { "DBICTEST_MSSQL_ODBC_${_}" } qw/DSN USER PASS/};
my ($dsn2, $user2, $pass2) = @ENV{map { "DBICTEST_MSSQL_${_}" } qw/DSN USER PASS/};
my ($dsn3, $user3, $pass3) = @ENV{map { "DBICTEST_MSSQL_ADO_${_}" } qw/DSN USER PASS/};
-plan skip_all => 'Test needs ' .
- (join ' and ', map { $_ ? $_ : () }
- DBIx::Class::Optional::Dependencies->req_missing_for('test_dt'),
- (join ' or ', map { $_ ? $_ : () }
- DBIx::Class::Optional::Dependencies->req_missing_for('test_rdbms_mssql_odbc'),
- DBIx::Class::Optional::Dependencies->req_missing_for('test_rdbms_mssql_sybase'),
- DBIx::Class::Optional::Dependencies->req_missing_for('test_rdbms_mssql_ado')))
- unless
- DBIx::Class::Optional::Dependencies->req_ok_for ('test_dt') && (
- $dsn && DBIx::Class::Optional::Dependencies->req_ok_for('test_rdbms_mssql_odbc')
- or
- $dsn2 && DBIx::Class::Optional::Dependencies->req_ok_for('test_rdbms_mssql_sybase')
- or
- $dsn3 && DBIx::Class::Optional::Dependencies->req_ok_for('test_rdbms_mssql_ado'))
- or (not $dsn || $dsn2 || $dsn3);
-
-if (not ($dsn || $dsn2 || $dsn3)) {
- plan skip_all =>
- 'Set $ENV{DBICTEST_MSSQL_ODBC_DSN} and/or $ENV{DBICTEST_MSSQL_DSN} and/or '
- .'$ENV{DBICTEST_MSSQL_ADO_DSN} _USER and _PASS to run this test' .
- "\nWarning: This test drops and creates tables called 'event_small_dt' and"
- ." 'track'.";
-}
-
DBICTest::Schema->load_classes('EventSmallDT');
my @connect_info = (
-use DBIx::Class::Optional::Dependencies -skip_all_without => 'test_rdbms_oracle';
+use DBIx::Class::Optional::Dependencies -skip_all_without => qw( icdt test_rdbms_oracle );
use strict;
use warnings;
+use DBIx::Class::Optional::Dependencies -skip_all_without => qw( icdt _rdbms_sqlanywhere_common );
+
use strict;
use warnings;
use Test::More;
use Scope::Guard ();
-use DBIx::Class::Optional::Dependencies ();
use lib qw(t/lib);
use DBICTest;
+my @tdeps = qw( test_rdbms_sqlanywhere test_rdbms_sqlanywhere_odbc );
+plan skip_all => 'Test needs ' . (join ' OR ', map
+ { "[ @{[ DBIx::Class::Optional::Dependencies->req_missing_for( $_ ) ]} ]" }
+ @tdeps
+) unless scalar grep
+ { DBIx::Class::Optional::Dependencies->req_ok_for( $_ ) }
+ @tdeps
+;
+
my ($dsn, $user, $pass) = @ENV{map { "DBICTEST_SQLANYWHERE_${_}" } qw/DSN USER PASS/};
my ($dsn2, $user2, $pass2) = @ENV{map { "DBICTEST_SQLANYWHERE_ODBC_${_}" } qw/DSN USER PASS/};
-plan skip_all => 'Test needs ' .
- (join ' and ', map { $_ ? $_ : () }
- DBIx::Class::Optional::Dependencies->req_missing_for('test_dt'),
- (join ' or ', map { $_ ? $_ : () }
- DBIx::Class::Optional::Dependencies->req_missing_for('test_rdbms_sqlanywhere'),
- DBIx::Class::Optional::Dependencies->req_missing_for('test_rdbms_sqlanywhere_odbc')))
- unless
- DBIx::Class::Optional::Dependencies->req_ok_for ('test_dt') && (
- $dsn && DBIx::Class::Optional::Dependencies->req_ok_for('test_rdbms_sqlanywhere')
- or
- $dsn2 && DBIx::Class::Optional::Dependencies->req_ok_for('test_rdbms_sqlanywhere_odbc'))
- or (not $dsn || $dsn2);
-
-if (not ($dsn || $dsn2)) {
- plan skip_all => <<'EOF';
-Set $ENV{DBICTEST_SQLANYWHERE_DSN} and/or $ENV{DBICTEST_SQLANYWHERE_ODBC_DSN}
-_USER and _PASS to run this test'.
-Warning: This test drops and creates a table called 'event'";
-EOF
-}
-
my @info = (
[ $dsn, $user, $pass ],
[ $dsn2, $user2, $pass2 ],
-use DBIx::Class::Optional::Dependencies -skip_all_without => 'test_dt_sqlite';
+use DBIx::Class::Optional::Dependencies -skip_all_without => qw( icdt test_rdbms_sqlite );
use strict;
use warnings;
-use DBIx::Class::Optional::Dependencies -skip_all_without => qw(test_dt test_rdbms_ase);
+use DBIx::Class::Optional::Dependencies -skip_all_without => qw( icdt test_rdbms_ase );
use strict;
use warnings;
-use DBIx::Class::Optional::Dependencies -skip_all_without => 'test_dt_mysql';
+use DBIx::Class::Optional::Dependencies -skip_all_without => qw( icdt icdt_mysql );
use strict;
use warnings;
-use DBIx::Class::Optional::Dependencies -skip_all_without => 'test_dt_pg';
+use DBIx::Class::Optional::Dependencies -skip_all_without => qw( icdt icdt_pg );
use strict;
use warnings;
'Nothing loaded other than DBIx::Class::OptDeps',
) unless $ENV{RELEASE_TESTING};
-
# check the project-local groups for sanity
lives_ok {
DBIx::Class::Optional::Dependencies->req_group_list
local $ENV{DBICTEST_MYSQL_DSN};
local $ENV{DBICTEST_PG_DSN};
+# regular
is_deeply(
DBIx::Class::Optional::Dependencies->modreq_list_for('test_rdbms_pg'),
{ '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 )];
+
+ is_deeply(
+ DBIx::Class::Optional::Dependencies->modreq_list_for($mysql_icdt),
+ {
+ 'DateTime' => '0.55',
+ 'DBD::mysql' => 0,
+ 'DateTime::Format::MySQL' => 0,
+ },
+ 'optional module dependencies list for testing ICDT MySQL without envvar',
+ );
+
+ is_deeply(
+ DBIx::Class::Optional::Dependencies->req_list_for($mysql_icdt),
+ {
+ 'DateTime' => '0.55',
+ },
+ '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',
+ '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 = [ shuffle qw( test_rdbms_msaccess_odbc test_rdbms_mssql_odbc ) ];
+ my $msaccess_mssql_icdt = [ shuffle qw( test_rdbms_msaccess_odbc test_rdbms_mssql_odbc icdt ) ];
is_deeply(
- DBIx::Class::Optional::Dependencies->req_missing_for($msaccess_mssql),
- 'Data::GUID DBD::ODBC as well as the following group(s) of environment variables: DBICTEST_MSACCESS_ODBC_DSN/..._USER/..._PASS',
+ 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',
'Correct req_missing_for on multi-level converging include',
);
is_deeply(
- DBIx::Class::Optional::Dependencies->modreq_missing_for($msaccess_mssql),
- 'Data::GUID DBD::ODBC',
+ DBIx::Class::Optional::Dependencies->modreq_missing_for($msaccess_mssql_icdt),
+ 'Data::GUID "DateTime~>=0.55" "DateTime::Format::Strptime~>=1.2" DBD::ODBC',
'Correct modreq_missing_for on multi-level converging include',
);
is_deeply(
- DBIx::Class::Optional::Dependencies->req_list_for($msaccess_mssql),
+ DBIx::Class::Optional::Dependencies->req_list_for($msaccess_mssql_icdt),
{
'DBD::ODBC' => 0,
+ 'DateTime' => '0.55',
+ 'DateTime::Format::Strptime' => '1.2',
},
'Correct req_list_for on multi-level converging include',
);
is_deeply(
- DBIx::Class::Optional::Dependencies->modreq_list_for($msaccess_mssql),
+ DBIx::Class::Optional::Dependencies->modreq_list_for($msaccess_mssql_icdt),
{
'DBD::ODBC' => 0,
'Data::GUID' => 0,
+ 'DateTime' => '0.55',
+ 'DateTime::Format::Strptime' => '1.2',
},
'Correct modreq_list_for on multi-level converging include',
);