X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F752sqlite.t;h=d9a8e5d7e9470822e6f93296cbc3533afb9e35b4;hb=bdb4d9404c947de09d19c6af830518b5c9801094;hp=1a511f25d404593d4ea6da958f08d86c4bcbc966;hpb=445bc0cd67d1176df63280ecbb415cd768a7c6df;p=dbsrgits%2FDBIx-Class.git diff --git a/t/752sqlite.t b/t/752sqlite.t index 1a511f2..d9a8e5d 100644 --- a/t/752sqlite.t +++ b/t/752sqlite.t @@ -9,6 +9,7 @@ use Config; use lib qw(t/lib); use DBICTest; +use DBIx::Class::_Util 'modver_gt_or_eq'; # savepoints test { @@ -48,6 +49,14 @@ use DBICTest; # # As per https://metacpan.org/source/ADAMK/DBD-SQLite-1.37/lib/DBD/SQLite.pm#L921 # SQLite does *not* try to synchronize +# +# However DBD::SQLite 1.38_02 seems to fix this, with an accompanying test: +# https://metacpan.org/source/ADAMK/DBD-SQLite-1.38_02/t/54_literal_txn.t + +my $lit_txn_todo = modver_gt_or_eq('DBD::SQLite', '1.38_02') + ? undef + : "DBD::SQLite before 1.38_02 is retarded wrt detecting literal BEGIN/COMMIT statements" +; for my $prefix_comment (qw/Begin_only Commit_only Begin_and_Commit/) { note "Testing with comment prefixes on $prefix_comment"; @@ -56,7 +65,7 @@ for my $prefix_comment (qw/Begin_only Commit_only Begin_and_Commit/) { # perhaps when (if ever) DBD::SQLite gets fixed, # we can do something extra here local $SIG{__WARN__} = sub { warn @_ if $_[0] !~ /Internal transaction state .+? does not seem to match/ } - unless $ENV{TEST_VERBOSE}; + if ( $lit_txn_todo && !$ENV{TEST_VERBOSE} ); my ($c_begin, $c_commit) = map { $prefix_comment =~ $_ ? 1 : 0 } (qr/Begin/, qr/Commit/); @@ -86,7 +95,7 @@ DDL ); ok ($schema->storage->connected, 'Still connected'); { - local $TODO = 'SQLite is retarded wrt detecting BEGIN' if $c_begin; + local $TODO = $lit_txn_todo if $c_begin; ok (! $schema->storage->_dbh->{AutoCommit}, "DBD aware of txn begin with comments on $prefix_comment"); } @@ -96,7 +105,7 @@ DDL ); ok ($schema->storage->connected, 'Still connected'); { - local $TODO = 'SQLite is retarded wrt detecting COMMIT' if $c_commit and ! $c_begin; + local $TODO = $lit_txn_todo if $c_commit and ! $c_begin; ok ($schema->storage->_dbh->{AutoCommit}, "DBD aware txn ended with comments on $prefix_comment"); } @@ -104,7 +113,7 @@ DDL { # this never worked in the 1st place - local $TODO = 'SQLite is retarded wrt detecting COMMIT' if ! $c_begin and $c_commit; + local $TODO = $lit_txn_todo if ! $c_begin and $c_commit; # odd argument passing, because such nested crefs leak on 5.8 lives_ok { @@ -143,7 +152,7 @@ $schema->storage->dbh_do(sub { # range is -(2**63) .. 2**63 - 1 SKIP: { skip 'This perl does not seem to have 64bit int support - DBI roundtrip of large int will fail with DBD::SQLite < 1.37', 1 - if ($Config{ivsize} < 8 and ! eval { DBD::SQLite->VERSION(1.37); 1 }); + if ($Config{ivsize} < 8 and ! modver_gt_or_eq('DBD::SQLite', '1.37') ); for my $bi (qw/ -9223372036854775808