17be2cce3Sdanielk1977# 2007 September 5 27be2cce3Sdanielk1977# 37be2cce3Sdanielk1977# The author disclaims copyright to this source code. In place of 47be2cce3Sdanielk1977# a legal notice, here is a blessing: 57be2cce3Sdanielk1977# 67be2cce3Sdanielk1977# May you do good and not evil. 77be2cce3Sdanielk1977# May you find forgiveness for yourself and forgive others. 87be2cce3Sdanielk1977# May you share freely, never taking more than you give. 97be2cce3Sdanielk1977# 107be2cce3Sdanielk1977#*********************************************************************** 117be2cce3Sdanielk1977# 127be2cce3Sdanielk1977# The focus of this file is testing the code in test_async.c. 137be2cce3Sdanielk1977# Specifically, it tests that the xFullPathname() method of 147be2cce3Sdanielk1977# of the asynchronous vfs works correctly. 157be2cce3Sdanielk1977# 166f050aa2Sdanielk1977# $Id: async3.test,v 1.5 2009/04/25 08:39:15 danielk1977 Exp $ 177be2cce3Sdanielk1977 187be2cce3Sdanielk1977set testdir [file dirname $argv0] 197be2cce3Sdanielk1977source $testdir/tester.tcl 207be2cce3Sdanielk1977 216f050aa2Sdanielk1977if { [info commands sqlite3async_initialize]=="" } { 227be2cce3Sdanielk1977 # The async logic is not built into this system 237be2cce3Sdanielk1977 puts "Skipping async3 tests: not compiled with required features" 247be2cce3Sdanielk1977 finish_test 257be2cce3Sdanielk1977 return 267be2cce3Sdanielk1977} 277be2cce3Sdanielk1977 287be2cce3Sdanielk1977db close 296f050aa2Sdanielk1977sqlite3async_initialize "" 1 3017561adcSdrh#set sqlite3async_trace 1 317be2cce3Sdanielk1977sqlite3async_start 327be2cce3Sdanielk1977 337be2cce3Sdanielk1977set paths { 347be2cce3Sdanielk1977 chocolate/banana/vanilla/file.db 357be2cce3Sdanielk1977 chocolate//banana/vanilla/file.db 367be2cce3Sdanielk1977 chocolate/./banana//vanilla/file.db 377be2cce3Sdanielk1977 chocolate/banana/./vanilla/file.db 387be2cce3Sdanielk1977 chocolate/banana/../banana/vanilla/file.db 397be2cce3Sdanielk1977 chocolate/banana/./vanilla/extra_bit/../file.db 407be2cce3Sdanielk1977} 417be2cce3Sdanielk1977 427be2cce3Sdanielk1977do_test async3-1.0 { 437be2cce3Sdanielk1977 file mkdir [file join chocolate banana vanilla] 44*fda06befSmistachkin forcedelete chocolate/banana/vanilla/file.db 45*fda06befSmistachkin forcedelete chocolate/banana/vanilla/file.db-journal 467be2cce3Sdanielk1977} {} 477a4252b2Sdanielk1977 487be2cce3Sdanielk1977do_test async3-1.1 { 497be2cce3Sdanielk1977 sqlite3 db chocolate/banana/vanilla/file.db 507be2cce3Sdanielk1977 execsql { 517be2cce3Sdanielk1977 CREATE TABLE abc(a, b, c); 527be2cce3Sdanielk1977 BEGIN; 537be2cce3Sdanielk1977 INSERT INTO abc VALUES(1, 2, 3); 547be2cce3Sdanielk1977 } 557be2cce3Sdanielk1977} {} 567be2cce3Sdanielk1977 577be2cce3Sdanielk1977set N 2 587be2cce3Sdanielk1977foreach p $paths { 597be2cce3Sdanielk1977 sqlite3 db2 $p 607be2cce3Sdanielk1977 do_test async3-1.$N.1 { 617be2cce3Sdanielk1977 execsql {SELECT * FROM abc} db2 627be2cce3Sdanielk1977 } {} 637be2cce3Sdanielk1977 do_test async3-1.$N.2 { 647be2cce3Sdanielk1977 catchsql {INSERT INTO abc VALUES(4, 5, 6)} db2 657be2cce3Sdanielk1977 } {1 {database is locked}} 667be2cce3Sdanielk1977 db2 close 677be2cce3Sdanielk1977 incr N 687be2cce3Sdanielk1977} 697be2cce3Sdanielk1977 707be2cce3Sdanielk1977db close 7117561adcSdrh 726f050aa2Sdanielk1977sqlite3async_control halt idle 737be2cce3Sdanielk1977sqlite3async_wait 746f050aa2Sdanielk1977sqlite3async_control halt never 756f050aa2Sdanielk1977sqlite3async_shutdown 767be2cce3Sdanielk1977finish_test 77