|
Packit |
723767 |
#!/usr/bin/perl
|
|
Packit |
723767 |
|
|
Packit |
723767 |
use strict;
|
|
Packit |
723767 |
BEGIN {
|
|
Packit |
723767 |
$| = 1;
|
|
Packit |
723767 |
$^W = 1;
|
|
Packit |
723767 |
}
|
|
Packit |
723767 |
|
|
Packit |
723767 |
use lib "t/lib";
|
|
Packit |
723767 |
use SQLiteTest qw/connect_ok @CALL_FUNCS/;
|
|
Packit |
723767 |
use Test::More;
|
|
Packit |
723767 |
use DBD::SQLite;
|
|
Packit |
723767 |
#use Test::NoWarnings;
|
|
Packit |
723767 |
|
|
Packit |
723767 |
my @methods = qw(
|
|
Packit |
723767 |
commit rollback
|
|
Packit |
723767 |
);
|
|
Packit |
723767 |
|
|
Packit |
723767 |
plan tests => 2 * (6 + @methods) + 2 * @CALL_FUNCS * (14 + ($DBD::SQLite::sqlite_version_number >= 3006011) * 2);
|
|
Packit |
723767 |
|
|
Packit |
723767 |
local $SIG{__WARN__} = sub {}; # to hide warnings/error messages
|
|
Packit |
723767 |
|
|
Packit |
723767 |
# DBI methods
|
|
Packit |
723767 |
|
|
Packit |
723767 |
for my $autocommit (0, 1) {
|
|
Packit |
723767 |
my $dbh = connect_ok( RaiseError => 1, PrintError => 0, AutoCommit => $autocommit );
|
|
Packit |
723767 |
$dbh->do('create table foo (id, text)');
|
|
Packit |
723767 |
$dbh->do('insert into foo values(?,?)', undef, 1, 'text');
|
|
Packit |
723767 |
{
|
|
Packit |
723767 |
local $@;
|
|
Packit |
723767 |
eval { $dbh->disconnect };
|
|
Packit |
723767 |
ok !$@, "disconnected";
|
|
Packit |
723767 |
}
|
|
Packit |
723767 |
|
|
Packit |
723767 |
for my $method (@methods) {
|
|
Packit |
723767 |
local $@;
|
|
Packit |
723767 |
eval { $dbh->$method };
|
|
Packit |
723767 |
ok $@, "$method dies with error: $@";
|
|
Packit |
723767 |
}
|
|
Packit |
723767 |
|
|
Packit |
723767 |
{
|
|
Packit |
723767 |
local $@;
|
|
Packit |
723767 |
eval { $dbh->last_insert_id(undef, undef, undef, undef) };
|
|
Packit |
723767 |
ok $@, "last_insert_id dies with error: $@";
|
|
Packit |
723767 |
}
|
|
Packit |
723767 |
|
|
Packit |
723767 |
{
|
|
Packit |
723767 |
local $@;
|
|
Packit |
723767 |
eval { $dbh->do('insert into foo (?,?)', undef, 2, 'text2') };
|
|
Packit |
723767 |
ok $@, "do dies with error: $@";
|
|
Packit |
723767 |
}
|
|
Packit |
723767 |
|
|
Packit |
723767 |
{
|
|
Packit |
723767 |
local $@;
|
|
Packit |
723767 |
eval { $dbh->selectrow_arrayref('select * from foo') };
|
|
Packit |
723767 |
ok $@, "selectrow_arrayref dies with error: $@";
|
|
Packit |
723767 |
}
|
|
Packit |
723767 |
|
|
Packit |
723767 |
{ # this should be the last test in this block
|
|
Packit |
723767 |
local $@;
|
|
Packit |
723767 |
eval { local $dbh->{AutoCommit} };
|
|
Packit |
723767 |
ok !$@, "store doesn't cause segfault";
|
|
Packit |
723767 |
}
|
|
Packit |
723767 |
}
|
|
Packit |
723767 |
|
|
Packit |
723767 |
# SQLite private methods
|
|
Packit |
723767 |
|
|
Packit |
723767 |
for my $call_func (@CALL_FUNCS) {
|
|
Packit |
723767 |
for my $autocommit (0, 1) {
|
|
Packit |
723767 |
my $dbh = connect_ok( RaiseError => 1, PrintError => 0, AutoCommit => $autocommit );
|
|
Packit |
723767 |
$dbh->do('create table foo (id, text)');
|
|
Packit |
723767 |
$dbh->do('insert into foo values(?,?)', undef, 1, 'text');
|
|
Packit |
723767 |
{
|
|
Packit |
723767 |
local $@;
|
|
Packit |
723767 |
eval { $dbh->disconnect };
|
|
Packit |
723767 |
ok !$@, "disconnected";
|
|
Packit |
723767 |
}
|
|
Packit |
723767 |
|
|
Packit |
723767 |
{
|
|
Packit |
723767 |
local $@;
|
|
Packit |
723767 |
eval { $dbh->$call_func(500, 'busy_timeout') };
|
|
Packit |
723767 |
ok $@, "busy timeout dies with error: $@";
|
|
Packit |
723767 |
}
|
|
Packit |
723767 |
|
|
Packit |
723767 |
{
|
|
Packit |
723767 |
local $@;
|
|
Packit |
723767 |
eval { $dbh->$call_func('now', 0, sub { time }, 'create_function') };
|
|
Packit |
723767 |
ok $@, "create_function dies with error: $@";
|
|
Packit |
723767 |
}
|
|
Packit |
723767 |
|
|
Packit |
723767 |
{
|
|
Packit |
723767 |
local $@;
|
|
Packit |
723767 |
eval { $dbh->$call_func(1, 'enable_load_extension') };
|
|
Packit |
723767 |
ok $@, "enable_load_extension dies with error: $@";
|
|
Packit |
723767 |
}
|
|
Packit |
723767 |
|
|
Packit |
723767 |
{
|
|
Packit |
723767 |
package count_aggr;
|
|
Packit |
723767 |
|
|
Packit |
723767 |
sub new {
|
|
Packit |
723767 |
bless { count => 0 }, shift;
|
|
Packit |
723767 |
}
|
|
Packit |
723767 |
|
|
Packit |
723767 |
sub step {
|
|
Packit |
723767 |
$_[0]{count}++;
|
|
Packit |
723767 |
return;
|
|
Packit |
723767 |
}
|
|
Packit |
723767 |
|
|
Packit |
723767 |
sub finalize {
|
|
Packit |
723767 |
my $c = $_[0]{count};
|
|
Packit |
723767 |
$_[0]{count} = undef;
|
|
Packit |
723767 |
|
|
Packit |
723767 |
return $c;
|
|
Packit |
723767 |
}
|
|
Packit |
723767 |
|
|
Packit |
723767 |
package main;
|
|
Packit |
723767 |
|
|
Packit |
723767 |
local $@;
|
|
Packit |
723767 |
eval { $dbh->$call_func('newcount', 0, 'count_aggr', 'create_aggregate') };
|
|
Packit |
723767 |
ok $@, "create_aggregate dies with error: $@";
|
|
Packit |
723767 |
}
|
|
Packit |
723767 |
|
|
Packit |
723767 |
{
|
|
Packit |
723767 |
local $@;
|
|
Packit |
723767 |
eval { $dbh->$call_func('by_num', sub ($$) {0}, 'create_collation') };
|
|
Packit |
723767 |
ok $@, "create_collation dies with error: $@";
|
|
Packit |
723767 |
}
|
|
Packit |
723767 |
|
|
Packit |
723767 |
{
|
|
Packit |
723767 |
local $@;
|
|
Packit |
723767 |
eval { $dbh->$call_func('by_num', sub ($$) {0}, 'create_collation') };
|
|
Packit |
723767 |
ok $@, "create_collation dies with error: $@";
|
|
Packit |
723767 |
}
|
|
Packit |
723767 |
|
|
Packit |
723767 |
{
|
|
Packit |
723767 |
local $@;
|
|
Packit |
723767 |
eval { $dbh->$call_func(sub {1}, 'collation_needed') };
|
|
Packit |
723767 |
ok $@, "collation_needed dies with error: $@";
|
|
Packit |
723767 |
}
|
|
Packit |
723767 |
|
|
Packit |
723767 |
{
|
|
Packit |
723767 |
local $@;
|
|
Packit |
723767 |
eval { $dbh->$call_func(50, sub {}, 'progress_handler') };
|
|
Packit |
723767 |
ok $@, "progress_handler dies with error: $@";
|
|
Packit |
723767 |
}
|
|
Packit |
723767 |
|
|
Packit |
723767 |
{
|
|
Packit |
723767 |
local $@;
|
|
Packit |
723767 |
eval { $dbh->$call_func(sub {}, 'commit_hook') };
|
|
Packit |
723767 |
ok $@, "commit hook dies with error: $@";
|
|
Packit |
723767 |
}
|
|
Packit |
723767 |
|
|
Packit |
723767 |
{
|
|
Packit |
723767 |
local $@;
|
|
Packit |
723767 |
eval { $dbh->$call_func(sub {}, 'rollback_hook') };
|
|
Packit |
723767 |
ok $@, "rollback hook dies with error: $@";
|
|
Packit |
723767 |
}
|
|
Packit |
723767 |
|
|
Packit |
723767 |
{
|
|
Packit |
723767 |
local $@;
|
|
Packit |
723767 |
eval { $dbh->$call_func(sub {}, 'update_hook') };
|
|
Packit |
723767 |
ok $@, "update hook dies with error: $@";
|
|
Packit |
723767 |
}
|
|
Packit |
723767 |
|
|
Packit |
723767 |
{
|
|
Packit |
723767 |
local $@;
|
|
Packit |
723767 |
eval { $dbh->$call_func(undef, 'set_authorizer') };
|
|
Packit |
723767 |
ok $@, "set authorizer dies with error: $@";
|
|
Packit |
723767 |
}
|
|
Packit |
723767 |
|
|
Packit |
723767 |
if ($DBD::SQLite::sqlite_version_number >= 3006011) {
|
|
Packit |
723767 |
local $@;
|
|
Packit |
723767 |
eval { $dbh->$call_func('./backup_file', 'backup_from_file') };
|
|
Packit |
723767 |
ok $@, "backup from file dies with error: $@";
|
|
Packit |
723767 |
}
|
|
Packit |
723767 |
|
|
Packit |
723767 |
if ($DBD::SQLite::sqlite_version_number >= 3006011) {
|
|
Packit |
723767 |
local $@;
|
|
Packit |
723767 |
eval { $dbh->$call_func('./backup_file', 'backup_to_file') };
|
|
Packit |
723767 |
ok $@, "backup to file dies with error: $@";
|
|
Packit |
723767 |
}
|
|
Packit |
723767 |
}
|
|
Packit |
723767 |
}
|