I am writing a test suite for some code I'm currently working on and found a nasty interaction between DBI and Test::More. The following sample test:
use strict; use warnings; use Test::More qw(no_plan); use DBI; print "Test::More::VERSION: $Test::More::VERSION\n"; print "DBI::VERSION: $DBI::VERSION\n"; print "Perl version: ", join ('.', unpack('C3', $^V)), "\n"; my $dbh = DBI->connect ("dbi:SQLite:delme.SQLite", '', ''); $dbh->do ("CREATE TABLE IF NOT EXISTS test (id INTEGER PRIMARY KEY NOT + NULL, name VARCHAR(20))"); my $stmt = "SELECT ALL * FROM test"; my $sth = $dbh->prepare ($stmt); $sth->execute (); my $result = $sth->fetchall_hashref ('id'); ok (1, 'after fetchall_hashref'); $sth = 0; $dbh->disconnect ();
under AS Perl on XP prints:
Test::More::VERSION: 0.47 DBI::VERSION: 1.52 Perl version: 5.8.4 Attempt to free unreferenced scalar: SV 0x219387c at C:/Perl/lib/Test/ +Builder.pm line 313. ok 1 - after fetchall_hashref 1..1
(The "Attempt ..." line is sent to stderr btw.) Is this something I am doing wrong or is it showing up a bug in either DBI or Test::More? If a bug, is there a work around for it?
Update: updating to AS Perl 5.8.8 fixes it:
Test::More::VERSION: 0.62 DBI::VERSION: 1.52 Perl version: 5.8.8 ok 1 - after fetchall_hashref 1..1
In reply to Nastyness between DBI and Test::More by GrandFather
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |