OLD | NEW |
1 # 2008 Jan 22 | 1 # 2008 Jan 22 |
2 # | 2 # |
3 # The author disclaims copyright to this source code. In place of | 3 # The author disclaims copyright to this source code. In place of |
4 # a legal notice, here is a blessing: | 4 # a legal notice, here is a blessing: |
5 # | 5 # |
6 # May you do good and not evil. | 6 # May you do good and not evil. |
7 # May you find forgiveness for yourself and forgive others. | 7 # May you find forgiveness for yourself and forgive others. |
8 # May you share freely, never taking more than you give. | 8 # May you share freely, never taking more than you give. |
9 # | 9 # |
10 #*********************************************************************** | 10 #*********************************************************************** |
11 # This file implements regression tests for SQLite library. | 11 # This file implements regression tests for SQLite library. |
12 # | 12 # |
13 # This file implements tests to make sure SQLite does not crash or | 13 # This file implements tests to make sure SQLite does not crash or |
14 # segfault if it sees a corrupt database file. Checks for | 14 # segfault if it sees a corrupt database file. Checks for |
15 # malformed schema. | 15 # malformed schema. |
16 # | 16 # |
17 # $Id: corrupt5.test,v 1.3 2009/06/04 02:47:04 shane Exp $ | 17 # $Id: corrupt5.test,v 1.3 2009/06/04 02:47:04 shane Exp $ |
18 | 18 |
19 set testdir [file dirname $argv0] | 19 set testdir [file dirname $argv0] |
20 source $testdir/tester.tcl | 20 source $testdir/tester.tcl |
21 | 21 |
| 22 # These tests deal with corrupt database files |
| 23 # |
| 24 database_may_be_corrupt |
| 25 |
22 # We must have the page_size pragma for these tests to work. | 26 # We must have the page_size pragma for these tests to work. |
23 # | 27 # |
24 ifcapable !pager_pragmas { | 28 ifcapable !pager_pragmas { |
25 finish_test | 29 finish_test |
26 return | 30 return |
27 } | 31 } |
28 | 32 |
29 # Create a database with a freelist containing at least two pages. | 33 # Create a database with a freelist containing at least two pages. |
30 # | 34 # |
31 do_test corrupt5-1.1 { | 35 do_test corrupt5-1.1 { |
32 execsql { | 36 execsql { |
33 CREATE TABLE t1(a,b,c); | 37 CREATE TABLE t1(a,b,c); |
34 CREATE INDEX i1 ON t1(a,b); | 38 CREATE INDEX i1 ON t1(a,b); |
35 PRAGMA writable_schema=ON; | 39 PRAGMA writable_schema=ON; |
36 UPDATE sqlite_master SET name=NULL, sql=NULL WHERE name='i1'; | 40 UPDATE sqlite_master SET name=NULL, sql=NULL WHERE name='i1'; |
37 } | 41 } |
38 db close | 42 db close |
39 sqlite3 db test.db | 43 sqlite3 db test.db |
40 catchsql { | 44 catchsql { |
41 SELECT * FROM t1 | 45 SELECT * FROM t1 |
42 } | 46 } |
43 } {1 {malformed database schema (?)}} | 47 } {1 {malformed database schema (?)}} |
44 | 48 |
45 finish_test | 49 finish_test |
OLD | NEW |