diff --git a/Makefile.msc b/Makefile.msc index 62c87cb594..23fb546649 100644 --- a/Makefile.msc +++ b/Makefile.msc @@ -2743,6 +2743,9 @@ rbu.exe: $(TOP)\ext\rbu\rbu.c $(TOP)\ext\rbu\sqlite3rbu.c $(SQLITE3C) $(SQLITE3H $(LTLINK) $(NO_WARN) -DSQLITE_ENABLE_RBU \ $(TOP)\ext\rbu\rbu.c $(SQLITE3C) /link $(LDFLAGS) $(LTLINKOPTS) +$(AUXTEST).exe: $(TOP)\test\c\$(AUXTEST).c + $(LTLINK) $(NO_WARN) $(TOP)\test\c\$(AUXTEST).c sqlite3.lo /link $(LDFLAGS) $(LTLINKOPTS) + THREADTEST3_SRC = \ $(TOP)\test\threadtest3.c \ $(TOP)\test\tt3_checkpoint.c \ diff --git a/main.mk b/main.mk index e6cff6b0a2..97ff3798e9 100644 --- a/main.mk +++ b/main.mk @@ -2427,6 +2427,10 @@ sqlite3session.o: $(TOP)/ext/session/sqlite3session.c $(DEPS_EXT_COMMON) stmt.o: $(TOP)/ext/misc/stmt.c $(DEPS_EXT_COMMON) $(T.cc.extension) -c $(TOP)/ext/misc/stmt.c +$(AUXTEST): $(TOP)/test/c/$(AUXTEST).c + $(T.cc.sqlite) -o $@ $(TOP)/test/c/$(AUXTEST).c sqlite3.o $(LDFLAGS.libsqlite3) + + # # Windows section # diff --git a/manifest b/manifest index 2b3931afff..17c0b210d2 100644 --- a/manifest +++ b/manifest @@ -1,12 +1,12 @@ -C The\ssqlite3_str_new()\sinterface\snever\sreturns\sNULL,\seven\safter\san\sOOM.\nCode\sthat\suses\sthat\sinterface\sshould\sinvoke\ssqlite3_str_errcode()\sto\ssee\nif\san\sOOM\shas\soccurred. -D 2026-04-15T14:41:25.480 +C Run\sC-language\stests\sin\stests/c/\sas\spart\sof\srelease\stest. +D 2026-04-16T16:43:32.721 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md 6bc480fc673fb4acbc4094e77edb326267dd460162d7723c7f30bee2d3d9e97d F Makefile.in 5fda086f33b144da08119255da1d2557f983d0764a13707f05acf0159fd89ba5 F Makefile.linux-generic bd3e3cacd369821a6241d4ea1967395c962dfe3057e38cb0a435cee0e8b789d0 -F Makefile.msc 5f54de6ee82c2401f17bb0e1b9051466d6cc131c7a99fa3e0005ca02eae27e1c +F Makefile.msc 6f4294982758b5eeeac740c1a263186c3fcb9ba51d1b48261e321bcb37a41dbb F README.md e4f1a030f813c2fafc898c66d4f10bff2c75eb1a8f504eb9ad9a5ef80e3ff814 F VERSION 99cf3be5f13d091183e4314b7fc2e0c0e69accfbe64608b45a313338bbdd7b62 F art/icon-243x273.gif 9750b734f82fdb3dc43127753d5e6fbf3b62c9f4e136c2fbf573b2f57ea87af5 @@ -657,7 +657,7 @@ F ext/wasm/tests/opfs/sahpool/index.html be736567fd92d3ecb9754c145755037cbbd2bca F ext/wasm/tests/opfs/sahpool/sahpool-pausing.js f264925cfc82155de38cecb3d204c36e0f6991460fff0cb7c15079454679a4e2 F ext/wasm/tests/opfs/sahpool/sahpool-worker.js bd25a43fc2ab2d1bafd8f2854ad3943ef673f7c3be03e95ecf1612ff6e8e2a61 F magic.txt 5ade0bc977aa135e79e3faaea894d5671b26107cc91e70783aa7dc83f22f3ba0 -F main.mk f5283da2d8494486e72a6f49463d68c083201d7524433b914355ed716ec87ecc +F main.mk d9cbbee974a8cd3999430130378878bd87b8c5754397a69ec322f4c9cc3e4e41 F make.bat a136fd0b1c93e89854a86d5f4edcf0386d211e5d5ec2434480f6eea436c7420c F mptest/config01.test 3c6adcbc50b991866855f1977ff172eb6d901271 F mptest/config02.test 4415dfe36c48785f751e16e32c20b077c28ae504 @@ -944,6 +944,8 @@ F test/btree02.test 7555a5440453d900410160a52554fe6478af4faf53098f7235f1f443d5a1 F test/btreefault.test a82a23b0578bc587afbf9a622c8f54a54f63762f062ba8a35613cfee38ab42f9 F test/busy.test caff7164c16ce06a53af51f9e4c2753d4cc64250e00790a5e48b9c4f4be37597 F test/busy2.test 20823a5d7c42fb257d9f108c66312d90b1bb4ec3d80ba6b4e371073727560f98 +F test/c/malloc1.c 2869384011b5dc1f019ddd94e5248a1f2dfd07db06c6ce854793c91da173b811 +F test/c/snprintf1.c a66a1ce1195bd409740a60ebeea008686ce3fbacb445840fc0a45419823b7f3f F test/cache.test 13bc046b26210471ca6f2889aceb1ea52dc717de F test/cacheflush.test af25bb1509df04c1da10e38d8f322d66eceedf61 F test/cachespill.test 895997f84a25b323b166aecb69baab2d6380ea98f9e0bcc688c4493c535cfab9 @@ -1607,7 +1609,7 @@ F test/selectG.test 089f7d3d7e6db91566f00b036cb353107a2cca6220eb1cb264085a836dae F test/selectH.test 0b54599f1917d99568c9b929df22ec6261ed7b6d2f02a46b5945ef81b7871aac F test/session.test 78fa2365e93d3663a6e933f86e7afc395adf18be F test/sessionfuzz-data1.db 1f8d5def831f19b1c74571037f0d53a588ea49a6c4ca2a028fc0c27ef896dbcb -F test/sessionfuzz.c f693b8827034a3bed7616d89c65fb4fe8b7ff3c0f000c6ea6beda69b7f1aced3 +F test/sessionfuzz.c 0ec813258fbfd222c62ba6867c6a5a015f098fcaa6d89e7e0ee623ea91145cf0 F test/shared.test 50bd8091735b272732125928c363476a17b5fb264835de7d19e90c72055c888b F test/shared2.test 03eb4a8d372e290107d34b6ce1809919a698e879 F test/shared3.test cb92d083003ddf0f313166e494ec2fcafa55fdebf648628923ded3169dba8850 @@ -1716,8 +1718,8 @@ F test/temptrigfault.tes fc5918e64f3867156fefe7cfca9d8e1f495134a5229b2b511b0dc11 F test/temptrigger.test a00f258ed8d21a0e8fd4f322f15e8cfb5cef2e43655670e07a753e3fb4769d61 F test/tester.tcl 2d943f60200e0a36bcd3f1f0baf181a751cd3604ef6b6bd4c8dc39b4e8a53116 F test/testloadext.c 862b848783eaed9985fbce46c65cd214664376b549fae252b364d5d1ef350a27 -F test/testrunner.tcl 3b6cbceb4d7f0226d51a7fde247cc5592565953568c18155c8c3a454d93bee71 x -F test/testrunner_data.tcl 48c8a230fcada37f4809f95c2ba49e44bc3d520b6165c09173249c6e65b01cc1 +F test/testrunner.tcl cc5ff144daa48e351cf4523a45998986a1d68f85d5babfd53e372dc1a74f6fdc x +F test/testrunner_data.tcl dfcf192d274e965845189cc014ac89fff91dde92b6e2ac9e1262897fc21ee2e0 F test/testrunner_estwork.tcl 81e2ae10238f50540f42fbf2d94913052a99bfb494b69e546506323f195dcff9 F test/thread001.test a0985c117eab62c0c65526e9fa5d1360dd1cac5b03bde223902763274ce21899 F test/thread002.test c24c83408e35ba5a952a3638b7ac03ccdf1ce4409289c54a050ac4c5f1de7502 @@ -2199,8 +2201,9 @@ F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee F tool/warnings.sh a554d13f6e5cf3760f041b87939e3d616ec6961859c3245e8ef701d1eafc2ca2 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f F tool/winmain.c 00c8fb88e365c9017db14c73d3c78af62194d9644feaf60e220ab0f411f3604c -P 92d8ac0c4938e43b00111b43630ecfa91c30e5200ca03937a84f4b50bd1a13b3 -R 2044f397ccfeb7d1bf77600ef85df643 -U drh -Z e3131e0c1c5850c27f08aad1e0cda310 +P cb910047edc591102dd4ed0d57c863b366981b8aa1d3085d5f95b1fbbabf6c31 2d81ee65ffbed30fd98bdda96dc79c1929c73f806cea3c9e4c244b618980b202 +R be1926b5db74f71941439938d0fcffd3 +T +closed 2d81ee65ffbed30fd98bdda96dc79c1929c73f806cea3c9e4c244b618980b202 +U dan +Z cac81702445eb1f77e03aa0851674706 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 3edd99b2e1..d9e20ced73 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -cb910047edc591102dd4ed0d57c863b366981b8aa1d3085d5f95b1fbbabf6c31 +e6929022b71c6bff7aa9cfbdb8a5e80499ca856b8c06d4211c55311b48704a08 diff --git a/test/c/malloc1.c b/test/c/malloc1.c new file mode 100644 index 0000000000..16d8455894 --- /dev/null +++ b/test/c/malloc1.c @@ -0,0 +1,14 @@ + +#include "sqlite3.h" +#include + +int main(void) { + void *p = 0; +#ifdef SQLITE_OMIT_AUTOINIT + sqlite3_initialize(); +#endif + p = sqlite3_malloc(32); + if( !p ) return 1; + sqlite3_free(p); + return 0; +} diff --git a/test/c/snprintf1.c b/test/c/snprintf1.c new file mode 100644 index 0000000000..859cf3c9d7 --- /dev/null +++ b/test/c/snprintf1.c @@ -0,0 +1,18 @@ +#include "sqlite3.h" +#include + +int main(void) { + const char *zExpect = "2023.000"; + char szBuffer[32]; + double val = 2023.0; +#ifdef SQLITE_OMIT_AUTOINIT + sqlite3_initialize(); +#endif + sqlite3_snprintf(17, szBuffer, "%.3f", val); + printf("size 17: '%s'\n", szBuffer); + if( sqlite3_stricmp(zExpect, szBuffer) ) return 1; + sqlite3_snprintf(16, szBuffer, "%.3f", val); + printf("size 16: '%s'\n", szBuffer); + if( sqlite3_stricmp(zExpect, szBuffer) ) return 1; + return 0; +} diff --git a/test/sessionfuzz.c b/test/sessionfuzz.c index c389a5e996..b8ac7bcb16 100644 --- a/test/sessionfuzz.c +++ b/test/sessionfuzz.c @@ -882,6 +882,10 @@ int main(int argc, char **argv){ int nChgset; int bVerbose = 0; +#ifdef SQLITE_OMIT_AUTOINIT + sqlite3_initialize(); +#endif + if( argc<2 ){ fprintf(stderr, "%s", zHelp); exit(1); diff --git a/test/testrunner.tcl b/test/testrunner.tcl index 4d1ba57f38..ab6e6e20ea 100755 --- a/test/testrunner.tcl +++ b/test/testrunner.tcl @@ -1298,6 +1298,57 @@ proc add_build_job {buildname target {postcmd ""} {depid ""}} { list $id [file normalize $dirname] $buildname } +# Add jobs to build and run all the *.c files in $testdir/c/ for build +# configuration $buildname. +# +proc add_c_jobs {buildname} { + global TRG + + set dir [file join $::testdir c] + + # One job to build the sqlite3.o file for this configuration. Each + # individual "c" job will copy this sqlite3.o into its working directory + # so that it doesn't have to build it separately every time. + # + set obj sqlite3.o + if {$TRG(platform)=="win"} { set obj sqlite3.lo } + set B [add_build_job $buildname $obj] + foreach {bldid blddir dummy} $B {} + + # One job for each C file. + # + foreach f [glob -nocomplain $dir/*.c] { + set prg [string range [file tail $f] 0 end-2] + + set cmd "" + if {$TRG(platform)=="win"} { + foreach cp {sqlite3.lo *.h *.c} { + append cmd "copy [file nativename [file join $blddir $cp]] .\n" + } + append cmd "SET AUXTEST=$prg\n" + set prg "${prg}.exe" + append cmd "$TRG(makecmd) $prg\n" + append cmd ".\\$prg\n" + } else { + set cmd "set -e\n" + foreach cp {sqlite3.c sqlite3.h sqlite3.o .target_source src-verify} { + append cmd "cp [file join $blddir $cp] .\n" + } + append cmd "AUXTEST=$prg $TRG(makecmd) $prg\n" + append cmd "./$prg\n" + } + + set id [add_job \ + -displaytype tcl \ + -displayname "$prg ($buildname)" \ + -build $buildname \ + -cmd $cmd \ + -depid $bldid \ + -priority 3 + ] + } +} + proc add_shell_build_job {buildname dirname depid} { global TRG @@ -1545,6 +1596,8 @@ proc add_jobs_from_cmdline {patternlist} { UPDATE jobs SET depid=$sbldid WHERE depid='SHELL' } } + + add_c_jobs $b } } diff --git a/test/testrunner_data.tcl b/test/testrunner_data.tcl index 57ab054438..a30402826c 100644 --- a/test/testrunner_data.tcl +++ b/test/testrunner_data.tcl @@ -143,6 +143,7 @@ namespace eval trd { -DSQLITE_ENABLE_UNLOCK_NOTIFY -DSQLITE_THREADSAFE -DSQLITE_TCL_DEFAULT_FULLMUTEX=1 + -DSQLITE_OMIT_AUTOINIT=1 } set build(Secure-Delete) { -O2