From: mistachkin Date: Wed, 7 Sep 2016 19:31:06 +0000 (+0000) Subject: Merge selected test fixes from trunk. X-Git-Tag: version-3.14.2~4 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0dd9175acb696a48cd80c40a5233c95631e3d1b9;p=thirdparty%2Fsqlite.git Merge selected test fixes from trunk. FossilOrigin-Name: 71866b367f32b5a4cd0c239747fa8e0a60e75698 --- diff --git a/manifest b/manifest index ed2c09993c..ba2e51b3a5 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Sync\sup\sthe\sMSVC\smakefiles. -D 2016-09-07T19:23:49.275 +C Merge\sselected\stest\sfixes\sfrom\strunk. +D 2016-09-07T19:31:06.287 F Makefile.in cfd8fb987cd7a6af046daa87daa146d5aad0e088 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc 6fef1e10792656c94fe1393092de6c8ba6ea1c88 @@ -411,7 +411,7 @@ F src/test_btree.c 8b2dc8b8848cf3a4db93f11578f075e82252a274 F src/test_config.c 4d3d4a886416f369771d69a6dba926866deda788 F src/test_demovfs.c a0c3bdd45ed044115c2c9f7779e56eafff18741e F src/test_devsym.c 4e58dec2602d8e139ca08659f62a62450587cb58 -F src/test_fs.c ac62ce7d5c0c23aa6932891cad5746945564c91c +F src/test_fs.c e16cbe68d3b107e00a907c20a9a02629870eb69b F src/test_func.c a2b4993da973b0ea60dd5d51a7066238ede8c329 F src/test_hexio.c 1d4469ca61ab202a1fcec6543f584d2407205e8d F src/test_init.c 4413c211a94b62157ca4c145b3f27c497f03c664 @@ -438,8 +438,8 @@ F src/test_tclvar.c df9fe1213c2634687a9ca0b0bec0d2119d359ae3 F src/test_thread.c 911d15fb14e19c0c542bdc8aabf981c2f10a4858 F src/test_vfs.c f0186261a24de2671d080bcd8050732f0cb64f6e F src/test_vfstrace.c bab9594adc976cbe696ff3970728830b4c5ed698 -F src/test_windirent.c 8f5fada630348558d5745b334702f301da1ffc61 -F src/test_windirent.h b12055cab6227f7be10f5c19296f67c60cc5e2a5 +F src/test_windirent.c 600398db0198ca1c77ca183831bf456746b6f5c4 +F src/test_windirent.h 7edc57e2faa727026dbd5d010dd0e2e665d5aa01 F src/test_wsd.c 41cadfd9d97fe8e3e4e44f61a4a8ccd6f7ca8fe9 F src/threads.c 4ae07fa022a3dc7c5beb373cf744a85d3c5c6c3c F src/tokenize.c 3b29883b0ce4a6c6f643965b66b5ca6613178e59 @@ -1093,7 +1093,7 @@ F test/speed1.test f2974a91d79f58507ada01864c0e323093065452 F test/speed1p.explain d841e650a04728b39e6740296b852dccdca9b2cb F test/speed1p.test b180e98609c7677382cf618c0ec9b69f789033a8 F test/speed2.test 53177056baf6556dcbdcf032bbdfc41c1aa74ded -F test/speed3.test d32043614c08c53eafdc80f33191d5bd9b920523 +F test/speed3.test 694affeb9100526007436334cf7d08f3d74b85ef F test/speed4.test abc0ad3399dcf9703abed2fff8705e4f8e416715 F test/speed4p.explain 6b5f104ebeb34a038b2f714150f51d01143e59aa F test/speed4p.test 0e51908951677de5a969b723e03a27a1c45db38b @@ -1344,8 +1344,8 @@ F test/vtabB.test 04df5dc531b9f44d9ca65b9c1b79f12b5922a796 F test/vtabC.test 4528f459a13136f982e75614d120aef165f17292 F test/vtabD.test 05b3f1d77117271671089e48719524b676842e96 F test/vtabE.test d5024aa42754962f6bb0afd261681686488e7afe -F test/vtabF.test fd5ad376f5a34fe0891df1f3cddb4fe7c3eb077e -F test/vtabH.test 5f5157a1501d9889ec35c1a1832f69612dd31444 +F test/vtabF.test 1918844c7c902f6a16c8dacf1ec8f84886d6e78b +F test/vtabH.test 97f61b0253260831af6232163f7852e2653baed6 F test/vtabI.test 751b07636700dbdea328e4265b6077ccd6811a3f F test/vtab_alter.test 9e374885248f69e251bdaacf480b04a197f125e5 F test/vtab_err.test 0d4d8eb4def1d053ac7c5050df3024fd47a3fbd8 @@ -1509,7 +1509,12 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 7c2c0d1dceb6b49822e5f5c5e531744d2a4fd12c -R 006a06e7e7d96117f2d9fa15f4e085b4 +P b3777e1f8e4c44155734b92061422ac96795be3d +Q +328f79bb5713abbecaeb0ef3fb37f56a0946b915 +Q +3680f95ff34fdcf6a18a99268678a56e4be5a023 +Q +84de17bc688f1df2be1a34420470d1b16f8f4e56 +Q +a8546feec9388d96934b16e516a165cd37d32ce9 +Q +e4aeaa2bc73b57f1ef134cc4f54e2a652a20b5c9 +R 8ce338835ce07201af8e9c9e9593fb0d U mistachkin -Z f8e2239fba83cac018e472c48ce3c398 +Z b082ecd6cc5d3c88a483c74aaee891ff diff --git a/manifest.uuid b/manifest.uuid index 371a722aad..73395e117e 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -b3777e1f8e4c44155734b92061422ac96795be3d \ No newline at end of file +71866b367f32b5a4cd0c239747fa8e0a60e75698 \ No newline at end of file diff --git a/src/test_fs.c b/src/test_fs.c index 87088bdae7..dd590a6623 100644 --- a/src/test_fs.c +++ b/src/test_fs.c @@ -499,9 +499,13 @@ static int fstreeFilter( char aWild[2] = { '\0', '\0' }; #if SQLITE_OS_WIN - zRoot = sqlite3_mprintf("%s%c", getenv("SystemDrive"), '/'); + const char *zDrive = windirent_getenv("fstreeDrive"); + if( zDrive==0 ){ + zDrive = windirent_getenv("SystemDrive"); + } + zRoot = sqlite3_mprintf("%s%c", zDrive, '/'); nRoot = sqlite3Strlen30(zRoot); - zPrefix = sqlite3_mprintf("%s", getenv("SystemDrive")); + zPrefix = sqlite3_mprintf("%s", zDrive); nPrefix = sqlite3Strlen30(zPrefix); #else zRoot = "/"; diff --git a/src/test_windirent.c b/src/test_windirent.c index 11d7dc07d0..044bc7f414 100644 --- a/src/test_windirent.c +++ b/src/test_windirent.c @@ -17,6 +17,34 @@ #include "test_windirent.h" +/* +** Implementation of the POSIX getenv() function using the Win32 API. +** This function is not thread-safe. +*/ +const char *windirent_getenv( + const char *name +){ + static char value[32768]; /* Maximum length, per MSDN */ + DWORD dwSize = sizeof(value) / sizeof(char); /* Size in chars */ + DWORD dwRet; /* Value returned by GetEnvironmentVariableA() */ + + memset(value, 0, sizeof(value)); + dwRet = GetEnvironmentVariableA(name, value, dwSize); + if( dwRet==0 || dwRet>dwSize ){ + /* + ** The function call to GetEnvironmentVariableA() failed -OR- + ** the buffer is not large enough. Either way, return NULL. + */ + return 0; + }else{ + /* + ** The function call to GetEnvironmentVariableA() succeeded + ** -AND- the buffer contains the entire value. + */ + return value; + } +} + /* ** Implementation of the POSIX opendir() function using the MSVCRT. */ @@ -32,7 +60,7 @@ LPDIR opendir( /* TODO: Remove this if Unix-style root paths are not used. */ if( sqlite3_stricmp(dirname, "/")==0 ){ - dirname = getenv("SystemDrive"); + dirname = windirent_getenv("SystemDrive"); } _snprintf(data.name, namesize, "%s\\*", dirname); diff --git a/src/test_windirent.h b/src/test_windirent.h index 0b8d1a7b51..be454988e3 100644 --- a/src/test_windirent.h +++ b/src/test_windirent.h @@ -92,6 +92,13 @@ struct DIR { DIRENT d_next; /* DIRENT constructed based on "_findnext". */ }; +/* +** Provide the function prototype for the POSIX compatiable getenv() +** function. This function is not thread-safe. +*/ + +extern const char *windirent_getenv(const char *name); + /* ** Finally, we can provide the function prototypes for the opendir(), ** readdir(), readdir_r(), and closedir() POSIX functions. diff --git a/test/speed3.test b/test/speed3.test index 1beaeb74f3..4aa90943ba 100644 --- a/test/speed3.test +++ b/test/speed3.test @@ -105,7 +105,7 @@ proc io_log {db} { puts "Normal : Read $stats2(read), wrote $stats2(write)" } -proc reset_db {} { +proc speed3_reset_db {} { db close sqlite3 db test.db db eval { @@ -117,7 +117,7 @@ proc reset_db {} { } forcedelete test2.db test2.db-journal -reset_db +speed3_reset_db # Set up a database in auto-vacuum mode and create a database schema. # @@ -154,7 +154,7 @@ do_test speed3-0.4 { # Delete all content in a table, one row at a time. # #io_log db -reset_db +speed3_reset_db speed_trial speed3-1.incrvacuum $::NROW row {DELETE FROM main.t1 WHERE 1} speed_trial speed3-1.normal $::NROW row {DELETE FROM aux.t1 WHERE 1} io_log db @@ -164,7 +164,7 @@ io_log db # #db eval {PRAGMA incremental_vacuum(500000)} populate_t1 db -reset_db +speed3_reset_db speed_trial speed3-2.incrvacuum $::NROW row {SELECT c FROM main.t1} speed_trial speed3-2.normal $::NROW row {SELECT c FROM aux.t1} io_log db diff --git a/test/vtabF.test b/test/vtabF.test index b9341ea597..7b11cb8c71 100644 --- a/test/vtabF.test +++ b/test/vtabF.test @@ -21,7 +21,7 @@ ifcapable !vtab||!schema_pragmas { finish_test ; return } # Register the echo module register_echo_module [sqlite3_connection_pointer db] -do_test vtabE-1.1 { +do_test vtabF-1.1 { execsql { CREATE TABLE t1(a, b); CREATE INDEX i1 ON t1(a); @@ -37,7 +37,7 @@ do_test vtabE-1.1 { SELECT b FROM t1 WHERE a IS NOT NULL; } } {110 111 112 113} -do_test vtabE-1.2 { +do_test vtabF-1.2 { execsql {SELECT b FROM tv1 WHERE a IS NOT NULL} } {110 111 112 113} diff --git a/test/vtabH.test b/test/vtabH.test index d16db13674..f2a116f350 100644 --- a/test/vtabH.test +++ b/test/vtabH.test @@ -108,7 +108,12 @@ foreach ::tclvar_set_omit {0 1} { #------------------------------------------------------------------------- # -if {1} { +if {$tcl_platform(platform)=="windows"} { + set drive [string range [pwd] 0 1] + set ::env(fstreeDrive) $drive +} +if {$tcl_platform(platform)!="windows" || \ + [regexp -nocase -- {^[A-Z]:} $drive]} { reset_db register_fs_module db do_execsql_test 3.0 { @@ -119,7 +124,7 @@ if {1} { proc list_root_files {} { if {$::tcl_platform(platform) eq "windows"} { set res [list] - foreach name [glob -directory $::env(SystemDrive)/ -- *] { + foreach name [glob -directory $::env(fstreeDrive)/ -- *] { if {[string index [file tail $name] 0] eq "."} continue lappend res $name } @@ -142,6 +147,25 @@ if {1} { } } + # Read the first 5 entries from the root directory. Except, ignore + # files that contain the "$" character in their names as these are + # special files on some Windows platforms. + # + set res [list] + set root_files [list_root_files] + set num_root_files [llength $root_files] + set lim_root_files [expr {$num_root_files > 5 ? 5 : $num_root_files}] + foreach p [lrange $root_files 0 [expr {$lim_root_files - 1}]] { + if {$::tcl_platform(platform) eq "windows"} { + if {[regexp {\$} $p]} {incr lim_root_files -1} else {lappend res $p} + } else { + lappend res "/$p" + } + } + do_execsql_test 3.1 [subst { + SELECT path FROM fstree WHERE path NOT GLOB '*\$*' LIMIT $lim_root_files; + }] $res + # Read all entries in the current directory. # proc contents {pattern} {