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

1.1       misho       1: # 2008 July 11
                      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.
                     12: #
                     13: # This file implements tests to make sure SQLite does not crash or
                     14: # segfault if it sees a corrupt database file.  It specifically focuses
                     15: # on corrupt database headers.
                     16: #
                     17: # $Id: corruptA.test,v 1.1 2008/07/11 16:39:23 drh Exp $
                     18: 
                     19: set testdir [file dirname $argv0]
                     20: source $testdir/tester.tcl
                     21: 
                     22: # Do not use a codec for tests in this file, as the database file is
                     23: # manipulated directly using tcl scripts (using the [hexio_write] command).
                     24: #
                     25: do_not_use_codec
                     26: 
                     27: 
                     28: # Create a database to work with.
                     29: #
                     30: do_test corruptA-1.1 {
                     31:   execsql {
                     32:     CREATE TABLE t1(x);
                     33:     INSERT INTO t1(x) VALUES(1);
                     34:   }
                     35:   expr {[file size test.db]>=1024}
                     36: } {1}
                     37: integrity_check corruptA-1.2
                     38: 
                     39: # Corrupt the file header in various ways and make sure the corruption
                     40: # is detected when opening the database file.
                     41: #
                     42: db close
                     43: forcecopy test.db test.db-template
                     44: 
                     45: set unreadable_version 02
                     46: ifcapable wal { set unreadable_version 03 }
                     47: do_test corruptA-2.1 {
                     48:   forcecopy test.db-template test.db
                     49:   hexio_write test.db 19 $unreadable_version   ;# the read format number
                     50:   sqlite3 db test.db
                     51:   catchsql {SELECT * FROM t1}  
                     52: } {1 {file is encrypted or is not a database}}
                     53:  
                     54: do_test corruptA-2.2 {
                     55:   db close
                     56:   forcecopy test.db-template test.db
                     57:   hexio_write test.db 21 41   ;# max embedded payload fraction
                     58:   sqlite3 db test.db
                     59:   catchsql {SELECT * FROM t1}  
                     60: } {1 {file is encrypted or is not a database}}
                     61:  
                     62: do_test corruptA-2.3 {
                     63:   db close
                     64:   forcecopy test.db-template test.db
                     65:   hexio_write test.db 22 1f   ;# min embedded payload fraction
                     66:   sqlite3 db test.db
                     67:   catchsql {SELECT * FROM t1}  
                     68: } {1 {file is encrypted or is not a database}}
                     69:  
                     70: do_test corruptA-2.4 {
                     71:   db close
                     72:   forcecopy test.db-template test.db
                     73:   hexio_write test.db 23 21   ;# min leaf payload fraction
                     74:   sqlite3 db test.db
                     75:   catchsql {SELECT * FROM t1}  
                     76: } {1 {file is encrypted or is not a database}}
                     77:  
                     78: 
                     79: finish_test

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