1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- # 2011 July 11
- #
- # The author disclaims copyright to this source code. In place of
- # a legal notice, here is a blessing:
- #
- # May you do good and not evil.
- # May you find forgiveness for yourself and forgive others.
- # May you share freely, never taking more than you give.
- #
- #***********************************************************************
- # This file implements regression tests for SQLite sessions extension.
- # Specifically, it tests that sessions work when the database is modified
- # using incremental blob handles.
- #
- if {![info exists testdir]} {
- set testdir [file join [file dirname [info script]] .. .. test]
- }
- source [file join [file dirname [info script]] session_common.tcl]
- source $testdir/tester.tcl
- ifcapable !session {finish_test; return}
- ifcapable !incrblob {finish_test; return}
- set testprefix session6
- proc do_then_apply_tcl {tcl {dbname main}} {
- proc xConflict args { return "OMIT" }
- set rc [catch {
- sqlite3session S db $dbname
- db eval "SELECT name FROM $dbname.sqlite_master WHERE type = 'table'" {
- S attach $name
- }
- eval $tcl
- sqlite3changeset_apply db2 [S changeset] xConflict
- } msg]
- catch { S delete }
- if {$rc} {error $msg}
- }
- test_sqlite3_log x
- proc x {args} {puts $args}
- forcedelete test.db2
- sqlite3 db2 test.db2
- do_common_sql {
- CREATE TABLE t1(a PRIMARY KEY, b);
- CREATE TABLE t2(c PRIMARY KEY, d);
- }
- # Test a blob update.
- #
- do_test 1.1 {
- do_then_apply_tcl {
- db eval { INSERT INTO t1 VALUES(1, 'helloworld') }
- db eval { INSERT INTO t2 VALUES(2, 'onetwothree') }
- }
- compare_db db db2
- } {}
- do_test 1.2 {
- do_then_apply_tcl {
- set fd [db incrblob t1 b 1]
- puts -nonewline $fd 1234567890
- close $fd
- }
- compare_db db db2
- } {}
- # Test an attached database.
- #
- do_test 2.1 {
- forcedelete test.db3
- file copy test.db2 test.db3
- execsql { ATTACH 'test.db3' AS aux; }
- do_then_apply_tcl {
- set fd [db incrblob aux t2 d 1]
- puts -nonewline $fd fourfivesix
- close $fd
- } aux
- sqlite3 db3 test.db3
- compare_db db2 db3
- } {}
- db3 close
- db2 close
- finish_test
|