X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F10_11msaccess_common.t;h=6736d9d728cfa16ea27d6fb27f218b755e034805;hb=a6331db282870a45464ce129b76b3d5ae99e1b71;hp=bca092467e97cc92be21985afce62c43b9dbbd65;hpb=3568bda98bc24d41e7f5a253a56b258c9aae86fc;p=dbsrgits%2FDBIx-Class-Schema-Loader.git diff --git a/t/10_11msaccess_common.t b/t/10_11msaccess_common.t index bca0924..6736d9d 100644 --- a/t/10_11msaccess_common.t +++ b/t/10_11msaccess_common.t @@ -1,18 +1,29 @@ use strict; use warnings; use Test::More; +use DBIx::Class::Optional::Dependencies; use DBIx::Class::Schema::Loader::DBI::ODBC::ACCESS (); -use Win32::OLE (); use lib qw(t/lib); use dbixcsl_common_tests; -my $odbc_dsn = $ENV{DBICTEST_MSACCESS_ODBC_DSN} || ''; -my $odbc_user = $ENV{DBICTEST_MSACCESS_ODBC_USER} || ''; -my $odbc_password = $ENV{DBICTEST_MSACCESS_ODBC_PASS} || ''; +my %dsns; +for (qw(MSACCESS_ODBC MSACCESS_ADO)) { + next unless $ENV{"DBICTEST_${_}_DSN"}; -my $ado_dsn = $ENV{DBICTEST_MSACCESS_ADO_DSN} || ''; -my $ado_user = $ENV{DBICTEST_MSACCESS_ADO_USER} || ''; -my $ado_password = $ENV{DBICTEST_MSACCESS_ADO_PASS} || ''; + my $dep_group = lc "rdbms_$_"; + if (!DBIx::Class::Optional::Dependencies->req_ok_for($dep_group)) { + diag 'You need to install ' . DBIx::Class::Optional::Dependencies->req_missing_for($dep_group) + . " to test with $_"; + next; + } + + $dsns{$_}{dsn} = $ENV{"DBICTEST_${_}_DSN"}; + $dsns{$_}{user} = $ENV{"DBICTEST_${_}_USER"}; + $dsns{$_}{password} = $ENV{"DBICTEST_${_}_PASS"}; +}; + +plan skip_all => 'You need to set the DBICTEST_MSACCESS_ODBC_DSN, _USER and _PASS and/or the DBICTEST_MSACCESS_ADO_DSN, _USER and _PASS environment variables' + unless %dsns; my %ado_extra_types = ( 'tinyint' => { data_type => 'tinyint', original => { data_type => 'byte' } }, @@ -39,17 +50,7 @@ my $tester = dbixcsl_common_tests->new( vendor => 'Access', auto_inc_pk => 'AUTOINCREMENT PRIMARY KEY', quote_char => [qw/[ ]/], - connect_info => [ ($odbc_dsn ? { - dsn => $odbc_dsn, - user => $odbc_user, - password => $odbc_password, - } : ()), - ($ado_dsn ? { - dsn => $ado_dsn, - user => $ado_user, - password => $ado_password, - } : ()), - ], + connect_info => [ map { $dsns{$_} } sort keys %dsns ], data_types => { # http://msdn.microsoft.com/en-us/library/bb208866(v=office.12).aspx # @@ -115,8 +116,7 @@ my $tester = dbixcsl_common_tests->new( package DBIXCSL_Test::DummySchema; use base 'DBIx::Class::Schema'; } - my @connect_info = $odbc_dsn ? ($odbc_dsn, $odbc_user, $odbc_password) - : ($ado_dsn, $ado_user, $ado_password); + my @connect_info = @{$dsns{MSACCESS_ODBC} || $dsns{MSACCESS_ADO}}; my $schema = DBIXCSL_Test::DummySchema->connect(@connect_info); @@ -127,6 +127,7 @@ my $tester = dbixcsl_common_tests->new( my $conn = $loader->_ado_connection; + require Win32::OLE; my $comm = Win32::OLE->new('ADODB.Command'); $comm->{ActiveConnection} = $conn; @@ -135,11 +136,6 @@ my $tester = dbixcsl_common_tests->new( }, ); -if (not ($odbc_dsn || $ado_dsn)) { - $tester->skip_tests('You need to set the DBICTEST_MSACCESS_ODBC_DSN, and optionally _USER and _PASS and/or the DBICTEST_MSACCESS_ADO_DSN, and optionally _USER and _PASS environment variables'); -} -else { - $tester->run_tests(); -} +$tester->run_tests(); # vim:et sts=4 sw=4 tw=0: