X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F749sybase_asa.t;h=5656b4c74fc5a8a283ea791f22167157f01629b6;hb=d146b340450aaf82f53b6e781606139c51d79f84;hp=c4f8d6c54114fd1c4588d1290b523bf88b064477;hpb=cf7b66549af1fcd500a2741e5795626b0d809317;p=dbsrgits%2FDBIx-Class.git diff --git a/t/749sybase_asa.t b/t/749sybase_asa.t index c4f8d6c..5656b4c 100644 --- a/t/749sybase_asa.t +++ b/t/749sybase_asa.t @@ -11,7 +11,7 @@ use DBICTest; my ($dsn, $user, $pass) = @ENV{map { "DBICTEST_SYBASE_ASA_${_}" } qw/DSN USER PASS/}; my ($dsn2, $user2, $pass2) = @ENV{map { "DBICTEST_SYBASE_ASA_ODBC_${_}" } qw/DSN USER PASS/}; -plan skip_all => <<"EOF" unless $dsn || $dsn2; +plan skip_all => <<'EOF' unless $dsn || $dsn2; Set $ENV{DBICTEST_SYBASE_ASA_DSN} and/or $ENV{DBICTEST_SYBASE_ASA_ODBC_DSN}, _USER and _PASS to run these tests EOF @@ -28,7 +28,9 @@ foreach my $info (@info) { next unless $dsn; - my $schema = DBICTest::Schema->connect($dsn, $user, $pass); + my $schema = DBICTest::Schema->connect($dsn, $user, $pass, { + auto_savepoint => 1 + }); my $dbh = $schema->storage->dbh; @@ -58,6 +60,28 @@ EOF $new->discard_changes; is($new->artistid, 66, 'Explicit PK assigned'); +# test savepoints + eval { + $schema->txn_do(sub { + eval { + $schema->txn_do(sub { + $ars->create({ name => 'in_savepoint' }); + die "rolling back savepoint"; + }); + }; + ok ((not $ars->search({ name => 'in_savepoint' })->first), + 'savepoint rolled back'); + $ars->create({ name => 'in_outer_txn' }); + die "rolling back outer txn"; + }); + }; + + like $@, qr/rolling back outer txn/, + 'correct exception for rollback'; + + ok ((not $ars->search({ name => 'in_outer_txn' })->first), + 'outer txn rolled back'); + # test populate lives_ok (sub { my @pop;