diff options
Diffstat (limited to 'test/win32lock.test')
-rw-r--r-- | test/win32lock.test | 50 |
1 files changed, 48 insertions, 2 deletions
diff --git a/test/win32lock.test b/test/win32lock.test index 7241720..cff1ed3 100644 --- a/test/win32lock.test +++ b/test/win32lock.test @@ -24,7 +24,7 @@ db close sqlite3_shutdown test_sqlite3_log xLog proc xLog {error_code msg} { - lappend ::log $msg + lappend ::log $msg } sqlite3 db test.db db eval {PRAGMA mmap_size=0} @@ -128,7 +128,53 @@ while {1} { file_control_win32_av_retry db 10 25 sqlite3_test_control_pending_byte $old_pending_byte db close +forcedelete test.db + +sqlite3 db test.db +sqlite3 db2 test.db + +do_test win32lock-3.0 { + db eval { + CREATE TABLE t1(x); + INSERT INTO t1 VALUES(1); + INSERT INTO t1 VALUES(2); + INSERT INTO t1 VALUES(3); + } +} {} + +do_test win32lock-3.1 { + db eval { + BEGIN EXCLUSIVE; + INSERT INTO t1 VALUES(4); + } +} {} + +do_test win32lock-3.2 { + catchsql { + BEGIN EXCLUSIVE; + INSERT INTO t1 VALUES(5); + COMMIT; + } db2 +} {1 {database is locked}} + +do_test win32lock-3.3 { + db eval { + COMMIT; + } +} {} + +do_test win32lock-3.4 { + set handle [lindex [file_control_win32_set_handle db 0] end] + list [catchsql { + BEGIN EXCLUSIVE; + INSERT INTO t1 VALUES(6); + COMMIT; + }] [file_control_win32_set_handle db $handle] [sqlite3_extended_errcode db] +} {{1 {disk I/O error}} {0 0} SQLITE_IOERR_LOCK} + +db2 close +db close sqlite3_shutdown -test_sqlite3_log +test_sqlite3_log sqlite3_initialize finish_test |