X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F10_11msaccess_common.t;h=6736d9d728cfa16ea27d6fb27f218b755e034805;hb=46e71a1b3527936e885facc87a97c586d25ecc67;hp=49e3483794e863932a1e1e1634c0409d389463d1;hpb=3b17d9885e593f0705e1e16360b816778d71ec95;p=dbsrgits%2FDBIx-Class-Schema-Loader.git diff --git a/t/10_11msaccess_common.t b/t/10_11msaccess_common.t index 49e3483..6736d9d 100644 --- a/t/10_11msaccess_common.t +++ b/t/10_11msaccess_common.t @@ -1,16 +1,29 @@ use strict; use warnings; use Test::More; +use DBIx::Class::Optional::Dependencies; +use DBIx::Class::Schema::Loader::DBI::ODBC::ACCESS (); 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' } }, @@ -37,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 # @@ -105,15 +108,34 @@ my $tester = dbixcsl_common_tests->new( 'image' => { data_type => 'image', original => { data_type => 'longbinary' } }, 'longbinary' => { data_type => 'image', original => { data_type => 'longbinary' } }, - ($ado_dsn && (not $odbc_dsn) ? %ado_extra_types : ()) + %ado_extra_types, + }, + data_types_ddl_cb => sub { + my $ddl = shift; + { + package DBIXCSL_Test::DummySchema; + use base 'DBIx::Class::Schema'; + } + my @connect_info = @{$dsns{MSACCESS_ODBC} || $dsns{MSACCESS_ADO}}; + + my $schema = DBIXCSL_Test::DummySchema->connect(@connect_info); + + my $loader = DBIx::Class::Schema::Loader::DBI::ODBC::ACCESS->new( + schema => $schema, + naming => 'current', + ); + + my $conn = $loader->_ado_connection; + + require Win32::OLE; + my $comm = Win32::OLE->new('ADODB.Command'); + + $comm->{ActiveConnection} = $conn; + $comm->{CommandText} = $ddl; + $comm->Execute; }, ); -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: