Annotation of embedaddon/sqlite3/test/wal4.test, revision 1.1.1.1

1.1       misho       1: # 2010 July 1
                      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: # Verify that an empty database and a non-empty WAL file do not
                     12: # result in database corruption
                     13: #
                     14: 
                     15: set testdir [file dirname $argv0]
                     16: source $testdir/tester.tcl
                     17: source $testdir/malloc_common.tcl
                     18: ifcapable !wal {finish_test ; return }
                     19: 
                     20: do_test wal4-1.1 {
                     21:   execsql {
                     22:     PRAGMA journal_mode=WAL;
                     23:     CREATE TABLE t1(x);
                     24:     INSERT INTO t1 VALUES(1);
                     25:     INSERT INTO t1 VALUES(2);
                     26:     SELECT x FROM t1 ORDER BY x;
                     27:   }
                     28: } {wal 1 2}
                     29: 
                     30: do_test wal4-1.2 {
                     31:   # Save a copy of the file-system containing the wal and wal-index files 
                     32:   # only (no database file).
                     33:   faultsim_save_and_close
                     34:   forcedelete sv_test.db
                     35: } {}
                     36: 
                     37: do_test wal4-1.3 {
                     38:   faultsim_restore_and_reopen
                     39:   catchsql { SELECT * FROM t1 }
                     40: } {1 {no such table: t1}}
                     41: 
                     42: do_faultsim_test wal4-2 -prep {
                     43:   faultsim_restore_and_reopen
                     44: } -body {
                     45:   execsql { SELECT name FROM sqlite_master }
                     46: } -test {
                     47:   # Result should be zero rows (empty db file).
                     48:   #
                     49:   faultsim_test_result {0 {}}
                     50: 
                     51:   # If the SELECT finished successfully, the WAL file should have been
                     52:   # deleted. In no case should the database file have been written, so
                     53:   # it should still be zero bytes in size regardless of whether or not
                     54:   # a fault was injected. Test these assertions:
                     55:   #
                     56:   if { $testrc==0 && [file exists test.db-wal] } { 
                     57:     error "Wal file was not deleted"
                     58:   }
                     59:   if { [file size test.db]!=0 } { 
                     60:     error "Db file grew to [file size test.db] bytes"
                     61:   }
                     62: }
                     63: 
                     64: finish_test

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>