X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F72pg.t;h=f8399377bd07e9b4180e7c09bd5721cb782d939a;hb=2fbf50ff3db12c7ea5612a8785fc3504d48dcb2c;hp=e63319892d59501652e4011d3b2aabeff9b124da;hpb=70a201a523e01dee61af2eeee345c3c38aac97aa;p=dbsrgits%2FDBIx-Class.git diff --git a/t/72pg.t b/t/72pg.t index e633198..f839937 100644 --- a/t/72pg.t +++ b/t/72pg.t @@ -53,13 +53,15 @@ DBICTest::Schema->load_classes( map {s/.+:://;$_} @test_classes ) if @test_class my $schema = DBICTest::Schema->connect($dsn, $user, $pass); my $dbh = $schema->storage->dbh; -drop_test_schema($dbh, 'no warn'); -create_test_schema($dbh); +drop_test_schema($schema, 'no warn'); +create_test_schema($schema); ### begin main tests ### auto-pk / last_insert_id / sequence discovery { + local $SIG{__WARN__} = sub {}; + _cleanup ($schema); $schema->source("Artist")->name("testschema.artist"); @@ -366,21 +368,22 @@ for (1..5) { my $st = $schema->resultset('SequenceTest')->create({ name => 'foo', pkid1 => 55 }); is($st->pkid1, 55, "Oracle Auto-PK without trigger: First primary key set manually"); -drop_test_schema($dbh); done_testing; exit; -END { drop_test_schema($dbh) } +END { drop_test_schema($schema) } ######### SUBROUTINES sub create_test_schema { - my $dbh = shift; + my $schema = shift; + $schema->storage->dbh_do(sub { + my (undef,$dbh) = @_; - local $SIG{__WARN__} = sub {}; + local $dbh->{Warn} = 0; - my $std_artist_table = <do("CREATE SCHEMA testschema"); - $dbh->do("CREATE TABLE testschema.artist $std_artist_table"); - $dbh->do(<do("CREATE SCHEMA testschema"); + $dbh->do("CREATE TABLE testschema.artist $std_artist_table"); + $dbh->do(<do("CREATE SEQUENCE pkid1_seq START 1 MAXVALUE 999999 MINVALUE 0"); - $dbh->do("CREATE SEQUENCE pkid2_seq START 10 MAXVALUE 999999 MINVALUE 0"); - $dbh->do("CREATE SEQUENCE nonpkid_seq START 20 MAXVALUE 999999 MINVALUE 0"); - $dbh->do(<do("CREATE SEQUENCE pkid1_seq START 1 MAXVALUE 999999 MINVALUE 0"); + $dbh->do("CREATE SEQUENCE pkid2_seq START 10 MAXVALUE 999999 MINVALUE 0"); + $dbh->do("CREATE SEQUENCE nonpkid_seq START 20 MAXVALUE 999999 MINVALUE 0"); + $dbh->do(<do(<do(<do("CREATE SCHEMA anothertestschema"); - $dbh->do("CREATE TABLE anothertestschema.artist $std_artist_table"); - $dbh->do("CREATE SCHEMA yetanothertestschema"); - $dbh->do("CREATE TABLE yetanothertestschema.artist $std_artist_table"); - $dbh->do('set search_path=testschema,public'); - $dbh->do("CREATE SCHEMA unq_nextval_schema"); - $dbh->do("CREATE SCHEMA unq_nextval_schema2"); - $dbh->do(<do("CREATE SCHEMA anothertestschema"); + $dbh->do("CREATE TABLE anothertestschema.artist $std_artist_table"); + $dbh->do("CREATE SCHEMA yetanothertestschema"); + $dbh->do("CREATE TABLE yetanothertestschema.artist $std_artist_table"); + $dbh->do('set search_path=testschema,public'); + $dbh->do("CREATE SCHEMA unq_nextval_schema"); + $dbh->do("CREATE SCHEMA unq_nextval_schema2"); + $dbh->do(<do('set search_path=public,testschema,yetanothertestschema'); - $dbh->do('create sequence public.artist_artistid_seq'); #< in the public schema - $dbh->do(<do('set search_path=public,testschema,yetanothertestschema'); + $dbh->do('create sequence public.artist_artistid_seq'); #< in the public schema + $dbh->do(<do('set search_path=testschema,public'); + $dbh->do('set search_path=testschema,public'); + }); } sub drop_test_schema { - my ( $dbh, $no_warn ) = @_; - - return unless $dbh->ping; - - for my $stat ( - 'DROP TABLE unq_nextval_schema2.artist', - 'DROP SCHEMA unq_nextval_schema2', - 'DROP SEQUENCE public.artist_artistid_seq', - 'DROP TABLE unq_nextval_schema.artist', - 'DROP SCHEMA unq_nextval_schema', - 'DROP TABLE testschema.artist', - 'DROP TABLE testschema.casecheck', - 'DROP TABLE testschema.sequence_test', - 'DROP TABLE testschema.array_test', - 'DROP SEQUENCE pkid1_seq', - 'DROP SEQUENCE pkid2_seq', - 'DROP SEQUENCE nonpkid_seq', - 'DROP SCHEMA testschema', - 'DROP TABLE anothertestschema.artist', - 'DROP SCHEMA anothertestschema', - 'DROP TABLE yetanothertestschema.artist', - 'DROP SCHEMA yetanothertestschema', - ) { - eval { $dbh->do ($stat) }; - diag $@ if $@ && !$no_warn; - } + my ( $schema, $no_warn ) = @_; + + $schema->storage->dbh_do(sub { + my (undef,$dbh) = @_; + + local $dbh->{Warn} = 0; + + for my $stat ( + 'DROP SCHEMA unq_nextval_schema2 CASCADE', + 'DROP SEQUENCE public.artist_artistid_seq', + 'DROP SCHEMA unq_nextval_schema CASCADE', + 'DROP SCHEMA testschema CASCADE', + 'DROP SEQUENCE pkid1_seq', + 'DROP SEQUENCE pkid2_seq', + 'DROP SEQUENCE nonpkid_seq', + 'DROP SCHEMA anothertestschema CASCADE', + 'DROP SCHEMA yetanothertestschema CASCADE', + ) { + eval { $dbh->do ($stat) }; + diag $@ if $@ && !$no_warn; + } + }); } +done_testing;