use warnings;
use Test::More;
+use lib qw(t/lib);
+use DBICTest::RunMode;
+
+plan skip_all => "Temporarily no smoke testing of Test::More 1.3xx alphas" if (
+ DBICTest::RunMode->is_smoker
+ and
+ eval { Test::More->VERSION("1.300") }
+ and
+ require ExtUtils::MakeMaker
+ and
+ MM->parse_version($INC{"Test/Builder.pm"}) =~ / ^ 1 \. 3.. ... \_ /x
+);
+
my $TB = Test::More->builder;
if ($ENV{DBICTEST_IN_PERSISTENT_ENV}) {
# without this explicit close older TBs warn in END after a ->reset
$TB->reset;
}
-use lib qw(t/lib);
-use DBICTest::RunMode;
-use DBICTest::Util::LeakTracer qw(populate_weakregistry assert_empty_weakregistry visit_refs hrefaddr);
+use DBICTest::Util::LeakTracer qw(populate_weakregistry assert_empty_weakregistry visit_refs);
use Scalar::Util qw(weaken blessed reftype);
use DBIx::Class;
-use DBIx::Class::_Util 'sigwarn_silencer';
+use DBIx::Class::_Util qw(hrefaddr sigwarn_silencer);
BEGIN {
plan skip_all => "Your perl version $] appears to leak like a sieve - skipping test"
if DBIx::Class::_ENV_::PEEPEENESS;
# Load them and empty the registry
# this loads the DT armada
- $has_dt = DBIx::Class::Optional::Dependencies->req_ok_for('test_dt_sqlite');
+ $has_dt = DBIx::Class::Optional::Dependencies->req_ok_for([qw( test_rdbms_sqlite icdt )]);
require Errno;
require DBI;
# do a heavy-duty fire-and-compare loop on all resultsets
# this is expensive - not running on install
my $typecounts = {};
- unless (DBICTest::RunMode->is_plain or $ENV{DBICTEST_IN_PERSISTENT_ENV}) {
+ if (
+ ! DBICTest::RunMode->is_plain
+ and
+ ! $ENV{DBICTEST_IN_PERSISTENT_ENV}
+ ) {
# FIXME - ideally we should be able to just populate an alternative
# registry, subtract everything from the main one, and arrive at
## anything we have seen so far is cool
#delete @{$interim_wr}{keys %$weak_registry};
#
- ## I still don't get any of this...
- #delete $interim_wr->{$_} for grep {
- # ref ($interim_wr->{$_}{weakref}) eq 'SCALAR'
- # and
- # ${$interim_wr->{$_}{weakref}} eq 'very closure... much wtf... wow!!!'
- #} keys %$interim_wr;
- #
## moment of truth - the rest ought to be gone
#assert_empty_weakregistry($interim_wr);
}
delete $weak_registry->{$addr}
unless $cleared->{hash_merge_singleton}{$weak_registry->{$addr}{weakref}{behavior}}++;
}
+ elsif ($names =~ /^DateTime::TimeZone::UTC/m) {
+ # DT is going through a refactor it seems - let it leak zones for now
+ delete $weak_registry->{$addr};
+ }
elsif (
- # if we can look at closed over pieces - we will register it as a global
- !DBICTest::Util::LeakTracer::CV_TRACING
- and
+# # if we can look at closed over pieces - we will register it as a global
+# !DBICTest::Util::LeakTracer::CV_TRACING
+# and
$names =~ /^SQL::Translator::Generator::DDL::SQLite/m
) {
# SQLT::Producer::SQLite keeps global generators around for quoted
($ENV{PATH}) = $ENV{PATH} =~ /(.+)/;
-my $persistence_tests = {
- PPerl => {
- cmd => [qw/pperl --prefork=1/, __FILE__],
- },
- 'CGI::SpeedyCGI' => {
- cmd => [qw/speedy -- -t5/, __FILE__],
- },
-};
-
-# scgi is smart and will auto-reap after -t amount of seconds
-# pperl needs an actual killer :(
-$persistence_tests->{PPerl}{termcmd} = [
- $persistence_tests->{PPerl}{cmd}[0],
- '--kill',
- @{$persistence_tests->{PPerl}{cmd}}[ 1 .. $#{$persistence_tests->{PPerl}{cmd}} ],
-];
-
+my $persistence_tests;
SKIP: {
skip 'Test already in a persistent loop', 1
if $ENV{DBICTEST_IN_PERSISTENT_ENV};
local $ENV{DBICTEST_IN_PERSISTENT_ENV} = 1;
+ $persistence_tests = {
+ PPerl => {
+ cmd => [qw/pperl --prefork=1/, __FILE__],
+ },
+ 'CGI::SpeedyCGI' => {
+ cmd => [qw/speedy -- -t5/, __FILE__],
+ },
+ };
+
+ # scgi is smart and will auto-reap after -t amount of seconds
+ # pperl needs an actual killer :(
+ $persistence_tests->{PPerl}{termcmd} = [
+ $persistence_tests->{PPerl}{cmd}[0],
+ '--kill',
+ @{$persistence_tests->{PPerl}{cmd}}[ 1 .. $#{$persistence_tests->{PPerl}{cmd}} ],
+ ];
+
require IPC::Open2;
for my $type (keys %$persistence_tests) { SKIP: {
# just an extra precaution in case we blew away from the SKIP - since there are no
# PID files to go by (man does pperl really suck :(
END {
- unless ($ENV{DBICTEST_IN_PERSISTENT_ENV}) {
- close $_ for (*STDIN, *STDOUT, *STDERR);
+ if ($persistence_tests->{PPerl}{termcmd}) {
local $?; # otherwise test will inherit $? of the system()
- system (@{$persistence_tests->{PPerl}{termcmd}})
- if $persistence_tests->{PPerl}{termcmd};
+ require IPC::Open3;
+ open my $null, ">", File::Spec->devnull;
+ waitpid(
+ IPC::Open3::open3(undef, $null, $null, @{$persistence_tests->{PPerl}{termcmd}}),
+ 0,
+ );
}
}