X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F10_06sybase_common.t;h=de2ec390677152adc65f21e2640c55747a700fbc;hb=4fb2971cd5784d8bc64f98052e691db9df697516;hp=f5f786829ca8061dc46067f2322e8eee384d4ae6;hpb=5975bbe67547badcbf19b1eded170ca6beea301b;p=dbsrgits%2FDBIx-Class-Schema-Loader.git diff --git a/t/10_06sybase_common.t b/t/10_06sybase_common.t index f5f7868..de2ec39 100644 --- a/t/10_06sybase_common.t +++ b/t/10_06sybase_common.t @@ -4,7 +4,9 @@ use Test::More; use Test::Exception; use Try::Tiny; use File::Path 'rmtree'; +use DBIx::Class::Optional::Dependencies; use DBIx::Class::Schema::Loader 'make_schema_at'; +use DBIx::Class::Schema::Loader::Utils qw/sigwarn_silencer/; use namespace::clean; use DBI (); @@ -19,6 +21,8 @@ my $dsn = $ENV{DBICTEST_SYBASE_DSN} || ''; my $user = $ENV{DBICTEST_SYBASE_USER} || ''; my $password = $ENV{DBICTEST_SYBASE_PASS} || ''; +BEGIN { $ENV{DBIC_SYBASE_FREETDS_NOWARN} = 1 } + my ($schema, $databases_created); # for cleanup in END for extra tests my $tester = dbixcsl_common_tests->new( @@ -129,11 +133,9 @@ my $tester = dbixcsl_common_tests->new( }; try { - my $warn_handler = $SIG{__WARN__} || sub { warn @_ }; - local $SIG{__WARN__} = sub { - $warn_handler->(@_) - unless $_[0] =~ /^Password correctly set\.$|^Account unlocked\.$|^New login created\.$|^New user added\.$/; - }; + local $SIG{__WARN__} = sigwarn_silencer( + qr/^Password correctly set\.$|^Account unlocked\.$|^New login created\.$|^New user added\.$/ + ); $dbh->do("sp_addlogin dbicsl_user1, dbicsl, [dbicsl_test1]"); $dbh->do("sp_addlogin dbicsl_user2, dbicsl, [dbicsl_test2]"); @@ -156,11 +158,9 @@ my $tester = dbixcsl_common_tests->new( my ($dbh1, $dbh2); { - my $warn_handler = $SIG{__WARN__} || sub { warn @_ }; - local $SIG{__WARN__} = sub { - $warn_handler->(@_) unless $_[0] =~ /can't change context/; - }; - + local $SIG{__WARN__} = sigwarn_silencer( + qr/can't change context/ + ); $dbh1 = DBI->connect($dsn, 'dbicsl_user1', 'dbicsl', { RaiseError => 1, PrintError => 0, @@ -253,13 +253,14 @@ EOF { naming => 'current', db_schema => $db_schema, - moniker_parts => [qw/database name/], dump_directory => EXTRA_DUMP_DIR, quiet => 1, }, [ $dsn, $user, $password ], ); + SybaseMultiSchema->storage->disconnect; + diag join "\n", @warns if @warns; is @warns, 0; @@ -272,7 +273,7 @@ EOF } 'connected test schema'; lives_and { - ok $rsrc = $test_schema->source('DbicslTest1SybaseLoaderTest4'); + ok $rsrc = $test_schema->source('SybaseLoaderTest4'); } 'got source for table in database one'; is try { $rsrc->column_info('id')->{is_auto_increment} }, 1, @@ -285,7 +286,7 @@ EOF 'column in database one'; lives_and { - ok $rs = $test_schema->resultset('DbicslTest1SybaseLoaderTest4'); + ok $rs = $test_schema->resultset('SybaseLoaderTest4'); } 'got resultset for table in database one'; lives_and { @@ -319,7 +320,7 @@ EOF 'correct unique constraint in database one'); lives_and { - ok $rsrc = $test_schema->source('DbicslTest2SybaseLoaderTest6'); + ok $rsrc = $test_schema->source('SybaseLoaderTest6'); } 'got source for table in database two'; is try { $rsrc->column_info('id')->{is_auto_increment} }, 1, @@ -332,7 +333,7 @@ EOF 'column in database two introspected correctly'; lives_and { - ok $rs = $test_schema->resultset('DbicslTest2SybaseLoaderTest6'); + ok $rs = $test_schema->resultset('SybaseLoaderTest6'); } 'got resultset for table in database two'; lives_and { @@ -352,7 +353,7 @@ EOF 'relationship in database two'; lives_and { - ok $rsrc = $test_schema->source('DbicslTest2SybaseLoaderTest7'); + ok $rsrc = $test_schema->source('SybaseLoaderTest7'); } 'got source for table in database two'; %uniqs = try { $rsrc->unique_constraints }; @@ -366,22 +367,22 @@ EOF 'correct unique constraint in database two'); lives_and { - ok $test_schema->source('DbicslTest2SybaseLoaderTest6') + ok $test_schema->source('SybaseLoaderTest6') ->has_relationship('sybase_loader_test4'); } 'cross-database relationship in multi database schema'; lives_and { - ok $test_schema->source('DbicslTest1SybaseLoaderTest4') + ok $test_schema->source('SybaseLoaderTest4') ->has_relationship('sybase_loader_test6s'); } 'cross-database relationship in multi database schema'; lives_and { - ok $test_schema->source('DbicslTest1SybaseLoaderTest8') + ok $test_schema->source('SybaseLoaderTest8') ->has_relationship('sybase_loader_test7'); } 'cross-database relationship in multi database schema'; lives_and { - ok $test_schema->source('DbicslTest2SybaseLoaderTest7') + ok $test_schema->source('SybaseLoaderTest7') ->has_relationship('sybase_loader_test8s'); } 'cross-database relationship in multi database schema'; } @@ -394,6 +395,9 @@ EOF if( !$dsn || !$user ) { $tester->skip_tests('You need to set the DBICTEST_SYBASE_DSN, _USER, and _PASS environment variables'); } +elsif (!DBIx::Class::Optional::Dependencies->req_ok_for ('rdbms_ase')) { + $tester->skip_tests('You need to install ' . DBIx::Class::Optional::Dependencies->req_missing_for ('rdbms_ase')); +} else { $tester->run_tests(); } @@ -443,11 +447,9 @@ END { foreach my $login (qw/dbicsl_user1 dbicsl_user2/) { try { - my $warn_handler = $SIG{__WARN__} || sub { warn @_ }; - local $SIG{__WARN__} = sub { - $warn_handler->(@_) - unless $_[0] =~ /^Account locked\.$|^Login dropped\.$/; - }; + local $SIG{__WARN__} = sigwarn_silencer( + qr/^Account locked\.$|^Login dropped\.$/ + ); $dbh->do("sp_droplogin $login"); }