diff options
author | drh <drh@noemail.net> | 2008-07-07 13:31:58 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2008-07-07 13:31:58 +0000 |
commit | a2820970c5668dfae2c5bd326726f70a149d5f6e (patch) | |
tree | 60bee9474cb4e3ddc8c7458bcc9a1604c47fc05f | |
parent | 6aa1edce9baf531d9cbc3b14d38b51858c0e9a82 (diff) | |
download | sqlite-a2820970c5668dfae2c5bd326726f70a149d5f6e.tar.gz sqlite-a2820970c5668dfae2c5bd326726f70a149d5f6e.zip |
Add the vfs_unregister_all and vfs_reregister_all test commands. Use them
to test the sqlite3_sleep() interface when no VFSes are registered. (CVS 5348)
FossilOrigin-Name: 024d439299478062b6efdb63adce85b251af18ce
-rw-r--r-- | manifest | 14 | ||||
-rw-r--r-- | manifest.uuid | 2 | ||||
-rw-r--r-- | src/test1.c | 57 | ||||
-rw-r--r-- | test/capi3.test | 11 |
4 files changed, 74 insertions, 10 deletions
@@ -1,5 +1,5 @@ -C Fix\sa\scomment\sin\salter.c.\s\sNo\schanges\sto\scode.\s(CVS\s5347) -D 2008-07-07T12:44:58 +C Add\sthe\svfs_unregister_all\sand\svfs_reregister_all\stest\scommands.\s\sUse\sthem\nto\stest\sthe\ssqlite3_sleep()\sinterface\swhen\sno\sVFSes\sare\sregistered.\s(CVS\s5348) +D 2008-07-07T13:31:59 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0 F Makefile.in 325dfac0a0dd1cb4d975f1ace6453157892e6042 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654 @@ -149,7 +149,7 @@ F src/sqliteLimit.h f435e728c6b620ef7312814d660a81f9356eb5c8 F src/status.c 6cb10377992505bd69f1ca1d75c1240a65f25a58 F src/table.c 1fa8f8113ac9cbc09ae4801c6d2a7f0af82c5822 F src/tclsqlite.c 4dd9ee4cb44846ad9bcc4d0da8088c1e7d4b33d9 -F src/test1.c b96ef5465261a63c96870d1423660b170bf1dec3 +F src/test1.c 37de7addd16f4be291bfab25794704daee0ff532 F src/test2.c c46d146019ab6e37474e66b3c789e5237d9ea7b7 F src/test3.c 01ff03164cf6a2bededa3b44ecd481603e2644fc F src/test4.c ff4ecde3cafc71337b04e8cb7da5bb88e85d70e7 @@ -223,7 +223,7 @@ F test/blob.test 2a38d867bdf08f9ce081776acec1ac8d4bca66be F test/busy.test 76b4887f8b9160ba903c1ac22e8ff406ad6ae2f0 F test/cache.test 3ff445c445742a7b6b9ba6e1d62a25263f9424b9 F test/capi2.test cc64df7560a96f848f919ea2926c60acf639684b -F test/capi3.test 6312427a6034d4bb725411dbe0c7ec02f09a65f3 +F test/capi3.test b92ba9a889def7578da553b1a36f92b147244579 F test/capi3b.test 664eb55318132f292f2c436f90906f578cad6b97 F test/capi3c.test 208713e5f3a63442c3574c55b83baa7cf8ac5f28 F test/capi3d.test 537de3a1f724862e327e02bb21b4a84f185dc1e2 @@ -598,7 +598,7 @@ F tool/speedtest16.c c8a9c793df96db7e4933f0852abb7a03d48f2e81 F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff F tool/speedtest8.c 1dbced29de5f59ba2ebf877edcadf171540374d1 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e -P 71d699de366fc9c97d4a5122e2bf754310b9b34a -R c7104d24bf193ab5bf7b15e1bf12efdc +P 3e558acd5eb8aa5ef4681e62284af5c017a24a65 +R 1bf36cfd88471c9d49dd28f2d6350ddc U drh -Z 5a0ac4ae85600990de53dfc94ccbbf85 +Z 6364bac1cd87c47b349e49eb6a625ea6 diff --git a/manifest.uuid b/manifest.uuid index 3b6ae138d..689d71e87 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -3e558acd5eb8aa5ef4681e62284af5c017a24a65
\ No newline at end of file +024d439299478062b6efdb63adce85b251af18ce
\ No newline at end of file diff --git a/src/test1.c b/src/test1.c index 37b6cf246..6e6fbb86e 100644 --- a/src/test1.c +++ b/src/test1.c @@ -13,7 +13,7 @@ ** is not included in the SQLite library. It is used for automated ** testing of the SQLite library. ** -** $Id: test1.c,v 1.308 2008/06/28 11:23:00 danielk1977 Exp $ +** $Id: test1.c,v 1.309 2008/07/07 13:31:59 drh Exp $ */ #include "sqliteInt.h" #include "tcl.h" @@ -4417,6 +4417,51 @@ static int vfs_unlink_test( } /* +** Saved VFSes +*/ +static sqlite3_vfs *apVfs[20]; +static int nVfs = 0; + +/* +** tclcmd: vfs_unregister_all +** +** Unregister all VFSes. +*/ +static int vfs_unregister_all( + ClientData clientData, /* Pointer to sqlite3_enable_XXX function */ + Tcl_Interp *interp, /* The TCL interpreter that invoked this command */ + int objc, /* Number of arguments */ + Tcl_Obj *CONST objv[] /* Command arguments */ +){ + int i; + for(i=0; i<ArraySize(apVfs); i++){ + apVfs[i] = sqlite3_vfs_find(0); + if( apVfs[i]==0 ) break; + sqlite3_vfs_unregister(apVfs[i]); + } + nVfs = i; + return TCL_OK; +} +/* +** tclcmd: vfs_reregister_all +** +** Restore all VFSes that were removed using vfs_unregister_all +*/ +static int vfs_reregister_all( + ClientData clientData, /* Pointer to sqlite3_enable_XXX function */ + Tcl_Interp *interp, /* The TCL interpreter that invoked this command */ + int objc, /* Number of arguments */ + Tcl_Obj *CONST objv[] /* Command arguments */ +){ + int i; + for(i=0; i<nVfs; i++){ + sqlite3_vfs_register(apVfs[i], i==0); + } + return TCL_OK; +} + + +/* ** tclcmd: file_control_test DB ** ** This TCL command runs the sqlite3_file_control interface and @@ -4535,6 +4580,10 @@ static int test_limit( /* ** tclcmd: save_prng_state +** +** Save the state of the pseudo-random number generator. +** At the same time, verify that sqlite3_test_control works even when +** called with an out-of-range opcode. */ static int save_prng_state( ClientData clientData, /* Pointer to sqlite3_enable_XXX function */ @@ -4542,6 +4591,10 @@ static int save_prng_state( int objc, /* Number of arguments */ Tcl_Obj *CONST objv[] /* Command arguments */ ){ + int rc = sqlite3_test_control(9999); + assert( rc==0 ); + rc = sqlite3_test_control(-1); + assert( rc==0 ); sqlite3_test_control(SQLITE_TESTCTRL_PRNG_SAVE); return TCL_OK; } @@ -4716,6 +4769,8 @@ int Sqlitetest1_Init(Tcl_Interp *interp){ { "sqlite3_global_recover", test_global_recover, 0 }, { "working_64bit_int", working_64bit_int, 0 }, { "vfs_unlink_test", vfs_unlink_test, 0 }, + { "vfs_unregister_all", vfs_unregister_all, 0 }, + { "vfs_reregister_all", vfs_reregister_all, 0 }, { "file_control_test", file_control_test, 0 }, { "sqlite3_vfs_list", vfs_list, 0 }, diff --git a/test/capi3.test b/test/capi3.test index b771980e1..71599810e 100644 --- a/test/capi3.test +++ b/test/capi3.test @@ -11,7 +11,7 @@ # This file implements regression tests for SQLite library. The # focus of this script testing the callback-free C/C++ API. # -# $Id: capi3.test,v 1.65 2008/06/23 17:56:47 drh Exp $ +# $Id: capi3.test,v 1.66 2008/07/07 13:32:00 drh Exp $ # set testdir [file dirname $argv0] @@ -1184,4 +1184,13 @@ do_test capi3-19.1 { sqlite3_prepare_tkt3134 db } {} +# Tests of the interface when no VFS is registered. +# +db close +vfs_unregister_all +do_test capi3-20.1 { + sqlite3_sleep 100 +} {0} +vfs_reregister_all + finish_test |