Scope::Upper somehow confuses pseudofork on older perls - investigation pending
[dbsrgits/DBIx-Class.git] / t / 50fork.t
index 8fea72f..3ddcaf3 100644 (file)
@@ -2,29 +2,28 @@ use strict;
 use warnings;
 use Test::More;
 
-# README: If you set the env var to a number greater than 10,
-#   we will use that many children
+use lib qw(t/lib);
+use DBICTest;
+use DBIx::Class::Optional::Dependencies ();
 
-my ($dsn, $user, $pass) = @ENV{map { "DBICTEST_PG_${_}" } qw/DSN USER PASS/};
-my $num_children = $ENV{DBICTEST_FORK_STRESS};
+my $main_pid = $$;
 
-plan skip_all => 'Set $ENV{DBICTEST_FORK_STRESS} to run this test'
-    unless $num_children;
+plan skip_all => 'Test needs ' . DBIx::Class::Optional::Dependencies->req_missing_for ('rdbms_pg')
+  unless DBIx::Class::Optional::Dependencies->req_ok_for ('rdbms_pg');
+
+my ($dsn, $user, $pass) = @ENV{map { "DBICTEST_PG_${_}" } qw/DSN USER PASS/};
 
 plan skip_all => 'Set $ENV{DBICTEST_PG_DSN}, _USER and _PASS to run this test'
       . ' (note: creates and drops a table named artist!)' unless ($dsn && $user);
 
+# README: If you set the env var to a number greater than 10,
+#   we will use that many children
+my $num_children = $ENV{DBICTEST_FORK_STRESS} || 1;
 if($num_children !~ /^[0-9]+$/ || $num_children < 10) {
    $num_children = 10;
 }
 
-plan tests => ($num_children*2) + 6;
-
-use lib qw(t/lib);
-
-use_ok('DBICTest::Schema');
-
-my $schema = DBICTest::Schema->connection($dsn, $user, $pass, { AutoCommit => 1 });
+my $schema = DBICTest::Schema->connect($dsn, $user, $pass, { AutoCommit => 1 });
 
 my $parent_rs;
 
@@ -117,4 +116,9 @@ while(@pids) {
 
 ok(1, "Made it to the end");
 
-$schema->storage->dbh->do("DROP TABLE cd");
+done_testing;
+
+END {
+  $schema->storage->dbh->do("DROP TABLE cd") if ($schema and $main_pid == $$);
+  undef $schema;
+}