mirror of
https://gitlab.com/cznic/sqlite.git
synced 2024-11-24 02:26:14 +00:00
114 lines
2.4 KiB
Plaintext
114 lines
2.4 KiB
Plaintext
# 2015 November 13
|
|
#
|
|
# 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 library. The
|
|
# focus of this file is testing the test_sqllog.c module.
|
|
#
|
|
|
|
set testdir [file dirname $argv0]
|
|
source $testdir/tester.tcl
|
|
set testprefix sqllog
|
|
|
|
ifcapable !sqllog {
|
|
finish_test
|
|
return
|
|
}
|
|
|
|
proc readfile {f} {
|
|
set fd [open $f]
|
|
set txt [read $fd]
|
|
close $fd
|
|
set txt
|
|
}
|
|
|
|
proc delete_all_sqllog_files {} {
|
|
forcedelete {*}[glob -nocomplain sqllog_*.sql]
|
|
forcedelete {*}[glob -nocomplain sqllog_*.db]
|
|
forcedelete {*}[glob -nocomplain sqllog_*.idx]
|
|
}
|
|
|
|
proc touch {f} {
|
|
set fd [open $f w+]
|
|
close $fd
|
|
}
|
|
|
|
db close
|
|
sqlite3_shutdown
|
|
set ::env(SQLITE_SQLLOG_DIR) [pwd]
|
|
|
|
delete_all_sqllog_files
|
|
|
|
sqlite3 db test.db
|
|
set a a
|
|
set b b
|
|
do_execsql_test 1.0 {
|
|
CREATE TABLE t1(x, y);
|
|
INSERT INTO t1 VALUES(1, 2);
|
|
INSERT INTO t1 VALUES($a, $b);
|
|
SELECT * FROM t1;
|
|
} {1 2 a b}
|
|
db close
|
|
|
|
do_test 1.1 {
|
|
readfile [lindex [glob sqllog_*.sql] 0]
|
|
} [string trimleft {
|
|
/-- Main database is '.*/sqllog_.*_0.db'
|
|
CREATE TABLE t1\(x, y\);; -- clock=0
|
|
INSERT INTO t1 VALUES\(1, 2\);; -- clock=1
|
|
INSERT INTO t1 VALUES\('a', 'b'\);; -- clock=2
|
|
SELECT . FROM t1;; -- clock=3
|
|
/}]
|
|
|
|
do_test 1.2 {
|
|
file size [lindex [glob sqllog_*_0.db] 0]
|
|
} 1024
|
|
|
|
#-------------------------------------------------------------------------
|
|
catch { db close }
|
|
sqlite3_shutdown
|
|
delete_all_sqllog_files
|
|
forcedelete test.db-sqllog
|
|
|
|
set ::env(SQLITE_SQLLOG_CONDITIONAL) 1
|
|
sqlite3 db test.db
|
|
do_execsql_test 2.1 {
|
|
INSERT INTO t1 VALUES(4, 5);
|
|
SELECT * FROM t1;
|
|
} {1 2 a b 4 5}
|
|
|
|
do_test 2.2 {
|
|
glob -nocomplain sqllog_*
|
|
} {}
|
|
|
|
db close
|
|
touch test.db-sqllog
|
|
sqlite3 db test.db
|
|
do_execsql_test 2.3 {
|
|
INSERT INTO t1 VALUES(6, 7);
|
|
SELECT * FROM t1;
|
|
} {1 2 a b 4 5 6 7}
|
|
db close
|
|
|
|
do_test 2.4 {
|
|
readfile [lindex [glob sqllog_*.sql] 0]
|
|
} [string trimleft {
|
|
/-- Main database is '.*/sqllog_.*_0.db'
|
|
INSERT INTO t1 VALUES\(6, 7\);; -- clock=0
|
|
SELECT . FROM t1;; -- clock=1
|
|
/}]
|
|
|
|
catch { db close }
|
|
sqlite3_shutdown
|
|
unset ::env(SQLITE_SQLLOG_DIR)
|
|
unset ::env(SQLITE_SQLLOG_CONDITIONAL)
|
|
sqlite3_config_sqllog
|
|
sqlite3_initialize
|
|
finish_test
|