]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Improvements to testing and validation of the SQLite TCL extension.
authordrh <>
Sat, 4 Jan 2025 20:50:21 +0000 (20:50 +0000)
committerdrh <>
Sat, 4 Jan 2025 20:50:21 +0000 (20:50 +0000)
FossilOrigin-Name: 9d7597cad4a167aef7688e85513d8695e8d919e41f5cd44909aefee5ddf13345

Makefile.msc
doc/tcl-extension-testing.md
main.mk
manifest
manifest.uuid
tool/buildtclext.tcl

index a1c6ea8e1821dbc47ffd3eb84969f040870c183b..5d3d4c01d0d3fa0ed3406e8a8e071f2da6a807bc 100644 (file)
@@ -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
+
 
 # <</mark>>
 
index 0b81b922c92e869ba3cabef98b6e0c87378e565c..10c57b7c36077ed556d18fad980e72824352c917 100644 (file)
 <li> `./configure --with-tclsh=$TCLTD/tcl86/bin/tclsh8.6`
 <li> `make tclextension-install` <br>
      &uarr; Verify extension installed at $TCLTD/tcl86/lib/tcl8.6/sqlite3.*
+<li> `make tclextension-verify`
 <li> `fossil clean -x`
 <li> `./configure --with-tclsh=$TCLTD/tcl90/bin/tclsh9.0`
 <li> `make tclextension-install` <br>
      &uarr; Verify extension installed at $TCLTD/tcl90/lib/sqlite3.*
+<li> `make tclextension-verify`
 </ol>
 
-### 1.4 Testing the extension
+### 1.4 Additional sanity tests
 
 <ol type="1">
-<li value="22"> 
+<li value="24"> 
      `$TCLTD/tcl86/bin/tclsh8.6 test/testrunner.tcl release --explain` <br>
      &uarr; Verify thousands of lines of output with no errors
 <li> `$TCLTD/tcl90/bin/tclsh9.0 test/testrunner.tcl release --explain` <br>
@@ -65,7 +67,7 @@
 ### 1.5 Cleanup
 
 <ol type="1">
-<li value="24"> `rm -rf $TCLTD`
+<li value="26"> `rm -rf $TCLTD`
 </ol>
 
 ## 2.0 Testing On Windows
 <li> `set TCLSH_CMD=%TCLTD%\tcl86\bin\tclsh86t.exe`
 <li> `nmake /f Makefile.msc tclextension-install` <br>
      &uarr; Verify extension installed at %TCLTD%\\tcl86\\lib\\tcl8.6\\sqlite3.*
+<li> `nmake /f Makefile.msc tclextension-verify`
 <li> `fossil clean -x`
 <li> `set TCLDIR=%TCLTD%\tcl90`
 <li> `set PATH=%TCLTD%\tcl90\bin;%ORIGINALPATH%`
 <li> `set TCLSH_CMD=%TCLTD%\tcl90\bin\tclsh90.exe`
 <li> `nmake /f Makefile.msc tclextension-install` <br>
      &uarr; Verify extension installed at %TCLTD%\\tcl90\\lib\\sqlite3.*
+<li> `nmake /f Makefile.msc tclextension-verify`
 </ol>
 
-### 2.4 Testing on Windows
+### 2.4 Additional sanity tests for Windows
 
 <ol type="1">
-<li value="31">
+<li value="33">
    `set PATH=%TCLTD%\tcl86\bin;%ORIGINALPATH%`
 <li>`tclsh86t test/testrunner.tcl release --explain` <br>
      &uarr; Verify thousands of lines of output with no errors
 ### 2.5 Cleanup
 
 <ol type="1">
-<li value="35"> `rm -rf %TCLTD%`
+<li value="37"> `rm -rf %TCLTD%`
 </ol>
diff --git a/main.mk b/main.mk
index 660cf54bd33a0036d13bdf7971238958deb16fe3..28c4245aab1e276de6d7621a27a14592339de43e 100644 (file)
--- 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
 #
index 01871cbabd4606c995a35fa8fd829b140064e4b9..28f03fcd38dfc6b36a08fc6a20a9c8fbd9d9f2a2 100644 (file)
--- 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.
index 3e076d8a5674e946f304acc7c352dde4d5e5c173..8f0477bff4147eefbd66e6cf1e535be2d992edb7 100644 (file)
@@ -1 +1 @@
-4270abc071ced9e7ec1fed3c387262cc1912e321e37e45e547a1088dbb022702
+9d7597cad4a167aef7688e85513d8695e8d919e41f5cd44909aefee5ddf13345
index c74540c9ea4ab5e3a851e194ef1e67f9a331d0ec..26f9b6dcc90e54eb4662ea8de9e7a504de9a9280 100644 (file)
@@ -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} {