| Index: third_party/sqlite/src/test/delete_db.test
|
| diff --git a/third_party/sqlite/src/test/delete_db.test b/third_party/sqlite/src/test/delete_db.test
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..09c44ff9f397ed6ca0fc529ea06c6b4d8b3cc01a
|
| --- /dev/null
|
| +++ b/third_party/sqlite/src/test/delete_db.test
|
| @@ -0,0 +1,217 @@
|
| +# 2016 September 10
|
| +#
|
| +# The author disclaims copyright to this source code. In place of
|
| +# a legal notice, here is a blessing:
|
| +#
|
| +# May you do good and not evil.
|
| +# May you find forgiveness for yourself and forgive others.
|
| +# May you share freely, never taking more than you give.
|
| +#
|
| +#***********************************************************************
|
| +# This file implements regression tests for SQLite library. The
|
| +# focus of this file is testing the code in test_delete.c (the
|
| +# sqlite3_delete_database() API).
|
| +#
|
| +
|
| +set testdir [file dirname $argv0]
|
| +source $testdir/tester.tcl
|
| +set testprefix delete_db
|
| +
|
| +proc delete_all {} {
|
| + foreach f [glob -nocomplain test2*] { file delete $f }
|
| + foreach f [glob -nocomplain test3*] { file delete $f }
|
| +}
|
| +
|
| +proc copydb {} {
|
| + foreach f [glob -nocomplain test3*] { file delete $f }
|
| + foreach f [glob -nocomplain test2*] {
|
| + set p [string range $f 5 end]
|
| + file copy "test2$p" "test3$p"
|
| + }
|
| +}
|
| +
|
| +proc files {} {
|
| + lsort [glob -nocomplain test3*]
|
| +}
|
| +
|
| +db close
|
| +delete_all
|
| +sqlite3 db test2.database
|
| +
|
| +#-------------------------------------------------------------------------
|
| +#
|
| +# 1.1: Journal files.
|
| +# 1.2: Wal files.
|
| +# 1.3: Multiplexor with journal file.
|
| +# 1.4: Multiplexor with wal file.
|
| +#
|
| +# 2.* are a copy of 1.* with the multiplexor enabled.
|
| +#
|
| +# 3.* tests errors.
|
| +#
|
| +
|
| +do_test 1.1.0 {
|
| + execsql {
|
| + CREATE TABLE t1(x, y);
|
| + BEGIN;
|
| + INSERT INTO t1 VALUES(1, 2);
|
| + }
|
| + copydb
|
| + files
|
| +} {test3.database test3.database-journal}
|
| +
|
| +do_test 1.1.1 {
|
| + sqlite3_delete_database test3.database
|
| + files
|
| +} {}
|
| +
|
| +do_test 1.2.0 {
|
| + execsql {
|
| + COMMIT;
|
| + PRAGMA journal_mode = wal;
|
| + INSERT INTO t1 VALUES(3, 4);
|
| + }
|
| + copydb
|
| + files
|
| +} {test3.database test3.database-shm test3.database-wal}
|
| +do_test 1.2.1 {
|
| + sqlite3_delete_database test3.database
|
| + files
|
| +} {}
|
| +
|
| +db close
|
| +delete_all
|
| +sqlite3_multiplex_initialize "" 0
|
| +sqlite3 db test2.database -vfs multiplex
|
| +sqlite3_multiplex_control db "main" chunk_size 32768
|
| +
|
| +do_test 1.3.0 {
|
| + execsql { PRAGMA auto_vacuum = 0; }
|
| + execsql {
|
| + CREATE TABLE x1(a, b);
|
| + WITH s(i) AS ( VALUES(1) UNION ALL SELECT i+1 FROM s WHERE i<1000 )
|
| + INSERT INTO x1 SELECT randomblob(100), randomblob(100) FROM s;
|
| + BEGIN;
|
| + UPDATE x1 SET a=randomblob(101)
|
| + }
|
| + copydb
|
| + files
|
| +} [list {*}{
|
| + test3.database test3.database-journal test3.database001
|
| + test3.database002 test3.database003
|
| +}]
|
| +do_test 1.3.1 {
|
| + sqlite3_delete_database test3.database
|
| + files
|
| +} {}
|
| +
|
| +
|
| +do_test 1.4.0 {
|
| + execsql {
|
| + COMMIT;
|
| + PRAGMA journal_mode = wal;
|
| + UPDATE x1 SET a=randomblob(102)
|
| + }
|
| + copydb
|
| + files
|
| +} [list {*}{
|
| + test3.database test3.database-shm test3.database-wal test3.database001
|
| + test3.database002 test3.database003
|
| +}]
|
| +do_test 1.4.1 {
|
| + sqlite3_delete_database test3.database
|
| + files
|
| +} {}
|
| +
|
| +
|
| +ifcapable 8_3_names {
|
| + db close
|
| + delete_all
|
| + sqlite3 db file:test2.db?8_3_names=1 -uri 1
|
| +
|
| + do_test 2.1.0 {
|
| + execsql {
|
| + CREATE TABLE t1(x, y);
|
| + BEGIN;
|
| + INSERT INTO t1 VALUES(1, 2);
|
| + }
|
| + copydb
|
| + files
|
| + } {test3.db test3.nal}
|
| +
|
| + do_test 2.1.1 {
|
| + sqlite3_delete_database test3.db
|
| + files
|
| + } {}
|
| +
|
| + do_test 2.2.0 {
|
| + execsql {
|
| + COMMIT;
|
| + PRAGMA journal_mode = wal;
|
| + INSERT INTO t1 VALUES(3, 4);
|
| + }
|
| + copydb
|
| + files
|
| + } {test3.db test3.shm test3.wal}
|
| + do_test 2.2.1 {
|
| + sqlite3_delete_database test3.db
|
| + files
|
| + } {}
|
| +
|
| +
|
| + db close
|
| + delete_all
|
| + sqlite3_multiplex_initialize "" 0
|
| + sqlite3 db file:test2.db?8_3_names=1 -uri 1 -vfs multiplex
|
| + sqlite3_multiplex_control db "main" chunk_size 32768
|
| +
|
| + do_test 2.3.0 {
|
| + execsql { PRAGMA auto_vacuum = 0; }
|
| + execsql {
|
| + CREATE TABLE x1(a, b);
|
| + WITH s(i) AS ( VALUES(1) UNION ALL SELECT i+1 FROM s WHERE i<1000 )
|
| + INSERT INTO x1 SELECT randomblob(100), randomblob(100) FROM s;
|
| + BEGIN;
|
| + UPDATE x1 SET a=randomblob(101)
|
| + }
|
| + copydb
|
| + files
|
| + } [list {*}{
|
| + test3.001 test3.002 test3.003 test3.db test3.nal
|
| + }]
|
| + do_test 2.3.1 {
|
| + sqlite3_delete_database test3.db
|
| + files
|
| + } {}
|
| +
|
| +
|
| + do_test 2.4.0 {
|
| + execsql {
|
| + COMMIT;
|
| + PRAGMA journal_mode = wal;
|
| + UPDATE x1 SET a=randomblob(102)
|
| + }
|
| + copydb
|
| + files
|
| + } [list {*}{
|
| + test3.001 test3.002 test3.003 test3.db test3.db-shm test3.wal
|
| + }]
|
| + do_test 2.4.1 {
|
| + sqlite3_delete_database test3.db
|
| + files
|
| + } {}
|
| +}
|
| +
|
| +db close
|
| +delete_all
|
| +sqlite3_multiplex_shutdown
|
| +
|
| +do_test 3.0 {
|
| + file mkdir dir2.db
|
| + sqlite3_delete_database dir2.db
|
| +} {SQLITE_ERROR}
|
| +do_test 3.1 {
|
| + sqlite3_delete_database dir2.db/test.db
|
| +} {SQLITE_OK}
|
| +
|
| +finish_test
|
|
|