github.com/jdgcs/sqlite3@v1.12.1-0.20210908114423-bc5f96e4dd51/testdata/tcl/sqllog.test (about)

     1  # 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  
    15  set testdir [file dirname $argv0]
    16  source $testdir/tester.tcl
    17  set testprefix sqllog
    18  
    19  ifcapable !sqllog {
    20    finish_test
    21    return
    22  }
    23  
    24  proc readfile {f} {
    25    set fd [open $f]
    26    set txt [read $fd]
    27    close $fd
    28    set txt
    29  }
    30  
    31  proc delete_all_sqllog_files {} {
    32    forcedelete {*}[glob -nocomplain sqllog_*.sql]
    33    forcedelete {*}[glob -nocomplain sqllog_*.db]
    34    forcedelete {*}[glob -nocomplain sqllog_*.idx]
    35  }
    36  
    37  proc touch {f} {
    38    set fd [open $f w+]
    39    close $fd
    40  }
    41  
    42  db close
    43  sqlite3_shutdown
    44  set ::env(SQLITE_SQLLOG_DIR) [pwd]
    45  
    46  delete_all_sqllog_files
    47  
    48  sqlite3 db test.db
    49  set a a
    50  set b b
    51  do_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}
    57  db close
    58  
    59  do_test 1.1 {
    60    readfile [lindex [glob sqllog_*.sql] 0]
    61  } [string trimleft {
    62  /-- Main database is '.*/sqllog_.*_0.db'
    63  CREATE TABLE t1\(x, y\);; -- clock=0
    64  INSERT INTO t1 VALUES\(1, 2\);; -- clock=1
    65  INSERT INTO t1 VALUES\('a', 'b'\);; -- clock=2
    66  SELECT . FROM t1;; -- clock=3
    67  /}]
    68  
    69  do_test 1.2 {
    70    file size [lindex [glob sqllog_*_0.db] 0]
    71  } 1024
    72  
    73  #-------------------------------------------------------------------------
    74  catch { db close }
    75  sqlite3_shutdown
    76  delete_all_sqllog_files
    77  forcedelete test.db-sqllog
    78  
    79  set ::env(SQLITE_SQLLOG_CONDITIONAL) 1
    80  sqlite3 db test.db
    81  do_execsql_test 2.1 {
    82    INSERT INTO t1 VALUES(4, 5);
    83    SELECT * FROM t1;
    84  } {1 2 a b 4 5}
    85  
    86  do_test 2.2 {
    87    glob -nocomplain sqllog_*
    88  } {}
    89  
    90  db close
    91  touch test.db-sqllog
    92  sqlite3 db test.db
    93  do_execsql_test 2.3 {
    94    INSERT INTO t1 VALUES(6, 7);
    95    SELECT * FROM t1;
    96  } {1 2 a b 4 5 6 7}
    97  db close
    98  
    99  do_test 2.4 {
   100    readfile [lindex [glob sqllog_*.sql] 0]
   101  } [string trimleft {
   102  /-- Main database is '.*/sqllog_.*_0.db'
   103  INSERT INTO t1 VALUES\(6, 7\);; -- clock=0
   104  SELECT . FROM t1;; -- clock=1
   105  /}]
   106  
   107  catch { db close }
   108  sqlite3_shutdown
   109  unset ::env(SQLITE_SQLLOG_DIR)
   110  unset ::env(SQLITE_SQLLOG_CONDITIONAL)
   111  sqlite3_config_sqllog
   112  sqlite3_initialize
   113  finish_test