Scope::Upper somehow confuses pseudofork on older perls - investigation pending
Peter Rabbitson [Mon, 7 Jan 2013 18:43:40 +0000 (13:43 -0500)]
View the patch with -w, lots of reindentation

t/storage/global_destruction.t

index 8b22c8d..4fb49cb 100644 (file)
@@ -2,16 +2,12 @@ use strict;
 use warnings;
 
 use Test::More;
-use Test::Exception;
 
 use DBIx::Class::Optional::Dependencies ();
 
 use lib qw(t/lib);
 use DBICTest;
 
-plan skip_all => 'Test segfaults on Win32 - investigation pending'
-  if $^O eq 'MSWin32' && DBICTest::RunMode->is_plain;
-
 for my $type (qw/PG MYSQL SQLite/) {
 
   SKIP: {
@@ -44,29 +40,27 @@ for my $type (qw/PG MYSQL SQLite/) {
 
     ok (!$schema->storage->connected, "$type: start disconnected");
 
-    lives_ok (sub {
-      $schema->txn_do (sub {
-
-        ok ($schema->storage->connected, "$type: transaction starts connected");
+    $schema->txn_do (sub {
 
-        my $pid = fork();
-        SKIP: {
-          skip "Fork failed: $!", 1 if (! defined $pid);
+      ok ($schema->storage->connected, "$type: transaction starts connected");
 
-          if ($pid) {
-            note "Parent $$ sleeping...";
-            wait();
-            note "Parent $$ woken up after child $pid exit";
-          }
-          else {
-            note "Child $$ terminating";
-            undef $DBICTest::FakeSchemaFactory::schema;
-            exit 0;
-          }
+      my $pid = fork();
+      SKIP: {
+        skip "Fork failed: $!", 1 if (! defined $pid);
 
-          ok ($schema->storage->connected, "$type: parent still connected (in txn_do)");
+        if ($pid) {
+          note "Parent $$ sleeping...";
+          wait();
+          note "Parent $$ woken up after child $pid exit";
+        }
+        else {
+          note "Child $$ terminating";
+          undef $DBICTest::FakeSchemaFactory::schema;
+          exit 0;
         }
-      });
+
+        ok ($schema->storage->connected, "$type: parent still connected (in txn_do)");
+      }
     });
 
     ok ($schema->storage->connected, "$type: parent still connected (outside of txn_do)");