+BEGIN { do "./t/lib/ANFANG.pm" or die ( $@ || $! ) }
+
use strict;
use warnings;
use Test::More;
use Test::Exception;
use DBIx::Class::Optional::Dependencies ();
-use Scope::Guard ();
+use DBIx::Class::_Util 'scope_guard';
+use List::Util 'shuffle';
use Try::Tiny;
-use lib qw(t/lib);
+
use DBICTest;
my $env2optdep = {
'and "nonpkid_seq" and the trigger "artist_bi".',
) unless grep { $ENV{"${_}_DSN"} } keys %$env2optdep;
-# tests stolen from 749sybase_asa.t
-
# Example DSNs:
# dbi:Firebird:db=/var/lib/firebird/2.5/data/hlaghdb.fdb
# dbi:InterBase:db=/var/lib/firebird/2.5/data/hlaghdb.fdb
my $schema;
-for my $prefix (keys %$env2optdep) { SKIP: {
-
- my ($dsn, $user, $pass) = map { $ENV{"${prefix}_$_"} } qw/DSN USER PASS/;
+for my $prefix (shuffle keys %$env2optdep) { SKIP: {
- next unless $dsn;
+ DBIx::Class::Optional::Dependencies->skip_without( $env2optdep->{$prefix} );
- skip ("Testing with ${prefix}_DSN needs " . DBIx::Class::Optional::Dependencies->req_missing_for( $env2optdep->{$prefix} ), 1)
- unless DBIx::Class::Optional::Dependencies->req_ok_for($env2optdep->{$prefix});
+ my ($dsn, $user, $pass) = map { $ENV{"${prefix}_$_"} } qw/DSN USER PASS/;
+ note "Testing with ${prefix}_DSN";
$schema = DBICTest::Schema->connect($dsn, $user, $pass, {
auto_savepoint => 1,
});
my $dbh = $schema->storage->dbh;
- my $sg = Scope::Guard->new(sub { cleanup($schema) });
+ my $sg = scope_guard { cleanup($schema) };
eval { $dbh->do(q[DROP TABLE "artist"]) };
$dbh->do(<<EOF);
# test savepoints
throws_ok {
$schema->txn_do(sub {
+ my ($schema, $ars) = @_;
eval {
$schema->txn_do(sub {
$ars->create({ name => 'in_savepoint' });
'savepoint rolled back');
$ars->create({ name => 'in_outer_txn' });
die "rolling back outer txn";
- });
+ }, $schema, $ars);
} qr/rolling back outer txn/,
'correct exception for rollback';
} 'inferring generator from trigger source works';
}
+ # at this point there should be no active statements
+ # (finish() was called everywhere, either explicitly via
+ # reset() or on DESTROY)
+ for (keys %{$schema->storage->dbh->{CachedKids}}) {
+ fail("Unreachable cached statement still active: $_")
+ if $schema->storage->dbh->{CachedKids}{$_}->FETCH('Active');
+ }
+
# test blobs (stolen from 73oracle.t)
eval { $dbh->do('DROP TABLE "bindtype_test"') };
$dbh->do(q[