Stop using precomputed SQLite testdb name, fix test-end bug in replicated.t
This was an... odd one. Originally the problem manifested as a classic
var-sub-sub closure problem, leading to $db_file being captured and tripping
a more involved testcase that is coming in a subsequent commit. However while
getting rid of the reference itself was easy, this led to the outer coderef
itself being "leaked out".
The reproducing oneliner is:
~$ perl -MScalar::Util=weaken -Mstrict -Mwarnings -e '
sub foo {
my $rv = sub { "wtf" }; return $rv;
}
my $should_be_gone;
{
$should_be_gone = foo();
weaken ($should_be_gone);
}
warn $should_be_gone; # why is this still defined@!%#$!$#
'
Various tools indicated that it is somehow attached to the PAD of the static
foo() sub, but I could not figure out *why* exactly this is happening, nor
how to properly list it: PadWalker's closed_over() shows nothing for foo()
Thus invoking doge on the whole shebang, and moving on. SUCH WTF, WOW!
Incientally changing things to use the current SQLite filename revealed
a bug in t/storage/replicated.t, which was never noticed as it only
resulted in annoying warnings under Win32 global destroy (test
teardown).