From: drh Date: Sat, 2 Sep 2006 14:50:23 +0000 (+0000) Subject: Test for busted TCL builds that do not support 64-bit integers and print X-Git-Tag: version-3.6.10~2781 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=80788d8b6588c2b4e8d0f5309624a528971621a4;p=thirdparty%2Fsqlite.git Test for busted TCL builds that do not support 64-bit integers and print a warning message to users that test failures may be a result of the bad TCL build and not some problem with SQLite. Ticket #1953. (CVS 3386) FossilOrigin-Name: ca864ee913ea5ae88761e617bcac300ffa339369 --- diff --git a/manifest b/manifest index 2713bf6fc2..39a46dfba0 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Convert\sstatic\svariables\sinto\sconstants\sin\sthe\sFTS\smodule.\s(CVS\s3385) -D 2006-09-02T14:17:00 +C Test\sfor\sbusted\sTCL\sbuilds\sthat\sdo\snot\ssupport\s64-bit\sintegers\sand\sprint\na\swarning\smessage\sto\susers\sthat\stest\sfailures\smay\sbe\sa\sresult\sof\sthe\sbad\nTCL\sbuild\sand\snot\ssome\sproblem\swith\sSQLite.\s\sTicket\s#1953.\s(CVS\s3386) +D 2006-09-02T14:50:24 F Makefile.in 659b63368cfbb95a224c9d2f2a9897802d96a4ea F Makefile.linux-gcc 2d8574d1ba75f129aba2019f0b959db380a90935 F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028 @@ -91,7 +91,7 @@ F src/sqlite3ext.h 11a046b3519c4b9b7709e6d6a95c3a36366f684a F src/sqliteInt.h 325a2d45be2b22c1e21ad649e0a898c74eaec7de F src/table.c d8817f43a6c6bf139487db161760b9e1e02da3f1 F src/tclsqlite.c e029f739bed90071789fe81a226d53e97a80a4d8 -F src/test1.c 535294d7f21a4127082c4f7a57f225482df9cc36 +F src/test1.c cb3688f5d2094dc708a7959bd99aed411e096e49 F src/test2.c ca74a1d8aeb7d9606e8f6b762c5daf85c1a3f92b F src/test3.c 85135c09560c48bdb0a23c9b890ab405486b8ec9 F src/test4.c 8b784cd82de158a2317cb4ac4bc86f91ad315e25 @@ -271,7 +271,7 @@ F test/table.test feea6a3eb08cf166f570255eea5447e42ef82498 F test/tableapi.test a1982276274d292110d549206bc365b2da43e2ee F test/tclsqlite.test 51334389283c74bcbe28645a73159b17e239e9f3 F test/temptable.test c36f3e5a94507abb64f7ba23deeb4e1a8a8c3821 -F test/tester.tcl 0436eda9b45cd937662b9766262cc2527448413f +F test/tester.tcl ddb510a86b1d50ef3a97bde94df13185422c0616 F test/thread1.test 776c9e459b75ba905193b351926ac4019b049f35 F test/thread2.test 6d7b30102d600f51b4055ee3a5a19228799049fb F test/threadtest1.c 6029d9c5567db28e6dc908a0c63099c3ba6c383b @@ -395,7 +395,7 @@ F www/tclsqlite.tcl bb0d1357328a42b1993d78573e587c6dcbc964b9 F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0 F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b F www/whentouse.tcl 97e2b5cd296f7d8057e11f44427dea8a4c2db513 -P 8a96bdb72439c0b337cbaa2d07897d0896ea3024 -R 05da3dd8f2c28296657c8de18470d807 +P 098cbafcd6dcf57142b0417e796d27ffddcc0920 +R a457dec7946d047fe968e63a72fc157e U drh -Z a3892b4353b377a4e8243da61653303c +Z f4d682ad54f7e32ce0b41ddbb807a8aa diff --git a/manifest.uuid b/manifest.uuid index ba08143fba..47693a6b01 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -098cbafcd6dcf57142b0417e796d27ffddcc0920 \ No newline at end of file +ca864ee913ea5ae88761e617bcac300ffa339369 \ No newline at end of file diff --git a/src/test1.c b/src/test1.c index ac3fae3050..e1b80fefa7 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.217 2006/07/06 10:59:58 drh Exp $ +** $Id: test1.c,v 1.218 2006/09/02 14:50:24 drh Exp $ */ #include "sqliteInt.h" #include "tcl.h" @@ -3698,6 +3698,35 @@ static void set_options(Tcl_Interp *interp){ #endif } +/* +** tclcmd: working_64bit_int +** +** Some TCL builds (ex: cygwin) do not support 64-bit integers. This +** leads to a number of test failures. The present command checks the +** TCL build to see whether or not it supports 64-bit integers. It +** returns TRUE if it does and FALSE if not. +** +** This command is used to warn users that their TCL build is defective +** and that the errors they are seeing in the test scripts might be +** a result of their defective TCL rather than problems in SQLite. +*/ +static int working_64bit_int( + 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 */ +){ + Tcl_Obj *pTestObj; + int working = 0; + + pTestObj = Tcl_NewWideIntObj(1000000*(i64)1234567890); + working = strcmp(Tcl_GetString(pTestObj), "1234567890000000")==0; + Tcl_DecrRefCount(pTestObj); + Tcl_SetObjResult(interp, Tcl_NewBooleanObj(working)); + return TCL_OK; +} + + /* ** Register commands with the TCL interpreter. */ @@ -3819,6 +3848,7 @@ int Sqlitetest1_Init(Tcl_Interp *interp){ #endif #endif { "sqlite3_global_recover", test_global_recover, 0 }, + { "working_64bit_int", working_64bit_int, 0 }, /* Functions from os.h */ #ifndef SQLITE_OMIT_DISKIO diff --git a/test/tester.tcl b/test/tester.tcl index 3e359be5b1..2fa576dd17 100644 --- a/test/tester.tcl +++ b/test/tester.tcl @@ -11,7 +11,7 @@ # This file implements some common TCL routines used for regression # testing the SQLite library # -# $Id: tester.tcl,v 1.65 2006/06/23 08:05:38 danielk1977 Exp $ +# $Id: tester.tcl,v 1.66 2006/09/02 14:50:24 drh Exp $ # Make sure tclsqlite3 was compiled correctly. Abort now with an # error message if not. @@ -75,7 +75,6 @@ if {[info exists nTest]} return # set nErr 0 set nTest 0 -set nProb 0 set skip_test 0 set failList {} set maxErr 1000 @@ -139,7 +138,7 @@ proc finish_test {} { finalize_testing } proc finalize_testing {} { - global nTest nErr nProb sqlite_open_file_count + global nTest nErr sqlite_open_file_count if {$nErr==0} memleak_check catch {db close} @@ -149,7 +148,6 @@ proc finalize_testing {} { catch { pp_check_for_leaks } -breakpoint sqlite3 db {} # sqlite3_clear_tsd_memdebug db close @@ -162,16 +160,18 @@ breakpoint incr nTest puts "$nErr errors out of $nTest tests" puts "Failures on these tests: $::failList" - if {$nProb>0} { - puts "$nProb probabilistic tests also failed, but this does" - puts "not necessarily indicate a malfunction." + if {$nErr>0 && ![working_64bit_int]} { + puts "******************************************************************" + puts "N.B.: The version of TCL that you used to build this test harness" + puts "is defective in that it does not support 64-bit integers. Some or" + puts "all of the test failures above might be a result from this defect" + puts "in your TCL build." + puts "******************************************************************" } - if 0 { if {$sqlite_open_file_count} { puts "$sqlite_open_file_count files were left open" incr nErr } - } exit [expr {$nErr>0}] }