blob: 53d8d871d8138622037b4607ad6aef439eccd080 [file] [log] [blame]
dand83f7ca2015-11-12 20:12:51 +00001# 2015 November 13
2#
3# The author disclaims copyright to this source code. In place of
4# a legal notice, here is a blessing:
5#
6# May you do good and not evil.
7# May you find forgiveness for yourself and forgive others.
8# May you share freely, never taking more than you give.
9#
10#***********************************************************************
11# This file implements regression tests for SQLite library. The
12# focus of this file is testing the test_sqllog.c module.
13#
14
15set testdir [file dirname $argv0]
16source $testdir/tester.tcl
17set testprefix sqllog
18
19ifcapable !sqllog {
20 finish_test
21 return
22}
23
24proc readfile {f} {
25 set fd [open $f]
26 set txt [read $fd]
27 close $fd
28 set txt
29}
30
31proc delete_all_sqllog_files {} {
32 forcedelete {*}[glob -nocomplain sqllog_*.sql]
33 forcedelete {*}[glob -nocomplain sqllog_*.db]
34 forcedelete {*}[glob -nocomplain sqllog_*.idx]
35}
36
37proc touch {f} {
38 set fd [open $f w+]
39 close $fd
40}
41
42db close
43sqlite3_shutdown
44set ::env(SQLITE_SQLLOG_DIR) [pwd]
45
46delete_all_sqllog_files
47
48sqlite3 db test.db
49set a a
50set b b
51do_execsql_test 1.0 {
52 CREATE TABLE t1(x, y);
53 INSERT INTO t1 VALUES(1, 2);
54 INSERT INTO t1 VALUES($a, $b);
55 SELECT * FROM t1;
56} {1 2 a b}
57db close
58
59do_test 1.1 {
60 readfile [lindex [glob sqllog_*.sql] 0]
61} [string trimleft {
62/-- Main database is '.*/sqllog_.*_0.db'
63CREATE TABLE t1\(x, y\);; -- clock=0
64INSERT INTO t1 VALUES\(1, 2\);; -- clock=1
65INSERT INTO t1 VALUES\('a', 'b'\);; -- clock=2
66SELECT . FROM t1;; -- clock=3
67/}]
68
69do_test 1.2 {
70 file size [lindex [glob sqllog_*_0.db] 0]
71} 1024
72
73#-------------------------------------------------------------------------
74catch { db close }
75sqlite3_shutdown
76delete_all_sqllog_files
77forcedelete test.db-sqllog
78
79set ::env(SQLITE_SQLLOG_CONDITIONAL) 1
80sqlite3 db test.db
81do_execsql_test 2.1 {
82 INSERT INTO t1 VALUES(4, 5);
83 SELECT * FROM t1;
84} {1 2 a b 4 5}
85
86do_test 2.2 {
87 glob -nocomplain sqllog_*
88} {}
89
90db close
91touch test.db-sqllog
92sqlite3 db test.db
93do_execsql_test 2.3 {
94 INSERT INTO t1 VALUES(6, 7);
95 SELECT * FROM t1;
96} {1 2 a b 4 5 6 7}
97db close
98
99do_test 2.4 {
100 readfile [lindex [glob sqllog_*.sql] 0]
101} [string trimleft {
102/-- Main database is '.*/sqllog_.*_0.db'
103INSERT INTO t1 VALUES\(6, 7\);; -- clock=0
104SELECT . FROM t1;; -- clock=1
105/}]
106
107catch { db close }
108sqlite3_shutdown
109unset ::env(SQLITE_SQLLOG_DIR)
110unset ::env(SQLITE_SQLLOG_CONDITIONAL)
111sqlite3_config_sqllog
112sqlite3_initialize
dand83f7ca2015-11-12 20:12:51 +0000113finish_test