From: drh <>
Date: Sat, 4 Jan 2025 20:50:21 +0000 (+0000)
Subject: Improvements to testing and validation of the SQLite TCL extension.
X-Git-Tag: major-relase~29
X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1e03bd8a89e57c465a1975c0a17408448cc56985;p=thirdparty%2Fsqlite.git
Improvements to testing and validation of the SQLite TCL extension.
FossilOrigin-Name: 9d7597cad4a167aef7688e85513d8695e8d919e41f5cd44909aefee5ddf13345
---
diff --git a/Makefile.msc b/Makefile.msc
index a1c6ea8e18..5d3d4c01d0 100644
--- a/Makefile.msc
+++ b/Makefile.msc
@@ -1894,6 +1894,9 @@ tclextension-uninstall:
tclextension-list:
$(TCLSH_CMD) $(TOP)\tool\buildtclext.tcl --info
+tclextension-verify: sqlite3.h
+ $(TCLSH_CMD) $(TOP)\tool\buildtclext.tcl --version-check
+
# <>
diff --git a/doc/tcl-extension-testing.md b/doc/tcl-extension-testing.md
index 0b81b922c9..10c57b7c36 100644
--- a/doc/tcl-extension-testing.md
+++ b/doc/tcl-extension-testing.md
@@ -46,16 +46,18 @@
`./configure --with-tclsh=$TCLTD/tcl86/bin/tclsh8.6`
`make tclextension-install`
↑ Verify extension installed at $TCLTD/tcl86/lib/tcl8.6/sqlite3.*
+ `make tclextension-verify`
`fossil clean -x`
`./configure --with-tclsh=$TCLTD/tcl90/bin/tclsh9.0`
`make tclextension-install`
↑ Verify extension installed at $TCLTD/tcl90/lib/sqlite3.*
+ `make tclextension-verify`
-### 1.4 Testing the extension
+### 1.4 Additional sanity tests
--
+
-
`$TCLTD/tcl86/bin/tclsh8.6 test/testrunner.tcl release --explain`
↑ Verify thousands of lines of output with no errors
- `$TCLTD/tcl90/bin/tclsh9.0 test/testrunner.tcl release --explain`
@@ -65,7 +67,7 @@
### 1.5 Cleanup
-- `rm -rf $TCLTD`
+
- `rm -rf $TCLTD`
## 2.0 Testing On Windows
@@ -130,18 +132,20 @@
- `set TCLSH_CMD=%TCLTD%\tcl86\bin\tclsh86t.exe`
- `nmake /f Makefile.msc tclextension-install`
↑ Verify extension installed at %TCLTD%\\tcl86\\lib\\tcl8.6\\sqlite3.*
+ - `nmake /f Makefile.msc tclextension-verify`
- `fossil clean -x`
- `set TCLDIR=%TCLTD%\tcl90`
- `set PATH=%TCLTD%\tcl90\bin;%ORIGINALPATH%`
- `set TCLSH_CMD=%TCLTD%\tcl90\bin\tclsh90.exe`
- `nmake /f Makefile.msc tclextension-install`
↑ Verify extension installed at %TCLTD%\\tcl90\\lib\\sqlite3.*
+ - `nmake /f Makefile.msc tclextension-verify`
-### 2.4 Testing on Windows
+### 2.4 Additional sanity tests for Windows
--
+
-
`set PATH=%TCLTD%\tcl86\bin;%ORIGINALPATH%`
- `tclsh86t test/testrunner.tcl release --explain`
↑ Verify thousands of lines of output with no errors
@@ -153,5 +157,5 @@
### 2.5 Cleanup
-- `rm -rf %TCLTD%`
+
- `rm -rf %TCLTD%`
diff --git a/main.mk b/main.mk
index 660cf54bd3..28c4245aab 100644
--- a/main.mk
+++ b/main.mk
@@ -1574,6 +1574,13 @@ tclextension-uninstall:
tclextension-list:
$(TCLSH_CMD) $(TOP)/tool/buildtclext.tcl --info
+# Verify that the SQLite TCL extension that is loaded by default
+# in $(TCLSH_CMD) is the same as the version of SQLite for the
+# current source tree
+#
+tclextension-verify: sqlite3.h
+ $(TCLSH_CMD) $(TOP)/tool/buildtclext.tcl --version-check
+
#
# FTS5 things
#
diff --git a/manifest b/manifest
index 01871cbabd..28f03fcd38 100644
--- a/manifest
+++ b/manifest
@@ -1,11 +1,11 @@
-C Show\sthe\svalues\sof\s$(JIM_TCLSH)\sand\s$(VISUALSTUDIOVERSION)\sin\sthe\s\noutput\sof\s"nmake\stcl-env".
-D 2025-01-04T20:13:54.343
+C Improvements\sto\stesting\sand\svalidation\sof\sthe\sSQLite\sTCL\sextension.
+D 2025-01-04T20:50:21.155
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F LICENSE.md e108e1e69ae8e8a59e93c455654b8ac9356a11720d3345df2a4743e9590fb20d
F Makefile.in ad349acf91b3569033439fe498fa197aa530cafaa01362eb7daad2f84e43d265
F Makefile.linux-generic bd3e3cacd369821a6241d4ea1967395c962dfe3057e38cb0a435cee0e8b789d0
-F Makefile.msc fd49fbfca5077436a4e7e9f38ec0f1ed900c3e5dc627a8ee00ff15d18649c00c
+F Makefile.msc 9180dae8de9534393c8a7c7d3b660deb6de5d29910471991738eed1b19c1aaa1
F README.md c3c0f19532ce28f6297a71870f3c7b424729f0e6d9ab889616d3587dd2332159
F VERSION 8dc0c3df15fd5ff0622f88fc483533fce990b1cbb2f5fb9fdfb4dbd71eef2889
F art/icon-243x273.gif 9750b734f82fdb3dc43127753d5e6fbf3b62c9f4e136c2fbf573b2f57ea87af5
@@ -61,7 +61,7 @@ F doc/json-enhancements.md e356fc834781f1f1aa22ee300027a270b2c960122468499bf347b
F doc/jsonb.md 5fab4b8613aa9153fbeb6259297bd4697988af8b3d23900deba588fa7841456b
F doc/lemon.html 8b266ff711d2ec7f867c3dca37634963f48a630329908cc282beebfa8c708706
F doc/pager-invariants.txt 27fed9a70ddad2088750c4a2b493b63853da2710
-F doc/tcl-extension-testing.md 1c7225115cede8dadd8fb173d5a1ada31d0ac566d53dcbec2013bbf97464933d
+F doc/tcl-extension-testing.md ab39979265fd0e0aa1d31dfb9d468761470d8d84a285d49f11b3ed748224e2f4
F doc/testrunner.md 15583cf8c7d8a1c3378fd5d4319ca769a14c4d950a5df9b015d01d5be290dc69
F doc/trusted-schema.md 33625008620e879c7bcfbbfa079587612c434fa094d338b08242288d358c3e8a
F doc/vdbesort-memory.md 4da2639c14cd24a31e0af694b1a8dd37eaf277aff3867e9a8cc14046bc49df56
@@ -700,7 +700,7 @@ F ext/wasm/tests/opfs/concurrency/test.js d08889a5bb6e61937d0b8cbb78c9efbefbf65a
F ext/wasm/tests/opfs/concurrency/worker.js 0a8c1a3e6ebb38aabbee24f122693f1fb29d599948915c76906681bb7da1d3d2
F ext/wasm/wasmfs.make bc8bb227f35d5bd3863a7bd2233437c37472a0d81585979f058f9b9b503bef35
F magic.txt 5ade0bc977aa135e79e3faaea894d5671b26107cc91e70783aa7dc83f22f3ba0
-F main.mk fde6ef9167ab1972f6273c0cc06a7d2d776f562d06f44f4987868335910f3803
+F main.mk 566aff71e11c52e10f81548e60f79c48cc267cb4b9971e71720047105da4304b
F mptest/config01.test 3c6adcbc50b991866855f1977ff172eb6d901271
F mptest/config02.test 4415dfe36c48785f751e16e32c20b077c28ae504
F mptest/crash01.test 61e61469e257df0850df4293d7d4d6c2af301421
@@ -2110,7 +2110,7 @@ F tool/GetTclKit.bat d84033c6a93dfe735d247f48ba00292a1cc284dcf69963e5e672444e045
F tool/Replace.cs 02c67258801c2fb5f63231e0ac0f220b4b36ba91
F tool/build-all-msvc.bat c817b716e0edeecaf265a6775b63e5f45c34a6544f1d4114a222701ed5ac79ab x
F tool/build-shell.sh 369c4b171cc877ad974fef691e4da782b4c1e99fe8f4361316c735f64d49280f
-F tool/buildtclext.tcl 5e1f1aa843e635c8b7480c7d1ec1f149a5e52136ae2fca1226304053a1a60587
+F tool/buildtclext.tcl e82120d672b34b507e1d9cb220ce18c5c36c3ee0ff0328e35f1806ce74ed2266
F tool/cg_anno.tcl c1f875f5a4c9caca3d59937b16aff716f8b1883935f1b4c9ae23124705bc8099 x
F tool/checkSpacing.c 810e51703529a204fc4e1eb060e9ab663e3c06d2
F tool/cktclsh.sh 6075eef9c6b9ba4b38fef2ca2a66d25f2311bd3c610498d18a9b01f861629cca
@@ -2205,8 +2205,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350
F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 13a35ad792dc0afe1f7b60230aef392ae01e702972b963d732e332f21848f38b
-R b249c902701d086f7fc1e9c45b94a036
+P 4270abc071ced9e7ec1fed3c387262cc1912e321e37e45e547a1088dbb022702
+R e76bc68f8d16f2d1c5c9148746df5950
U drh
-Z aade41f2b6bccecf69fadf6f2f547775
+Z 3470080ccfb271429f7dd29c45e9a752
# Remove this line to create a well-formed Fossil manifest.
diff --git a/manifest.uuid b/manifest.uuid
index 3e076d8a56..8f0477bff4 100644
--- a/manifest.uuid
+++ b/manifest.uuid
@@ -1 +1 @@
-4270abc071ced9e7ec1fed3c387262cc1912e321e37e45e547a1088dbb022702
+9d7597cad4a167aef7688e85513d8695e8d919e41f5cd44909aefee5ddf13345
diff --git a/tool/buildtclext.tcl b/tool/buildtclext.tcl
index c74540c9ea..26f9b6dcc9 100644
--- a/tool/buildtclext.tcl
+++ b/tool/buildtclext.tcl
@@ -15,6 +15,7 @@ Options:
--info Show info on existing SQLite TCL extension installs
--install-only Install an extension previously build
--uninstall Uninstall the extension
+ --version-check Check extension version against this source tree
--destdir DIR Installation root (used by "make install DESTDIR=...")
Other options are retained and passed through into the compiler.}
@@ -24,6 +25,7 @@ set build 1
set install 1
set uninstall 0
set infoonly 0
+set versioncheck 0
set CC {}
set OPTS {}
set DESTDIR ""; # --destdir "$(DESTDIR)"
@@ -36,11 +38,18 @@ for {set ii 0} {$ii<[llength $argv]} {incr ii} {
} elseif {$a0=="--uninstall"} {
set build 0
set install 0
+ set versioncheck 0
set uninstall 1
} elseif {$a0=="--info"} {
set build 0
set install 0
+ set versioncheck 0
set infoonly 1
+ } elseif {$a0=="--version-check"} {
+ set build 0
+ set install 0
+ set infoonly 0
+ set versioncheck 1
} elseif {$a0=="--cc" && $ii+1<[llength $argv]} {
incr ii
set CC [lindex $argv $ii]
@@ -156,6 +165,33 @@ if {$tcl_platform(platform)=="windows"} {
set CMD [subst $cmd]
}
+# Check the SQLite TCL extension that is loaded by default by this running
+# TCL interpreter to see if it has the same SQLITE_SOURCE_ID as the source
+# code in the directory holding this script.
+#
+if {$versioncheck} {
+ if {[catch {package require sqlite3} msg]} {
+ puts stderr "No SQLite TCL extension available: $msg"
+ exit 1
+ }
+ sqlite3 db :memory:
+ set extvers [db one {SELECT sqlite_source_id()}]
+ db close
+ set fd [open sqlite3.h rb]
+ set sqlite3h [read $fd]
+ close $fd
+ regexp {#define SQLITE_SOURCE_ID +"([^"]+)"} $sqlite3h all srcvers
+ set srcvers [string range $srcvers 0 78]
+ set extvers [string range $extvers 0 78]
+ if {$srcvers==$extvers} {
+ puts "source code and extension versions aligned:\n$extvers"
+ exit 0
+ }
+ puts stderr "source code and extension versions differ"
+ puts stderr "source: $srcvers\nextension: $extvers"
+ exit 1
+}
+
# Show information about prior installs
#
if {$infoonly} {