X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F72pg.t;h=6c2545f3d9119903817ecb930d6114427e53e177;hb=514b84f6b60b566d75d2ff2ddd08659c4cf7b427;hp=e03cd2be1d039916f9ac5bc6c25feaa45a95de91;hpb=a2c77c97735124a7bf4073cf5cef5480bec752a8;p=dbsrgits%2FDBIx-Class.git diff --git a/t/72pg.t b/t/72pg.t index e03cd2b..6c2545f 100644 --- a/t/72pg.t +++ b/t/72pg.t @@ -1,3 +1,4 @@ +BEGIN { do "./t/lib/ANFANG.pm" or die ( $@ || $! ) } use DBIx::Class::Optional::Dependencies -skip_all_without => 'test_rdbms_pg'; use strict; @@ -5,13 +6,11 @@ use warnings; use Test::More; use Test::Exception; -use Sub::Name; +use Test::Warn; use Config; -use DBIx::Class::Optional::Dependencies (); -use lib qw(t/lib); use DBICTest; use SQL::Abstract 'is_literal_value'; -use DBIx::Class::_Util 'is_exception'; +use DBIx::Class::_Util qw( is_exception set_subname ); my ($dsn, $user, $pass) = @ENV{map { "DBICTEST_PG_${_}" } qw/DSN USER PASS/}; @@ -82,7 +81,7 @@ for my $use_insert_returning ($test_server_supports_insert_returning no warnings qw/once redefine/; my $old_connection = DBICTest::Schema->can('connection'); - local *DBICTest::Schema::connection = subname 'DBICTest::Schema::connection' => sub { + local *DBICTest::Schema::connection = set_subname 'DBICTest::Schema::connection' => sub { my $s = shift->$old_connection(@_); $s->storage->_use_insert_returning ($use_insert_returning); $s; @@ -485,7 +484,24 @@ lives_ok { $cds->update({ year => '2010' }) } 'Update on prefetched rs'; $schema->resultset('Track')->create({ trackid => 1, cd => 9999, position => 1, title => 'Track1' }); - } qr/constraint/i, 'with_deferred_fk_checks is off'; + } qr/violates foreign key constraint/i, 'with_deferred_fk_checks is off outside of TXN'; + + # rerun the same under with_deferred_fk_checks + # it is expected to fail, hence the eval + # but it also should not warn + warnings_like { + eval { + $schema->storage->with_deferred_fk_checks(sub { + $schema->resultset('Track')->create({ + trackid => 1, cd => 9999, position => 1, title => 'Track1' + }); + } ) + }; + + like $@, qr/violates foreign key constraint/i, + "Still expected exception on deferred failure at commit time"; + + } [], 'No warnings on deferred rollback'; } done_testing;