DBIO-SQLite
view release on metacpan or search on metacpan
t/52leaks.t view on Meta::CPAN
};
*CORE::GLOBAL::bless = sub { goto $bless_override };
}
use strict;
use warnings;
use Test::More;
use DBIO::Test;
use DBIO::Test::Util::LeakTracer qw(populate_weakregistry assert_empty_weakregistry visit_refs);
use Scalar::Util qw(weaken blessed reftype);
use DBIO::Util qw(hrefaddr peepeeness sigwarn_silencer modver_gt_or_eq modver_gt_or_eq_and_lt);
BEGIN {
plan skip_all => "Your perl version $] appears to leak like a sieve - skipping test"
if peepeeness;
}
my $TB = Test::More->builder;
if ($ENV{DBIO_TEST_IN_PERSISTENT_ENV}) {
# without this explicit close TB warns in END after a ->reset
t/52leaks.t view on Meta::CPAN
if ( modver_gt_or_eq( 'Test::More', '1.200' ) ) {
open ($TB->$_, '>&', *STDERR)
for qw( failure_output todo_output );
open ($TB->output, '>&', *STDOUT);
}
# so done_testing can work on every persistent pass
$TB->reset;
}
# this is what holds all weakened refs to be checked for leakage
my $weak_registry = {};
# whether or to invoke IC::DT
my $has_dt;
# Skip the heavy-duty leak tracing when just doing an install
unless (DBIO::Test->is_plain) {
# redefine the bless override so that we can catch each and every object created
no warnings qw/redefine once/;
t/52leaks.t view on Meta::CPAN
or push @circreffed, $r;
}
if (@circreffed) {
is (scalar @circreffed, 1, 'One resultset expected to leak');
# this is useless on its own, it is to showcase the circref-diag
# and eventually test it when it is operational
local $TODO = 'Needs Data::Entangled or somesuch - see RT#82942';
while (@circreffed) {
weaken (my $r = shift @circreffed);
populate_weakregistry( (my $mini_registry = {}), $r );
assert_empty_weakregistry( $mini_registry );
$r->result_source(undef);
}
}
}
assert_empty_weakregistry ($weak_registry);
t/99dbic_sqlt_parser.t view on Meta::CPAN
package
)) {
warnings_exist {
push @schemas, create_schema({
args => { parser_args => { $parser_args_key => $s } }
});
} qr/\Qparser_args => {\E.+?is deprecated.+\Q@{[__FILE__]}/,
"deprecated crazy parser_arg '$parser_args_key' warned";
}
Scalar::Util::weaken ($s);
ok (!$s, 'Schema not leaked');
isa_ok ($_, 'SQL::Translator::Schema', "SQLT schema object $_ produced")
for @schemas;
}
# make sure classname-style works
lives_ok { isa_ok (create_schema ({ schema => 'DBIO::Test::Schema' }), 'SQL::Translator::Schema', 'SQLT schema object produced') };
t/storage/savepoints.t view on Meta::CPAN
use strict;
use warnings;
use Test::More;
use Test::Exception;
use DBIO::Optional::Dependencies;
use DBIO::Util qw(sigwarn_silencer scope_guard);
use Scalar::Util 'weaken';
use DBIO::SQLite::Test;
{
package # moar hide
DBIO::Test::SVPTracerObj;
use base 'DBIO::Storage::Statistics';
sub query_start { 'do notning'}
sub callback { 'dummy '}
t/storage/savepoints.t view on Meta::CPAN
'commit from inner transaction');
is $ars->search({ name => 'in_inner_transaction_rolling_back' })->first,
undef,
'rollback from inner transaction';
# make sure a fresh txn will work after above
$schema->storage->txn_do(sub { ok "noop" } );
### Make sure non-existend savepoint release doesn't infloop itself
{
weaken( my $s = $schema );
throws_ok {
$s->storage->txn_do(sub { $s->svp_release('wibble') })
} qr/Savepoint 'wibble' does not exist/,
"Calling svp_release on a non-existant savepoint throws expected error"
;
}
### cleanupz
$schema->storage->dbh->do ("DROP TABLE artist");
( run in 2.076 seconds using v1.01-cache-2.11-cpan-995e09ba956 )