mirror of
https://github.com/DBD-SQLite/DBD-SQLite
synced 2025-06-07 06:08:38 -04:00
use more test utility functions
This commit is contained in:
parent
cdb721d162
commit
f56689d929
21 changed files with 128 additions and 110 deletions
|
@ -6,13 +6,10 @@ use warnings;
|
|||
use lib "t/lib";
|
||||
use SQLiteTest;
|
||||
use Test::More;
|
||||
BEGIN {
|
||||
unless ( $] >= 5.008005 ) {
|
||||
plan( skip_all => 'Unicode is not supported before 5.8.5' );
|
||||
}
|
||||
}
|
||||
use Test::FailWarnings;
|
||||
|
||||
BEGIN { requires_unicode_support() }
|
||||
|
||||
#
|
||||
# Include std stuff
|
||||
#
|
||||
|
|
|
@ -1,17 +1,14 @@
|
|||
use strict;
|
||||
use warnings;
|
||||
use lib "t/lib";
|
||||
use SQLiteTest qw/connect_ok dies @CALL_FUNCS/;
|
||||
use SQLiteTest;
|
||||
use Test::More;
|
||||
BEGIN {
|
||||
unless ( $] >= 5.008005 ) {
|
||||
plan( skip_all => 'Unicode is not supported before 5.8.5' );
|
||||
}
|
||||
}
|
||||
use Test::FailWarnings;
|
||||
use Encode qw/decode/;
|
||||
use DBD::SQLite;
|
||||
|
||||
BEGIN { requires_unicode_support(); }
|
||||
|
||||
BEGIN {
|
||||
# Sadly perl for windows (and probably sqlite, too) may hang
|
||||
# if the system locale doesn't support european languages.
|
||||
|
|
|
@ -6,15 +6,12 @@ use warnings;
|
|||
use lib "t/lib";
|
||||
use SQLiteTest;
|
||||
use Test::More;
|
||||
BEGIN {
|
||||
unless ( $] >= 5.008005 ) {
|
||||
plan( skip_all => 'Unicode is not supported before 5.8.5' );
|
||||
}
|
||||
}
|
||||
use Test::FailWarnings;
|
||||
use File::Temp ();
|
||||
use File::Spec::Functions ':ALL';
|
||||
|
||||
BEGIN { requires_unicode_support() }
|
||||
|
||||
my $dir = File::Temp::tempdir( CLEANUP => 1 );
|
||||
foreach my $subdir ( 'longascii', 'adatbázis', 'name with spaces', '¿¿¿ ¿¿¿¿¿¿') {
|
||||
if ($^O eq 'cygwin') {
|
||||
|
|
10
t/36_hooks.t
10
t/36_hooks.t
|
@ -1,7 +1,7 @@
|
|||
use strict;
|
||||
use warnings;
|
||||
use lib "t/lib";
|
||||
use SQLiteTest qw/connect_ok @CALL_FUNCS/;
|
||||
use SQLiteTest;
|
||||
use Test::More;
|
||||
use Test::FailWarnings;
|
||||
|
||||
|
@ -68,7 +68,7 @@ foreach my $call_func (@CALL_FUNCS) {
|
|||
|
||||
# a commit hook that rejects the transaction
|
||||
$dbh->$call_func(sub {return 1}, "commit_hook");
|
||||
eval {do_transaction($dbh)}; # in eval() because of RaiseError
|
||||
allow_warnings { eval {do_transaction($dbh)} }; # in eval() because of RaiseError
|
||||
ok ($@, "transaction was rejected: $@" );
|
||||
|
||||
# no explicit rollback, because SQLite already did it
|
||||
|
@ -85,7 +85,7 @@ foreach my $call_func (@CALL_FUNCS) {
|
|||
|
||||
# try transaction again .. rollback hook should not be called
|
||||
$n_rollbacks = 0;
|
||||
eval {do_transaction($dbh)};
|
||||
allow_warnings { eval {do_transaction($dbh)} };
|
||||
is($n_rollbacks, 0, "rollback hook unregistered");
|
||||
|
||||
# check that the rollbacks did really occur
|
||||
|
@ -111,7 +111,7 @@ foreach my $call_func (@CALL_FUNCS) {
|
|||
"args to authorizer (INSERT)");
|
||||
|
||||
# try a delete (should be unauthorized)
|
||||
eval {$dbh->do("DELETE FROM hook_test WHERE foo = 'auth_test'")};
|
||||
allow_warnings { eval {$dbh->do("DELETE FROM hook_test WHERE foo = 'auth_test'")} };
|
||||
ok($@, "delete was rejected with message $@");
|
||||
is_deeply(\@authorizer_args,
|
||||
[DBD::SQLite::DELETE, 'hook_test', undef, 'temp', undef],
|
||||
|
@ -119,7 +119,7 @@ foreach my $call_func (@CALL_FUNCS) {
|
|||
|
||||
# unregister the authorizer ... now DELETE should be authorized
|
||||
$dbh->$call_func(undef, "set_authorizer");
|
||||
eval {$dbh->do("DELETE FROM hook_test WHERE foo = 'auth_test'")};
|
||||
allow_warnings { eval {$dbh->do("DELETE FROM hook_test WHERE foo = 'auth_test'")} };
|
||||
ok(!$@, "delete was accepted");
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
use strict;
|
||||
use warnings;
|
||||
use lib "t/lib";
|
||||
use SQLiteTest qw/connect_ok @CALL_FUNCS/;
|
||||
use SQLiteTest;
|
||||
use Test::More;
|
||||
use Test::FailWarnings;
|
||||
|
||||
|
@ -14,12 +14,7 @@ my @words = qw{
|
|||
};
|
||||
my @regexes = qw( ^b\\w+ (?i:^b\\w+) );
|
||||
|
||||
BEGIN {
|
||||
if ($] < 5.008005) {
|
||||
plan skip_all => 'Unicode is not supported before 5.8.5';
|
||||
}
|
||||
}
|
||||
|
||||
BEGIN { requires_unicode_support() }
|
||||
BEGIN {
|
||||
# Sadly perl for windows (and probably sqlite, too) may hang
|
||||
# if the system locale doesn't support european languages.
|
||||
|
|
16
t/43_fts3.t
16
t/43_fts3.t
|
@ -1,7 +1,7 @@
|
|||
use strict;
|
||||
use warnings;
|
||||
use lib "t/lib";
|
||||
use SQLiteTest qw/connect_ok has_sqlite/;
|
||||
use SQLiteTest;
|
||||
use Test::More;
|
||||
use Test::FailWarnings;
|
||||
use DBD::SQLite;
|
||||
|
@ -24,13 +24,12 @@ my @tests = (
|
|||
);
|
||||
|
||||
BEGIN {
|
||||
if ($] < 5.008005) {
|
||||
plan skip_all => 'Unicode is not supported before 5.8.5';
|
||||
requires_unicode_support();
|
||||
|
||||
if (!has_fts()) {
|
||||
plan skip_all => 'FTS is disabled for this DBD::SQLite';
|
||||
}
|
||||
if (!grep /ENABLE_FTS3/, DBD::SQLite::compile_options()) {
|
||||
plan skip_all => 'FTS3 is disabled for this DBD::SQLite';
|
||||
}
|
||||
if ($DBD::SQLite::sqlite_version_number >= 3011000 and $DBD::SQLite::sqlite_version_number < 3012000 and !grep /ENABLE_FTS3_TOKENIZER/, DBD::SQLite::compile_options()) {
|
||||
if ($DBD::SQLite::sqlite_version_number >= 3011000 and $DBD::SQLite::sqlite_version_number < 3012000 and !has_compile_option('ENABLE_FTS3_TOKENIZER')) {
|
||||
plan skip_all => 'FTS3 tokenizer is disabled for this DBD::SQLite';
|
||||
}
|
||||
}
|
||||
|
@ -94,8 +93,7 @@ for my $use_unicode (0, 1) {
|
|||
SKIP: {
|
||||
skip "These tests require SQLite compiled with "
|
||||
. "ENABLE_FTS3_PARENTHESIS option", scalar @tests
|
||||
unless DBD::SQLite->can('compile_options') &&
|
||||
grep /ENABLE_FTS3_PARENTHESIS/, DBD::SQLite::compile_options();
|
||||
unless has_compile_option('ENABLE_FTS3_PARENTHESIS');
|
||||
|
||||
my $sql = "SELECT docid FROM try_$fts WHERE content MATCH ?";
|
||||
|
||||
|
|
16
t/44_rtree.t
16
t/44_rtree.t
|
@ -3,8 +3,13 @@ use warnings;
|
|||
use lib "t/lib";
|
||||
use SQLiteTest;
|
||||
use Test::More;
|
||||
use DBD::SQLite;
|
||||
use Data::Dumper;
|
||||
use Test::FailWarnings;
|
||||
|
||||
BEGIN {
|
||||
if (!has_compile_option('ENABLE_RTREE')) {
|
||||
plan skip_all => 'RTREE is disabled for this DBD::SQLite';
|
||||
}
|
||||
}
|
||||
|
||||
# NOTE: It seems to be better to compare rounded values
|
||||
# because stored coordinate values may have slight errors
|
||||
|
@ -47,13 +52,6 @@ my @test_results = (
|
|||
[1, 3, 5, 6]
|
||||
);
|
||||
|
||||
BEGIN {
|
||||
if (!grep /ENABLE_RTREE/, DBD::SQLite::compile_options()) {
|
||||
plan skip_all => 'RTREE is disabled for this DBD::SQLite';
|
||||
}
|
||||
}
|
||||
use Test::FailWarnings;
|
||||
|
||||
# connect
|
||||
my $dbh = connect_ok( RaiseError => 1 );
|
||||
|
||||
|
|
|
@ -1,18 +1,16 @@
|
|||
use strict;
|
||||
use warnings;
|
||||
use DBD::SQLite;
|
||||
use lib "t/lib";
|
||||
use SQLiteTest;
|
||||
use Test::More;
|
||||
use Test::FailWarnings;
|
||||
|
||||
BEGIN {
|
||||
if (!grep /^ENABLE_COLUMN_METADATA/, DBD::SQLite::compile_options()) {
|
||||
if (!has_compile_option('ENABLE_COLUMN_METADATA')) {
|
||||
plan skip_all => "Column metadata is disabled for this DBD::SQLite";
|
||||
}
|
||||
}
|
||||
|
||||
use lib "t/lib";
|
||||
use SQLiteTest qw/connect_ok @CALL_FUNCS/;
|
||||
use Test::FailWarnings;
|
||||
|
||||
for my $call_func (@CALL_FUNCS) {
|
||||
my $dbh = connect_ok(RaiseError => 1);
|
||||
$dbh->do('create table foo (id integer primary key autoincrement, "name space", unique_col integer unique)');
|
||||
|
|
|
@ -1,15 +1,12 @@
|
|||
use strict;
|
||||
use warnings;
|
||||
use lib "t/lib";
|
||||
use SQLiteTest qw/connect_ok @CALL_FUNCS/;
|
||||
use SQLiteTest;
|
||||
use Test::More;
|
||||
BEGIN {
|
||||
if ($] < 5.008005) {
|
||||
plan skip_all => 'Unicode is not supported before 5.8.5';
|
||||
}
|
||||
}
|
||||
#use Test::FailWarnings; # see RT#112220
|
||||
|
||||
BEGIN { requires_unicode_support() }
|
||||
|
||||
# special case for multibyte (non-ASCII) character class,
|
||||
# which only works correctly under the unicode mode
|
||||
my @words = ("\x{e3}\x{83}\x{86}\x{e3}\x{82}\x{b9}\x{e3}\x{83}\x{88}", "\x{e3}\x{83}\x{86}\x{e3}\x{83}\x{b3}\x{e3}\x{83}\x{88}"); # テスト テント
|
||||
|
|
|
@ -8,7 +8,11 @@ use File::Spec ();
|
|||
use Test::More ();
|
||||
|
||||
our @ISA = 'Exporter';
|
||||
our @EXPORT = qw/connect_ok dies dbfile @CALL_FUNCS $sqlite_call has_sqlite requires_sqlite/;
|
||||
our @EXPORT = qw/
|
||||
connect_ok dies dbfile @CALL_FUNCS $sqlite_call
|
||||
has_sqlite requires_sqlite requires_unicode_support
|
||||
allow_warnings has_compile_option has_fts
|
||||
/;
|
||||
our @CALL_FUNCS;
|
||||
our $sqlite_call;
|
||||
|
||||
|
@ -137,6 +141,40 @@ $sqlite_call = sub {
|
|||
$CALL_FUNCS[-1]->($dbh, @_, $func_to_call);
|
||||
};
|
||||
|
||||
=head2 has_compile_option
|
||||
|
||||
has_compile_option('ENABLE_FTS3');
|
||||
has_compile_option(qr/^ENABLE_FTS[345]/);
|
||||
|
||||
returns true if DBD::SQLite is built with a specified compile option.
|
||||
|
||||
=cut
|
||||
|
||||
sub has_compile_option {
|
||||
my $option = shift;
|
||||
require DBD::SQLite;
|
||||
return unless DBD::SQLite->can('compile_options');
|
||||
my $re = ref $option eq ref qr// ? $option : qr/\b$option\b/;
|
||||
grep /$re/, DBD::SQLite::compile_options();
|
||||
}
|
||||
|
||||
=head2 has_fts
|
||||
|
||||
has_fts();
|
||||
has_fts(3);
|
||||
|
||||
returns true if DBD::SQLite is built with FTS.
|
||||
|
||||
=cut
|
||||
|
||||
sub has_fts {
|
||||
if (my $version = shift) {
|
||||
has_compile_option("ENABLE_FTS$version");
|
||||
} else {
|
||||
has_compile_option(qr/\bENABLE_FTS\d\b/);
|
||||
}
|
||||
}
|
||||
|
||||
=head2 has_sqlite
|
||||
|
||||
has_sqlite('3.6.11');
|
||||
|
@ -170,4 +208,33 @@ sub requires_sqlite {
|
|||
}
|
||||
}
|
||||
|
||||
=head2 requires_unicode_support
|
||||
|
||||
BEGIN { requires_unicode_support(); }
|
||||
|
||||
skips all the tests if Perl does not have sane Unicode support.
|
||||
|
||||
=cut
|
||||
|
||||
sub requires_unicode_support {
|
||||
unless ($] >= 5.008005) {
|
||||
Test::More::plan skip_all => "Unicode is not supported before 5.8.5";
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
=head2 allow_warnings
|
||||
|
||||
allow_warnings { eval {...} };
|
||||
|
||||
hides SQLite warnings from Test::FailWarnings.
|
||||
|
||||
=cut
|
||||
|
||||
sub allow_warnings (&) {
|
||||
my $code = shift;
|
||||
local $SIG{__WARN__} = sub { Test::More::note @_ };
|
||||
$code->();
|
||||
}
|
||||
|
||||
1;
|
||||
|
|
|
@ -3,13 +3,10 @@ use warnings;
|
|||
use lib "t/lib";
|
||||
use SQLiteTest;
|
||||
use Test::More;
|
||||
BEGIN {
|
||||
unless ( $] >= 5.008005 ) {
|
||||
plan( skip_all => 'Unicode is not supported before 5.8.5' );
|
||||
}
|
||||
}
|
||||
use Test::FailWarnings;
|
||||
|
||||
BEGIN { requires_unicode_support(); }
|
||||
|
||||
my $dbh = connect_ok( sqlite_unicode => 1 );
|
||||
is( $dbh->{sqlite_unicode}, 1, 'Unicode is on' );
|
||||
|
||||
|
|
|
@ -1,15 +1,12 @@
|
|||
use strict;
|
||||
use warnings;
|
||||
use lib "t/lib";
|
||||
use SQLiteTest qw/connect_ok @CALL_FUNCS/;
|
||||
use SQLiteTest;
|
||||
use Test::More;
|
||||
BEGIN {
|
||||
unless ( $] >= 5.008005 ) {
|
||||
plan( skip_all => 'Unicode is not supported before 5.8.5' );
|
||||
}
|
||||
}
|
||||
use Test::FailWarnings;
|
||||
|
||||
BEGIN { requires_unicode_support() }
|
||||
|
||||
foreach my $call_func (@CALL_FUNCS) {
|
||||
my $dbh = connect_ok( sqlite_unicode => 1 );
|
||||
ok($dbh->$call_func( "perl_uc", 1, \&perl_uc, "create_function" ));
|
||||
|
|
|
@ -7,7 +7,7 @@ use DBD::SQLite;
|
|||
use Test::FailWarnings;
|
||||
|
||||
BEGIN {
|
||||
if (!grep /^ENABLE_COLUMN_METADATA/, DBD::SQLite::compile_options()) {
|
||||
if (!has_compile_option('ENABLE_COLUMN_METADATA')) {
|
||||
plan skip_all => "Column metadata is disabled for this DBD::SQLite";
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,14 +5,8 @@ use SQLiteTest;
|
|||
use Test::More;
|
||||
|
||||
BEGIN {
|
||||
use DBD::SQLite;
|
||||
unless ($DBD::SQLite::sqlite_version_number && $DBD::SQLite::sqlite_version_number >= 3006006) {
|
||||
plan skip_all => "this test requires SQLite 3.6.6 and newer";
|
||||
exit;
|
||||
}
|
||||
if (!grep /^ENABLE_FTS3/, DBD::SQLite::compile_options()) {
|
||||
plan skip_all => "FTS3 is disabled for this DBD::SQLite";
|
||||
}
|
||||
requires_sqlite('3.6.6');
|
||||
plan skip_all => "FTS is disabled for this DBD::SQLite" unless has_fts();
|
||||
}
|
||||
|
||||
use Test::FailWarnings;
|
||||
|
|
|
@ -4,9 +4,7 @@ use lib "t/lib";
|
|||
use SQLiteTest;
|
||||
use Test::More;
|
||||
BEGIN {
|
||||
require DBD::SQLite;
|
||||
unless (DBD::SQLite->can('compile_options')
|
||||
&& grep /ENABLE_ICU/, DBD::SQLite::compile_options()) {
|
||||
unless (has_compile_option('ENABLE_ICU')) {
|
||||
plan( skip_all => 'requires SQLite ICU plugin to be enabled' );
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,16 +1,13 @@
|
|||
use strict;
|
||||
use warnings;
|
||||
use lib "t/lib";
|
||||
use SQLiteTest qw/connect_ok/;
|
||||
use SQLiteTest;
|
||||
use Test::More;
|
||||
BEGIN {
|
||||
unless ( $] >= 5.008005 ) {
|
||||
plan( skip_all => 'Unicode is not supported before 5.8.5' );
|
||||
}
|
||||
}
|
||||
use Test::FailWarnings;
|
||||
use DBI qw/:sql_types/;
|
||||
|
||||
BEGIN{ requires_unicode_support(); }
|
||||
|
||||
my $dbh = connect_ok(sqlite_unicode => 1);
|
||||
$dbh->do('create table test1 (id integer, b blob)');
|
||||
|
||||
|
|
|
@ -3,15 +3,11 @@ use warnings;
|
|||
use lib "t/lib";
|
||||
use SQLiteTest;
|
||||
use Test::More;
|
||||
|
||||
BEGIN {
|
||||
unless ( $] >= 5.008005 ) {
|
||||
plan( skip_all => 'Unicode is not supported before 5.8.5' );
|
||||
}
|
||||
}
|
||||
use Test::FailWarnings;
|
||||
use Encode;
|
||||
|
||||
BEGIN { requires_unicode_support() }
|
||||
|
||||
unicode_test("\x{263A}"); # (decoded) smiley character
|
||||
unicode_test("\x{0100}"); # (decoded) capital A with macron
|
||||
|
||||
|
|
|
@ -7,13 +7,10 @@ use warnings;
|
|||
use lib "t/lib";
|
||||
use SQLiteTest;
|
||||
use Test::More;
|
||||
BEGIN {
|
||||
unless ( $] >= 5.008005 ) {
|
||||
plan( skip_all => 'Unicode is not supported before 5.8.5' );
|
||||
}
|
||||
}
|
||||
use Test::FailWarnings;
|
||||
|
||||
BEGIN { requires_unicode_support() }
|
||||
|
||||
my $dbh = connect_ok( sqlite_unicode => 1 );
|
||||
is( $dbh->{sqlite_unicode}, 1, 'Unicode is on' );
|
||||
|
||||
|
|
|
@ -9,12 +9,11 @@ use warnings;
|
|||
use lib "t/lib";
|
||||
use SQLiteTest;
|
||||
use Test::More;
|
||||
use Test::FailWarnings;
|
||||
use DBI qw/SQL_INTEGER/;
|
||||
|
||||
BEGIN { requires_sqlite('3.7.9') }
|
||||
BEGIN { plan skip_all => 'FTS3 is disabled for this DBD::SQLite' if !grep /ENABLE_FTS3/, DBD::SQLite::compile_options() }
|
||||
|
||||
use DBI qw/SQL_INTEGER/;
|
||||
use Test::FailWarnings;
|
||||
BEGIN { plan skip_all => 'FTS is disabled for this DBD::SQLite' unless has_fts() }
|
||||
|
||||
my $dbh = connect_ok(RaiseError => 1, AutoCommit => 1);
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ use Test::More;
|
|||
use Test::FailWarnings;
|
||||
|
||||
BEGIN { requires_sqlite('3.7.7') }
|
||||
BEGIN { plan skip_all => 'FTS3 is disabled for this DBD::SQLite' if !grep /ENABLE_FTS3/, DBD::SQLite::compile_options() }
|
||||
BEGIN { plan skip_all => 'FTS is disabled for this DBD::SQLite' unless has_fts() }
|
||||
|
||||
my $dbh = connect_ok(AutoCommit => 0);
|
||||
|
||||
|
|
|
@ -1,18 +1,17 @@
|
|||
use strict;
|
||||
use warnings;
|
||||
use FindBin;
|
||||
use lib "t/lib";
|
||||
use SQLiteTest qw/connect_ok $sqlite_call requires_sqlite/;
|
||||
use SQLiteTest;
|
||||
use Test::More;
|
||||
use Test::FailWarnings;
|
||||
|
||||
BEGIN { requires_sqlite('3.7.12') }
|
||||
|
||||
use FindBin;
|
||||
|
||||
BEGIN {
|
||||
plan skip_all => "\$FindBin::Bin points to a nonexistent path for some reason: $FindBin::Bin" if !-d $FindBin::Bin;
|
||||
plan skip_all => 'FTS is disabled for this DBD::SQLite' if !grep /ENABLE_FTS3/, DBD::SQLite::compile_options();
|
||||
plan skip_all => 'FTS is disabled for this DBD::SQLite' unless has_fts();
|
||||
}
|
||||
use Test::FailWarnings;
|
||||
|
||||
my $dbfile = "tmp.sqlite";
|
||||
|
||||
|
@ -35,7 +34,7 @@ my @tests = (
|
|||
# The last set of tests tries to use enhanced query syntax. But when
|
||||
# SQLite is compiled without it's support, the word 'AND' is taken
|
||||
# literally.
|
||||
if (grep /ENABLE_FTS3_PARENTHESIS/, DBD::SQLite::compile_options()) {
|
||||
if (has_compile_option('ENABLE_FTS3_PARENTHESIS')) {
|
||||
push @tests, (
|
||||
['"use strict" AND "use warnings"' => qw[inc/Test/FailWarnings.pm
|
||||
lib/DBD/SQLite/Constants.pm
|
||||
|
|
Loading…
Add table
Reference in a new issue