X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F74mssql.t;h=2ec7fa5fed223459c8a5094b686c6e581fbccca5;hb=5e51f71578bd97f5a9b2237cf5e84b899ad3f7bb;hp=57d7c6938298c18d99f0d465a3ebe3bae923db9f;hpb=c1e5a9ac6c284bd48bdef09379ff544ec7fb9629;p=dbsrgits%2FDBIx-Class.git diff --git a/t/74mssql.t b/t/74mssql.t index 57d7c69..2ec7fa5 100644 --- a/t/74mssql.t +++ b/t/74mssql.t @@ -10,6 +10,8 @@ BEGIN { use Test::More; use Test::Exception; +use Scalar::Util 'weaken'; +use DBIx::Class::Optional::Dependencies (); use lib qw(t/lib); use DBICTest; @@ -18,6 +20,10 @@ my ($dsn, $user, $pass) = @ENV{map { "DBICTEST_MSSQL_${_}" } qw/DSN USER PASS/}; plan skip_all => 'Set $ENV{DBICTEST_MSSQL_DSN}, _USER and _PASS to run this test' unless ($dsn); + +plan skip_all => 'Test needs ' . DBIx::Class::Optional::Dependencies->req_missing_for ('test_rdbms_mssql_sybase') + unless DBIx::Class::Optional::Dependencies->req_ok_for ('test_rdbms_mssql_sybase'); + { my $srv_ver = DBICTest::Schema->connect($dsn, $user, $pass)->storage->_server_info->{dbms_version}; ok ($srv_ver, 'Got a test server version on fresh schema: ' . ($srv_ver||'???') ); @@ -118,7 +124,8 @@ for my $storage_type (@test_storages) { SQL }); - my $rs = $schema->resultset('Money'); + my $rs = $schema->resultset('Money'); + weaken(my $rs_cp = $rs); # nested closure refcounting is an utter mess in perl my $row; lives_ok { @@ -146,7 +153,7 @@ SQL # test simple transaction with commit lives_ok { $schema->txn_do(sub { - $rs->create({ amount => 300 }); + $rs_cp->create({ amount => 300 }); }); } 'simple transaction'; @@ -158,7 +165,7 @@ SQL # test rollback throws_ok { $schema->txn_do(sub { - $rs->create({ amount => 700 }); + $rs_cp->create({ amount => 700 }); die 'mtfnpy'; }); } qr/mtfnpy/, 'simple failed txn'; @@ -207,9 +214,10 @@ SQL # a reconnect should trigger on next action $schema->storage->_get_dbh->disconnect; + lives_and { $wrappers->{$wrapper}->( sub { - $rs->create({ amount => 900 + $_ }) for 1..3; + $rs_cp->create({ amount => 900 + $_ }) for 1..3; }); is $rs->count, 3; } "transaction on disconnected handle with $wrapper wrapper"; @@ -240,12 +248,13 @@ SQL my $map = [ ['Artist 1', '1002.00'], ['Artist 2', '1003.00'] ]; + weaken(my $a_rs_cp = $artist_rs); + lives_and { my @results; - $wrappers->{$wrapper}->( sub { - while (my $money = $rs->next) { - my $artist = $artist_rs->next; + while (my $money = $rs_cp->next) { + my $artist = $a_rs_cp->next; push @results, [ $artist->name, $money->amount ]; }; }); @@ -327,4 +336,6 @@ END { $dbh->do("IF OBJECT_ID('cd', 'U') IS NOT NULL DROP TABLE cd"); $dbh->do("IF OBJECT_ID('money_test', 'U') IS NOT NULL DROP TABLE money_test"); } + + undef $schema; }