From 89c8a661e61bbf0fb1d1e5050262390649e13f2a Mon Sep 17 00:00:00 2001 From: Niko Tyni Date: Mon, 23 Aug 2010 08:15:15 +0300 Subject: [PATCH] Don't clean temporary files in child processes As of SQLite 3.7.0, write locks try to stat() the database file and fail with a 'Disk I/O error' if it is missing. This breaks those tests that fork child processes (namely 08_busy.t and t/28_schemachange.t) because the child process removes the database file in the END block. The fix is to disable the clean() function for child processes. See --- t/lib/Test.pm | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) diff --git a/t/lib/Test.pm b/t/lib/Test.pm index 80e50ce..8d1be25 100644 --- a/t/lib/Test.pm +++ b/t/lib/Test.pm @@ -7,6 +7,7 @@ use Exporter (); use File::Spec (); use Test::More (); +my $parent; use vars qw{$VERSION @ISA @EXPORT @CALL_FUNCS}; BEGIN { $VERSION = '1.29'; @@ -15,6 +16,7 @@ BEGIN { # Allow tests to load modules bundled in /inc unshift @INC, 'inc'; + $parent = $$; } # Always load the DBI module @@ -22,6 +24,7 @@ use DBI (); # Delete temporary files sub clean { + return if $$ != $parent; unlink( 'foo' ); unlink( 'foo-journal' ); } -- 1.7.1