Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(212)

Side by Side Diff: third_party/sqlite/src/test/corruptA.test

Issue 901033002: Import SQLite 3.8.7.4. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Chromium changes to support SQLite 3.8.7.4. Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 # 2008 July 11 1 # 2008 July 11
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. It specifically focuses 14 # segfault if it sees a corrupt database file. It specifically focuses
15 # on corrupt database headers. 15 # on corrupt database headers.
16 # 16 #
17 # $Id: corruptA.test,v 1.1 2008/07/11 16:39:23 drh Exp $ 17 # $Id: corruptA.test,v 1.1 2008/07/11 16:39:23 drh 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 # Do not use a codec for tests in this file, as the database file is 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). 23 # manipulated directly using tcl scripts (using the [hexio_write] command).
24 # 24 #
25 do_not_use_codec 25 do_not_use_codec
26 26
27 # These tests deal with corrupt database files
28 #
29 database_may_be_corrupt
30
27 31
28 # Create a database to work with. 32 # Create a database to work with.
29 # 33 #
30 do_test corruptA-1.1 { 34 do_test corruptA-1.1 {
31 execsql { 35 execsql {
32 CREATE TABLE t1(x); 36 CREATE TABLE t1(x);
33 INSERT INTO t1(x) VALUES(1); 37 INSERT INTO t1(x) VALUES(1);
34 } 38 }
35 expr {[file size test.db]>=1024} 39 expr {[file size test.db]>=1024}
36 } {1} 40 } {1}
37 integrity_check corruptA-1.2 41 integrity_check corruptA-1.2
38 42
39 # Corrupt the file header in various ways and make sure the corruption 43 # Corrupt the file header in various ways and make sure the corruption
40 # is detected when opening the database file. 44 # is detected when opening the database file.
41 # 45 #
42 db close 46 db close
43 file copy -force test.db test.db-template 47 forcecopy test.db test.db-template
44 48
45 set unreadable_version 02 49 set unreadable_version 02
46 ifcapable wal { set unreadable_version 03 } 50 ifcapable wal { set unreadable_version 03 }
47 do_test corruptA-2.1 { 51 do_test corruptA-2.1 {
48 file copy -force test.db-template test.db 52 forcecopy test.db-template test.db
49 hexio_write test.db 19 $unreadable_version ;# the read format number 53 hexio_write test.db 19 $unreadable_version ;# the read format number
50 sqlite3 db test.db 54 sqlite3 db test.db
51 catchsql {SELECT * FROM t1} 55 catchsql {SELECT * FROM t1}
52 } {1 {file is encrypted or is not a database}} 56 } {1 {file is encrypted or is not a database}}
53 57
54 do_test corruptA-2.2 { 58 do_test corruptA-2.2 {
55 db close 59 db close
56 file copy -force test.db-template test.db 60 forcecopy test.db-template test.db
57 hexio_write test.db 21 41 ;# max embedded payload fraction 61 hexio_write test.db 21 41 ;# max embedded payload fraction
58 sqlite3 db test.db 62 sqlite3 db test.db
59 catchsql {SELECT * FROM t1} 63 catchsql {SELECT * FROM t1}
60 } {1 {file is encrypted or is not a database}} 64 } {1 {file is encrypted or is not a database}}
61 65
62 do_test corruptA-2.3 { 66 do_test corruptA-2.3 {
63 db close 67 db close
64 file copy -force test.db-template test.db 68 forcecopy test.db-template test.db
65 hexio_write test.db 22 1f ;# min embedded payload fraction 69 hexio_write test.db 22 1f ;# min embedded payload fraction
66 sqlite3 db test.db 70 sqlite3 db test.db
67 catchsql {SELECT * FROM t1} 71 catchsql {SELECT * FROM t1}
68 } {1 {file is encrypted or is not a database}} 72 } {1 {file is encrypted or is not a database}}
69 73
70 do_test corruptA-2.4 { 74 do_test corruptA-2.4 {
71 db close 75 db close
72 file copy -force test.db-template test.db 76 forcecopy test.db-template test.db
73 hexio_write test.db 23 21 ;# min leaf payload fraction 77 hexio_write test.db 23 21 ;# min leaf payload fraction
74 sqlite3 db test.db 78 sqlite3 db test.db
75 catchsql {SELECT * FROM t1} 79 catchsql {SELECT * FROM t1}
76 } {1 {file is encrypted or is not a database}} 80 } {1 {file is encrypted or is not a database}}
77 81
78 82
79 finish_test 83 finish_test
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698