modernc.org/cc@v1.0.1/v2/testdata/_sqlite/test/delete_db.test (about) 1 # 2016 September 10 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 code in test_delete.c (the 13 # sqlite3_delete_database() API). 14 # 15 16 set testdir [file dirname $argv0] 17 source $testdir/tester.tcl 18 set testprefix delete_db 19 20 proc delete_all {} { 21 foreach f [glob -nocomplain test2*] { file delete $f } 22 foreach f [glob -nocomplain test3*] { file delete $f } 23 } 24 25 proc copydb {} { 26 foreach f [glob -nocomplain test3*] { file delete $f } 27 foreach f [glob -nocomplain test2*] { 28 set p [string range $f 5 end] 29 file copy "test2$p" "test3$p" 30 } 31 } 32 33 proc files {} { 34 lsort [glob -nocomplain test3*] 35 } 36 37 db close 38 delete_all 39 sqlite3 db test2.database 40 41 #------------------------------------------------------------------------- 42 # 43 # 1.1: Journal files. 44 # 1.2: Wal files. 45 # 1.3: Multiplexor with journal file. 46 # 1.4: Multiplexor with wal file. 47 # 48 # 2.* are a copy of 1.* with the multiplexor enabled. 49 # 50 # 3.* tests errors. 51 # 52 53 do_test 1.1.0 { 54 execsql { 55 CREATE TABLE t1(x, y); 56 BEGIN; 57 INSERT INTO t1 VALUES(1, 2); 58 } 59 copydb 60 files 61 } {test3.database test3.database-journal} 62 63 do_test 1.1.1 { 64 sqlite3_delete_database test3.database 65 files 66 } {} 67 68 do_test 1.2.0 { 69 execsql { 70 COMMIT; 71 PRAGMA journal_mode = wal; 72 INSERT INTO t1 VALUES(3, 4); 73 } 74 copydb 75 files 76 } {test3.database test3.database-shm test3.database-wal} 77 do_test 1.2.1 { 78 sqlite3_delete_database test3.database 79 files 80 } {} 81 82 db close 83 delete_all 84 sqlite3_multiplex_initialize "" 0 85 sqlite3 db test2.database -vfs multiplex 86 sqlite3_multiplex_control db "main" chunk_size 32768 87 88 do_test 1.3.0 { 89 execsql { PRAGMA auto_vacuum = 0; } 90 execsql { 91 CREATE TABLE x1(a, b); 92 WITH s(i) AS ( VALUES(1) UNION ALL SELECT i+1 FROM s WHERE i<1000 ) 93 INSERT INTO x1 SELECT randomblob(100), randomblob(100) FROM s; 94 BEGIN; 95 UPDATE x1 SET a=randomblob(101) 96 } 97 copydb 98 files 99 } [list {*}{ 100 test3.database test3.database-journal test3.database001 101 test3.database002 test3.database003 102 }] 103 do_test 1.3.1 { 104 sqlite3_delete_database test3.database 105 files 106 } {} 107 108 109 do_test 1.4.0 { 110 execsql { 111 COMMIT; 112 PRAGMA journal_mode = wal; 113 UPDATE x1 SET a=randomblob(102) 114 } 115 copydb 116 files 117 } [list {*}{ 118 test3.database test3.database-shm test3.database-wal test3.database001 119 test3.database002 test3.database003 120 }] 121 do_test 1.4.1 { 122 sqlite3_delete_database test3.database 123 files 124 } {} 125 126 127 ifcapable 8_3_names { 128 db close 129 delete_all 130 sqlite3 db file:test2.db?8_3_names=1 -uri 1 131 132 do_test 2.1.0 { 133 execsql { 134 CREATE TABLE t1(x, y); 135 BEGIN; 136 INSERT INTO t1 VALUES(1, 2); 137 } 138 copydb 139 files 140 } {test3.db test3.nal} 141 142 do_test 2.1.1 { 143 sqlite3_delete_database test3.db 144 files 145 } {} 146 147 do_test 2.2.0 { 148 execsql { 149 COMMIT; 150 PRAGMA journal_mode = wal; 151 INSERT INTO t1 VALUES(3, 4); 152 } 153 copydb 154 files 155 } {test3.db test3.shm test3.wal} 156 do_test 2.2.1 { 157 sqlite3_delete_database test3.db 158 files 159 } {} 160 161 162 db close 163 delete_all 164 sqlite3_multiplex_initialize "" 0 165 sqlite3 db file:test2.db?8_3_names=1 -uri 1 -vfs multiplex 166 sqlite3_multiplex_control db "main" chunk_size 32768 167 168 do_test 2.3.0 { 169 execsql { PRAGMA auto_vacuum = 0; } 170 execsql { 171 CREATE TABLE x1(a, b); 172 WITH s(i) AS ( VALUES(1) UNION ALL SELECT i+1 FROM s WHERE i<1000 ) 173 INSERT INTO x1 SELECT randomblob(100), randomblob(100) FROM s; 174 BEGIN; 175 UPDATE x1 SET a=randomblob(101) 176 } 177 copydb 178 files 179 } [list {*}{ 180 test3.001 test3.002 test3.003 test3.db test3.nal 181 }] 182 do_test 2.3.1 { 183 sqlite3_delete_database test3.db 184 files 185 } {} 186 187 188 do_test 2.4.0 { 189 execsql { 190 COMMIT; 191 PRAGMA journal_mode = wal; 192 UPDATE x1 SET a=randomblob(102) 193 } 194 copydb 195 files 196 } [list {*}{ 197 test3.001 test3.002 test3.003 test3.db test3.db-shm test3.wal 198 }] 199 do_test 2.4.1 { 200 sqlite3_delete_database test3.db 201 files 202 } {} 203 } 204 205 db close 206 delete_all 207 sqlite3_multiplex_shutdown 208 209 do_test 3.0 { 210 file mkdir dir2.db 211 sqlite3_delete_database dir2.db 212 } {SQLITE_ERROR} 213 do_test 3.1 { 214 sqlite3_delete_database dir2.db/test.db 215 } {SQLITE_OK} 216 217 finish_test