mirror of
https://github.com/sqlite/sqlite.git
synced 2025-12-24 14:17:58 +03:00
Merge trunk into this branch.
FossilOrigin-Name: 38635651f08d42110c01d6b24f6e362e340511846294f8696af4afc795dae80d
This commit is contained in:
@@ -1314,9 +1314,9 @@ testfixture$(TEXE): has_tclsh85 $(TESTFIXTURE_SRC)
|
||||
$(LTLINK) -DSQLITE_NO_SYNC=1 $(TEMP_STORE) $(TESTFIXTURE_FLAGS) \
|
||||
-o $@ $(TESTFIXTURE_SRC) $(LIBTCL) $(TLIBS)
|
||||
|
||||
coretestprogs: $(TESTPROGS)
|
||||
coretestprogs: testfixture$(BEXE) sqlite3$(BEXE)
|
||||
|
||||
testprogs: coretestprogs srcck1$(BEXE) fuzzcheck$(TEXE) sessionfuzz$(TEXE)
|
||||
testprogs: $(TESTPROGS) srcck1$(BEXE) fuzzcheck$(TEXE) sessionfuzz$(TEXE)
|
||||
|
||||
# A very detailed test running most or all test cases
|
||||
fulltest: alltest fuzztest
|
||||
|
||||
@@ -2496,9 +2496,9 @@ extensiontest: testfixture.exe testloadext.dll
|
||||
tool-zip: testfixture.exe sqlite3.exe sqldiff.exe sqlite3_analyzer.exe $(TOP)\tool\mktoolzip.tcl
|
||||
.\testfixture.exe $(TOP)\tool\mktoolzip.tcl
|
||||
|
||||
coretestprogs: $(TESTPROGS)
|
||||
coretestprogs: testfixture.exe sqlite3.exe
|
||||
|
||||
testprogs: coretestprogs srcck1.exe fuzzcheck.exe sessionfuzz.exe
|
||||
testprogs: $(TESTPROGS) srcck1.exe fuzzcheck.exe sessionfuzz.exe
|
||||
|
||||
fulltest: alltest fuzztest
|
||||
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
<li> 3.3. <a href=#source_code_test_failures>Investigating Source Code Test Failures</a>
|
||||
</ul>
|
||||
<li> 4. <a href=#testrunner_options>Extra testrunner.tcl Options</a>
|
||||
# 4. Extra testrunner.tcl Options
|
||||
<li> 5. <a href=#cpu_cores>Controlling CPU Core Utilization</a>
|
||||
</ul>
|
||||
|
||||
@@ -29,12 +28,18 @@ multiple jobs. It supports the following types of tests:
|
||||
|
||||
* Tcl test scripts.
|
||||
|
||||
* Tests run with [make] commands. Specifically, at time of writing,
|
||||
[make fuzztest], [make mptest], [make sourcetest] and [make threadtest].
|
||||
* Tests run with `make` commands. Examples:
|
||||
- `make mdevtest`
|
||||
- `make releasetest`
|
||||
- `make sdevtest`
|
||||
- `make testrunner`
|
||||
|
||||
testrunner.tcl pipes the output of all tests and builds run into log file
|
||||
**testrunner.log**, created in the cwd directory. Searching this file for
|
||||
"failed" is a good way to find the output of a failed test.
|
||||
**testrunner.log**, created in the current working directory. Search this
|
||||
file to find details of errors. Suggested search commands:
|
||||
|
||||
* `grep "^!" testrunner.log`
|
||||
* `grep failed testrunner.log`
|
||||
|
||||
testrunner.tcl also populates SQLite database **testrunner.db**. This database
|
||||
contains details of all tests run, running and to be run. A useful query
|
||||
@@ -60,7 +65,7 @@ Running:
|
||||
|
||||
in another terminal is a good way to keep an eye on a long running test.
|
||||
|
||||
Sometimes testrunner.tcl uses the [testfixture] binary that it is run with
|
||||
Sometimes testrunner.tcl uses the `testfixture` binary that it is run with
|
||||
to run tests (see "Binary Tests" below). Sometimes it builds testfixture and
|
||||
other binaries in specific configurations to test (see "Source Tests").
|
||||
|
||||
@@ -68,9 +73,9 @@ other binaries in specific configurations to test (see "Source Tests").
|
||||
# 2. Binary Tests
|
||||
|
||||
The commands described in this section all run various combinations of the Tcl
|
||||
test scripts using the [testfixture] binary used to run the testrunner.tcl
|
||||
test scripts using the `testfixture` binary used to run the testrunner.tcl
|
||||
script (i.e. they do not invoke the compiler to build new binaries, or the
|
||||
[make] command to run tests that are not Tcl scripts). The procedure to run
|
||||
`make` command to run tests that are not Tcl scripts). The procedure to run
|
||||
these tests is therefore:
|
||||
|
||||
1. Build the "testfixture" (or "testfixture.exe" for windows) binary using
|
||||
@@ -193,7 +198,7 @@ TODO: ./configure + Makefile.msc build systems.
|
||||
## 3.1. Commands to Run SQLite Tests
|
||||
|
||||
The **mdevtest** command is equivalent to running the veryquick tests and
|
||||
the [make fuzztest] target once for each of two --enable-all builds - one
|
||||
the `make fuzztest` target once for each of two --enable-all builds - one
|
||||
with debugging enabled and one without:
|
||||
|
||||
```
|
||||
@@ -283,7 +288,7 @@ a dos \*.bat file on windows. For example:
|
||||
```
|
||||
|
||||
The generated bash or \*.bat file script accepts a single argument - a makefile
|
||||
target to build. This may be used either to run a [make] command test directly,
|
||||
target to build. This may be used either to run a `make` command test directly,
|
||||
or else to build a testfixture (or testfixture.exe) binary with which to
|
||||
run a Tcl test script, as <a href=#binary_test_failures>described above</a>.
|
||||
|
||||
@@ -310,6 +315,16 @@ would normally execute into the testrunner.log file. Example:
|
||||
tclsh $TESTDIR/testrunner.tcl --dryrun mdevtest"
|
||||
```
|
||||
|
||||
The **--explain** option is similar to --dryrun in that it prevents testrunner.tcl
|
||||
from building any binaries or running any tests. The difference is that --explain
|
||||
prints on standard output a human-readable summary of all the builds and tests that
|
||||
would have been run.
|
||||
|
||||
```
|
||||
# Show what builds and tests would have been run
|
||||
tclsh $TESTDIR/testrunner.tcl --explain mdevtest
|
||||
```
|
||||
|
||||
<a name=cpu_cores></a>
|
||||
# 5. Controlling CPU Core Utilization
|
||||
|
||||
@@ -339,6 +354,3 @@ testrunner.log and testrunner.db files:
|
||||
```
|
||||
$ ./testfixture $TESTDIR/testrunner.tcl njob $NEW_NUMBER_OF_JOBS
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
# May you share freely, never taking more than you give.
|
||||
#
|
||||
#***********************************************************************
|
||||
# TESTRUNNER: shell
|
||||
#
|
||||
# The focus of this file is testing the CLI shell tool. Specifically,
|
||||
# the ".recommend" command.
|
||||
|
||||
44
manifest
44
manifest
@@ -1,11 +1,11 @@
|
||||
C Ensure\sthat\sif\sa\smulti-row\sVALUES\scannot\sbe\scoded\swhile\sbeing\sparsed,\sthe\sSF_MultiValue\sflag\sis\scorrectly\sset.
|
||||
D 2024-03-13T15:44:31.439
|
||||
C Merge\strunk\sinto\sthis\sbranch.
|
||||
D 2024-03-13T15:47:52.750
|
||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
||||
F Makefile.in ca8b906b1c3285fc32cff9978a5b827f99ae3d440077babf32c257a92a2ba11c
|
||||
F Makefile.in 5f2389d2a3c44b56621bb5156a9cb6e2bef01f7ec14a19335b1559cf0474bdde
|
||||
F Makefile.linux-gcc f3842a0b1efbfbb74ac0ef60e56b301836d05b4d867d014f714fa750048f1ab6
|
||||
F Makefile.msc 7d88d6a654d86e6a1bede090f67d633d0a57c73e591d772fce8e15bfb07147f8
|
||||
F Makefile.msc e64a52619310d3067f6c38f56eedd15918a82dade70954197d6da486ad99d7f4
|
||||
F README.md 6358805260a03ebead84e168bbf3740ddf3f683b477e478567186aa7afb490d3
|
||||
F VERSION c84541c6a9e8426462176fbb1f9ecb5cfd7d1bb56228053ff7eeba8841673eb6
|
||||
F aclocal.m4 a5c22d164aff7ed549d53a90fa56d56955281f50
|
||||
@@ -44,7 +44,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/testrunner.md 8d36ec692cf4994bb66d84a4645b9afa1ce9d47dc12cbf8d437c5a5fb6ddeedb
|
||||
F doc/testrunner.md 15583cf8c7d8a1c3378fd5d4319ca769a14c4d950a5df9b015d01d5be290dc69
|
||||
F doc/trusted-schema.md 33625008620e879c7bcfbbfa079587612c434fa094d338b08242288d358c3e8a
|
||||
F doc/vdbesort-memory.md 4da2639c14cd24a31e0af694b1a8dd37eaf277aff3867e9a8cc14046bc49df56
|
||||
F doc/vfs-shm.txt e101f27ea02a8387ce46a05be2b1a902a021d37a
|
||||
@@ -57,7 +57,7 @@ F ext/consio/console_io.c f32b757c9ee7fdf68e7586bee306f8368759e7cd12febb2a683919
|
||||
F ext/consio/console_io.h 0548b83d7c4b7270ad544a67f2bb90cebc519637fa39b1838df4744cf0d87646
|
||||
F ext/expert/README.md b321c2762bb93c18ea102d5a5f7753a4b8bac646cb392b3b437f633caf2020c3
|
||||
F ext/expert/expert.c d548d603a4cc9e61f446cc179c120c6713511c413f82a4a32b1e1e69d3f086a4
|
||||
F ext/expert/expert1.test 0dd5cb096d66bed593e33053a3b364f6ef52ed72064bf5cf298364636dbf3cd6
|
||||
F ext/expert/expert1.test 53a749de08939e3bc14f804e97410927d46fa772cbce0247d7e8fa6fc2523b0c
|
||||
F ext/expert/sqlite3expert.c c8cea5ff15fbe792cccc4992a9b40b706411c41d32611f617897fecac6ff06a4
|
||||
F ext/expert/sqlite3expert.h ca81efc2679a92373a13a3e76a6138d0310e32be53d6c3bfaedabd158ea8969b
|
||||
F ext/expert/test_expert.c d56c194b769bdc90cf829a14c9ecbc1edca9c850b837a4d0b13be14095c32a72
|
||||
@@ -911,7 +911,7 @@ F test/autoindex5.test 2ee94f033b87ca0160e08d81034c507aff8e230df2627f0304fa309b2
|
||||
F test/autovacuum.test 00671369bbf96c6a49989a9425f5b78b94075d6a4b031e5e00000c2c32f365df
|
||||
F test/autovacuum2.test 76f7eb4fe6a6bf6d33a196a7141dba98886d2fb53a268d7feca285d5da4759d7
|
||||
F test/autovacuum_ioerr2.test 8a367b224183ad801e0e24dcb7d1501f45f244b4
|
||||
F test/avfs.test 0c3a38e03cccb0fc3127838462dc05dc3f4c1480d770c084b388304c25de3652
|
||||
F test/avfs.test 76f59743dc1f5fa533840d1818b420fe1ee45e21c0fd6bbac7942ba677903128
|
||||
F test/avtrans.test b7dc25459ecbd86c6fa9c606ee3068f59d81e225118617dcf2bbb6ded2ade89e
|
||||
F test/backcompat.test 3e64cedda754c778ef6bbe417b6e7a295e662a4d
|
||||
F test/backup.test 3b08fd4af69f0fa786931103a31f4542b184aba16e239e5f22b18c3c2476697f
|
||||
@@ -1520,7 +1520,7 @@ F test/randexpr1.tcl 40dec52119ed3a2b8b2a773bce24b63a3a746459
|
||||
F test/randexpr1.test eda062a97e60f9c38ae8d806b03b0ddf23d796df
|
||||
F test/rbu.test 168573d353cd0fd10196b87b0caa322c144ef736
|
||||
F test/rdonly.test 64e2696c322e3538df0b1ed624e21f9a23ed9ff8
|
||||
F test/recover.test fd5199f928757cb308661b5fdca1abc19398a798ff7f24b57c3071e9f8e0471e
|
||||
F test/recover.test 6463509a7404e0c35431dd9b4a1c3b4a29d7a6af8a08462b31670c8a5a616d3a
|
||||
F test/regexp1.test 8f2a8bc1569666e29a4cee6c1a666cd224eb6d50e2470d1dc1df995170f3e0f1
|
||||
F test/regexp2.test 55ed41da802b0e284ac7e2fe944be3948f93ff25abbca0361a609acfed1368b5
|
||||
F test/reindex.test cd9d6021729910ece82267b4f5e1b5ac2911a7566c43b43c176a6a4732e2118d
|
||||
@@ -1600,15 +1600,15 @@ F test/sharedA.test 64bdd21216dda2c6a3bd3475348ccdc108160f34682c97f2f51c19fc0e21
|
||||
F test/sharedB.test 1a84863d7a2204e0d42f2e1606577c5e92e4473fa37ea0f5bdf829e4bf8ee707
|
||||
F test/shared_err.test 32634e404a3317eeb94abc7a099c556a346fdb8fb3858dbe222a4cbb8926a939
|
||||
F test/sharedlock.test 5ede3c37439067c43b0198f580fd374ebf15d304
|
||||
F test/shell1.test c7127a5e780ffc9e14c476773127fdf292c6db226529c44c1676f37b3793123f
|
||||
F test/shell2.test 35226c070a8c7f64fd016dfac2a0db2a40f709b3131f61daacd9dad61536c9cb
|
||||
F test/shell3.test 91febeac0412812bf6370abb8ed72700e32bf8f9878849414518f662dfd55e8a
|
||||
F test/shell4.test 947029e5a9efae9054d424b309fc0311439c0c3a0866ebfa3b8a771120708220
|
||||
F test/shell5.test 263bfd6a49049295277e3f5bdc221390dc5e72f39954b23d43204ed81993304f
|
||||
F test/shell6.test 1ceb51b2678c472ba6cf1e5da96679ce8347889fe2c3bf93a0e0fa73f00b00d3
|
||||
F test/shell7.test 115132f66d0463417f408562cc2cf534f6bbc6d83a6d50f0072a9eb171bae97f
|
||||
F test/shell8.test 3fd093d481aaa94dc77fb73f1044c1f19c7efe3477a395cc4f7450133bc54915
|
||||
F test/shell9.test f457a96c088344908e0518dbabffd02eda8ac2a8733f278679e5f47c103efbab
|
||||
F test/shell1.test 17a5ca9c6f24f807b2f505b4b38fcbce143d96cd8664c06c34bbbe0672bf7c30
|
||||
F test/shell2.test 56da24128304c9ab67da2964cc80beff7b35761c446ec6e6e98bff2775b15026
|
||||
F test/shell3.test 5ad4b2813717956414f2c0c8a2027895cd98ccf7dd54dbacbde4d4f5591ce5a1
|
||||
F test/shell4.test 522fdc628c55eff697b061504fb0a9e4e6dfc5d9087a633ab0f3dd11bcc4f807
|
||||
F test/shell5.test 5b2ab1c0540217773f939927c24163a56257446da3f564d4724042620bfea762
|
||||
F test/shell6.test e3b883b61d4916b6906678a35f9d19054861123ad91b856461e0a456273bdbb8
|
||||
F test/shell7.test 753c6ece5361df50025a50cadf378ea36db9cc05fb23d7a96cff7fa130626ef9
|
||||
F test/shell8.test 9b71d56a6f6fc62edd9163534ac21eaa328ad95f1b9026e7bd08d5b4621eacf6
|
||||
F test/shell9.test 8742a5b390cdcef6369f5aa223e415aa4255a4129ef249b177887dc635a87209
|
||||
F test/shmlock.test 3dbf017d34ab0c60abe6a44e447d3552154bd0c87b41eaf5ceacd408dd13fda5
|
||||
F test/shortread1.test bb591ef20f0fd9ed26d0d12e80eee6d7ac8897a3
|
||||
F test/show_speedtest1_rtree.tcl 32e6c5f073d7426148a6936a0408f4b5b169aba5
|
||||
@@ -1687,8 +1687,8 @@ F test/temptable2.test 76821347810ecc88203e6ef0dd6897b6036ac788e9dd3e6b04fd4d163
|
||||
F test/temptable3.test d11a0974e52b347e45ee54ef1923c91ed91e4637
|
||||
F test/temptrigger.test 38f0ca479b1822d3117069e014daabcaacefffcc
|
||||
F test/tester.tcl fe617b88c7eb08bdf983d2aaa31c20fbf439eee7b8e0d61ca636fcd0c305bbbf
|
||||
F test/testrunner.tcl 8e2a5c7550b78d3283eee6103104ae2bcf56aa1df892dbd1608f27b93ebf4de8
|
||||
F test/testrunner_data.tcl 7ffd951527bbc614e723fd8d123b6834321878530696adecfdf6035100bac64e
|
||||
F test/testrunner.tcl 48e33d99f0bad37a03b8a4064a44184de4c4ed8cd2e3174fef8d7c5f4e28ecc3
|
||||
F test/testrunner_data.tcl 2f94974e5e3a56af880be72f7a7fd239aa9d4ecf978625435fcc698319c927fa
|
||||
F test/thread001.test a0985c117eab62c0c65526e9fa5d1360dd1cac5b03bde223902763274ce21899
|
||||
F test/thread002.test c24c83408e35ba5a952a3638b7ac03ccdf1ce4409289c54a050ac4c5f1de7502
|
||||
F test/thread003.test ee4c9efc3b86a6a2767516a37bd64251272560a7
|
||||
@@ -2179,8 +2179,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
|
||||
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
||||
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
||||
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
||||
P 4229b12b327b05561dcf49b8585a66467d17d4e998b14eff65eb886f2434b53c
|
||||
R 759c4fdaf4045c9f2dff7c53c191816c
|
||||
P 94791824a6f04782aac6bc16c182685e2d6ebf5c688dc9f8d59e479c6fd5a40e 924281b94d8e6ba674d6fe2f7f01da890351355a854e9e6fe623fad1180f7392
|
||||
R af81f2952048774d882db6d201804b0c
|
||||
U dan
|
||||
Z 9143cafae67b08f919f57c93acfe5550
|
||||
Z a427b7a910e44c4f56ce4ce6ef8524f2
|
||||
# Remove this line to create a well-formed Fossil manifest.
|
||||
|
||||
@@ -1 +1 @@
|
||||
94791824a6f04782aac6bc16c182685e2d6ebf5c688dc9f8d59e479c6fd5a40e
|
||||
38635651f08d42110c01d6b24f6e362e340511846294f8696af4afc795dae80d
|
||||
@@ -8,6 +8,7 @@
|
||||
# May you share freely, never taking more than you give.
|
||||
#
|
||||
#***********************************************************************
|
||||
# TESTRUNNER: shell
|
||||
#
|
||||
# This file implements tests for the appendvfs extension.
|
||||
#
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
# May you share freely, never taking more than you give.
|
||||
#
|
||||
#***********************************************************************
|
||||
# TESTRUNNER: shell
|
||||
#
|
||||
# Test the shell tool ".ar" command.
|
||||
#
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#
|
||||
# The focus of this file is testing the CLI shell tool.
|
||||
#
|
||||
# TESTRUNNER: shell
|
||||
#
|
||||
|
||||
# Test plan:
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
# May you share freely, never taking more than you give.
|
||||
#
|
||||
#***********************************************************************
|
||||
# TESTRUNNER: shell
|
||||
#
|
||||
# The focus of this file is testing the CLI shell tool.
|
||||
#
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
# May you share freely, never taking more than you give.
|
||||
#
|
||||
#***********************************************************************
|
||||
# TESTRUNNER: shell
|
||||
#
|
||||
# The focus of this file is testing the CLI shell tool.
|
||||
#
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
# May you share freely, never taking more than you give.
|
||||
#
|
||||
#***********************************************************************
|
||||
# TESTRUNNER: shell
|
||||
#
|
||||
# The focus of this file is testing the CLI shell tool.
|
||||
# These tests are specific to the .stats command.
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
# May you share freely, never taking more than you give.
|
||||
#
|
||||
#***********************************************************************
|
||||
# TESTRUNNER: shell
|
||||
#
|
||||
# The focus of this file is testing the CLI shell tool.
|
||||
# These tests are specific to the .import command.
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
# May you share freely, never taking more than you give.
|
||||
#
|
||||
#***********************************************************************
|
||||
# TESTRUNNER: shell
|
||||
#
|
||||
# Test the shell tool ".lint fkey-indexes" command.
|
||||
#
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
# May you share freely, never taking more than you give.
|
||||
#
|
||||
#***********************************************************************
|
||||
# TESTRUNNER: shell
|
||||
#
|
||||
# Test the readfile() function built into the shell tool. Specifically,
|
||||
# that it does not truncate the blob read at the first embedded 0x00
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
# May you share freely, never taking more than you give.
|
||||
#
|
||||
#***********************************************************************
|
||||
# TESTRUNNER: shell
|
||||
#
|
||||
# Test the shell tool ".ar" command.
|
||||
#
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
# May you share freely, never taking more than you give.
|
||||
#
|
||||
#***********************************************************************
|
||||
# TESTRUNNER: shell
|
||||
#
|
||||
# The focus of this file is testing the CLI shell tool. Specifically,
|
||||
# testing that it is possible to run a ".dump" script that creates
|
||||
|
||||
@@ -54,22 +54,31 @@ proc usage {} {
|
||||
Usage:
|
||||
$a0 ?SWITCHES? ?PERMUTATION? ?PATTERNS?
|
||||
$a0 PERMUTATION FILE
|
||||
$a0 help
|
||||
$a0 njob ?NJOB?
|
||||
$a0 script ?-msvc? CONFIG
|
||||
$a0 status
|
||||
|
||||
where SWITCHES are:
|
||||
--buildonly
|
||||
--dryrun
|
||||
--explain
|
||||
--jobs NUMBER-OF-JOBS
|
||||
--zipvfs ZIPVFS-SOURCE-DIR
|
||||
|
||||
Interesting values for PERMUTATION are:
|
||||
Special values for PERMUTATION that work with plain tclsh:
|
||||
|
||||
list - show all allowed PERMUTATION arguments.
|
||||
mdevtest - tests recommended prior to normal development check-ins.
|
||||
release - full release test with various builds.
|
||||
sdevtest - like mdevtest but using ASAN and UBSAN.
|
||||
|
||||
Other PERMUTATION arguments must be run using testfixture, not tclsh:
|
||||
|
||||
veryquick - a fast subset of the tcl test scripts. This is the default.
|
||||
full - all tcl test scripts.
|
||||
all - all tcl test scripts, plus a subset of test scripts rerun
|
||||
with various permutations.
|
||||
release - full release test with various builds.
|
||||
full - all tcl test scripts.
|
||||
veryquick - a fast subset of the tcl test scripts. This is the default.
|
||||
|
||||
If no PATTERN arguments are present, all tests specified by the PERMUTATION
|
||||
are run. Otherwise, each pattern is interpreted as a glob pattern. Only
|
||||
@@ -89,6 +98,12 @@ directory as a running testrunner.tcl script that is running tests. The
|
||||
"status" command prints a report describing the current state and progress
|
||||
of the tests. The "njob" command may be used to query or modify the number
|
||||
of sub-processes the test script uses to run tests.
|
||||
|
||||
The "script" command outputs the script used to build a configuration.
|
||||
Add the "-msvc" option for a Windows-compatible script. For a list of
|
||||
available configurations enter "$a0 script help".
|
||||
|
||||
Full documentation here: https://sqlite.org/src/doc/trunk/doc/testrunner.md
|
||||
}]]
|
||||
|
||||
exit 1
|
||||
@@ -126,6 +141,10 @@ proc guess_number_of_cores {} {
|
||||
}
|
||||
|
||||
proc default_njob {} {
|
||||
global env
|
||||
if {[info exists env(NJOB)] && $env(NJOB)>=1} {
|
||||
return $env(NJOB)
|
||||
}
|
||||
set nCore [guess_number_of_cores]
|
||||
if {$nCore<=2} {
|
||||
set nHelper 1
|
||||
@@ -152,6 +171,7 @@ set TRG(fuzztest) 0 ;# is the fuzztest option present.
|
||||
set TRG(zipvfs) "" ;# -zipvfs option, if any
|
||||
set TRG(buildonly) 0 ;# True if --buildonly option
|
||||
set TRG(dryrun) 0 ;# True if --dryrun option
|
||||
set TRG(explain) 0 ;# True for the --explain option
|
||||
|
||||
switch -nocase -glob -- $tcl_platform(os) {
|
||||
*darwin* {
|
||||
@@ -159,6 +179,7 @@ switch -nocase -glob -- $tcl_platform(os) {
|
||||
set TRG(make) make.sh
|
||||
set TRG(makecmd) "bash make.sh"
|
||||
set TRG(testfixture) testfixture
|
||||
set TRG(shell) sqlite3
|
||||
set TRG(run) run.sh
|
||||
set TRG(runcmd) "bash run.sh"
|
||||
}
|
||||
@@ -167,14 +188,16 @@ switch -nocase -glob -- $tcl_platform(os) {
|
||||
set TRG(make) make.sh
|
||||
set TRG(makecmd) "bash make.sh"
|
||||
set TRG(testfixture) testfixture
|
||||
set TRG(shell) sqlite3
|
||||
set TRG(run) run.sh
|
||||
set TRG(runcmd) "bash run.sh"
|
||||
}
|
||||
*win* {
|
||||
set TRG(platform) win
|
||||
set TRG(make) make.bat
|
||||
set TRG(makecmd) make.bat
|
||||
set TRG(makecmd) "call make.bat"
|
||||
set TRG(testfixture) testfixture.exe
|
||||
set TRG(shell) sqlite3.exe
|
||||
set TRG(run) run.bat
|
||||
set TRG(runcmd) "run.bat"
|
||||
}
|
||||
@@ -326,6 +349,14 @@ if {([llength $argv]==2 || [llength $argv]==1)
|
||||
}
|
||||
#--------------------------------------------------------------------------
|
||||
|
||||
#--------------------------------------------------------------------------
|
||||
# Check if this is the "help" command:
|
||||
#
|
||||
if {[string compare -nocase help [lindex $argv 0]]==0} {
|
||||
usage
|
||||
}
|
||||
#--------------------------------------------------------------------------
|
||||
|
||||
#--------------------------------------------------------------------------
|
||||
# Check if this is the "script" command:
|
||||
#
|
||||
@@ -435,6 +466,8 @@ for {set ii 0} {$ii < [llength $argv]} {incr ii} {
|
||||
set TRG(buildonly) 1
|
||||
} elseif {($n>2 && [string match "$a*" --dryrun]) || $a=="-d"} {
|
||||
set TRG(dryrun) 1
|
||||
} elseif {($n>2 && [string match "$a*" --explain]) || $a=="-e"} {
|
||||
set TRG(explain) 1
|
||||
} else {
|
||||
usage
|
||||
}
|
||||
@@ -617,7 +650,16 @@ proc add_job {args} {
|
||||
trdb last_insert_rowid
|
||||
}
|
||||
|
||||
proc add_tcl_jobs {build config patternlist} {
|
||||
# Argument $build is either an empty string, or else a list of length 3
|
||||
# describing the job to build testfixture. In the usual form:
|
||||
#
|
||||
# {ID DIRNAME DISPLAYNAME}
|
||||
#
|
||||
# e.g
|
||||
#
|
||||
# {1 /home/user/sqlite/test/testrunner_bld_xyz All-Debug}
|
||||
#
|
||||
proc add_tcl_jobs {build config patternlist {shelldepid ""}} {
|
||||
global TRG
|
||||
|
||||
set topdir [file dirname $::testdir]
|
||||
@@ -666,34 +708,59 @@ proc add_tcl_jobs {build config patternlist} {
|
||||
if {[lsearch $lProp slow]>=0} { set priority 2 }
|
||||
if {[lsearch $lProp superslow]>=0} { set priority 4 }
|
||||
|
||||
set depid [lindex $build 0]
|
||||
if {$shelldepid!="" && [lsearch $lProp shell]>=0} { set depid $shelldepid }
|
||||
|
||||
add_job \
|
||||
-displaytype tcl \
|
||||
-displayname $displayname \
|
||||
-cmd $cmd \
|
||||
-depid [lindex $build 0] \
|
||||
-depid $depid \
|
||||
-priority $priority
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
proc add_build_job {buildname target} {
|
||||
proc add_build_job {buildname target {postcmd ""} {depid ""}} {
|
||||
global TRG
|
||||
|
||||
set dirname "[string tolower [string map {- _} $buildname]]_$target"
|
||||
set dirname "testrunner_bld_$dirname"
|
||||
|
||||
set cmd "$TRG(makecmd) $target"
|
||||
if {$postcmd!=""} {
|
||||
append cmd "\n"
|
||||
append cmd $postcmd
|
||||
}
|
||||
|
||||
set id [add_job \
|
||||
-displaytype bld \
|
||||
-displayname "Build $buildname ($target)" \
|
||||
-dirname $dirname \
|
||||
-build $buildname \
|
||||
-cmd "$TRG(makecmd) $target" \
|
||||
-cmd $cmd \
|
||||
-depid $depid \
|
||||
-priority 3
|
||||
]
|
||||
|
||||
list $id [file normalize $dirname] $buildname
|
||||
}
|
||||
|
||||
proc add_shell_build_job {buildname dirname depid} {
|
||||
global TRG
|
||||
|
||||
if {$TRG(platform)=="win"} {
|
||||
set path [string map {/ \\} "$dirname/"]
|
||||
set copycmd "xcopy $TRG(shell) $path"
|
||||
} else {
|
||||
set copycmd "cp $TRG(shell) $dirname/"
|
||||
}
|
||||
|
||||
return [
|
||||
add_build_job $buildname $TRG(shell) $copycmd $depid
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
proc add_make_job {bld target} {
|
||||
global TRG
|
||||
|
||||
@@ -767,10 +834,30 @@ proc add_devtest_jobs {lBld patternlist} {
|
||||
|
||||
foreach b $lBld {
|
||||
set bld [add_build_job $b $TRG(testfixture)]
|
||||
add_tcl_jobs $bld veryquick $patternlist
|
||||
add_tcl_jobs $bld veryquick $patternlist SHELL
|
||||
if {$patternlist==""} {
|
||||
add_fuzztest_jobs $b
|
||||
}
|
||||
|
||||
if {[trdb one "SELECT EXISTS (SELECT 1 FROM jobs WHERE depid='SHELL')"]} {
|
||||
set sbld [add_shell_build_job $b [lindex $bld 1] [lindex $bld 0]]
|
||||
set sbldid [lindex $sbld 0]
|
||||
trdb eval {
|
||||
UPDATE jobs SET depid=$sbldid WHERE depid='SHELL'
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
# Check to ensure that the interpreter is a full-blown "testfixture"
|
||||
# build and not just a "tclsh". If this is not the case, issue an
|
||||
# error message and exit.
|
||||
#
|
||||
proc must_be_testfixture {} {
|
||||
if {[lsearch [info commands] sqlite3_soft_heap_limit]<0} {
|
||||
puts "Use testfixture, not tclsh, for these arguments."
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
|
||||
@@ -789,6 +876,7 @@ proc add_jobs_from_cmdline {patternlist} {
|
||||
set first [lindex $patternlist 0]
|
||||
switch -- $first {
|
||||
all {
|
||||
must_be_testfixture
|
||||
set patternlist [lrange $patternlist 1 end]
|
||||
set clist [trd_all_configs]
|
||||
foreach c $clist {
|
||||
@@ -824,7 +912,15 @@ proc add_jobs_from_cmdline {patternlist} {
|
||||
}
|
||||
}
|
||||
|
||||
list {
|
||||
set allperm [array names ::testspec]
|
||||
lappend allperm all mdevtest sdevtest release list
|
||||
puts "Allowed values for the PERMUTATION argument: [lsort $allperm]"
|
||||
exit 0
|
||||
}
|
||||
|
||||
default {
|
||||
must_be_testfixture
|
||||
if {[info exists ::testspec($first)]} {
|
||||
add_tcl_jobs "" $first [lrange $patternlist 1 end]
|
||||
} else {
|
||||
@@ -948,6 +1044,16 @@ proc launch_another_job {iJob} {
|
||||
close $fd
|
||||
}
|
||||
|
||||
# Add a batch/shell file command to set the directory used for temp
|
||||
# files to the test's working directory. Otherwise, tests that use
|
||||
# large numbers of temp files (e.g. zipvfs), might generate temp
|
||||
# filename collisions.
|
||||
if {$TRG(platform)=="win"} {
|
||||
set set_tmp_dir "SET SQLITE_TMPDIR=[file normalize $dir]"
|
||||
} else {
|
||||
set set_tmp_dir "export SQLITE_TMPDIR=\"[file normalize $dir]\""
|
||||
}
|
||||
|
||||
if { $TRG(dryrun) } {
|
||||
|
||||
mark_job_as_finished $job(jobid) "" done 0
|
||||
@@ -962,7 +1068,8 @@ proc launch_another_job {iJob} {
|
||||
set pwd [pwd]
|
||||
cd $dir
|
||||
set fd [open $TRG(run) w]
|
||||
puts $fd $job(cmd)
|
||||
puts $fd $set_tmp_dir
|
||||
puts $fd $job(cmd)
|
||||
close $fd
|
||||
set fd [open "|$TRG(runcmd) 2>@1" r]
|
||||
cd $pwd
|
||||
@@ -1078,15 +1185,42 @@ proc handle_buildonly {} {
|
||||
}
|
||||
}
|
||||
|
||||
# Handle the --explain option. Provide a human-readable
|
||||
# explanation of all the tests that are in the trdb database jobs
|
||||
# table.
|
||||
#
|
||||
proc explain_layer {indent depid} {
|
||||
global TRG
|
||||
if {$TRG(buildonly)} {
|
||||
set showtests 0
|
||||
} else {
|
||||
set showtests 1
|
||||
}
|
||||
trdb eval {SELECT jobid, displayname, displaytype, dirname
|
||||
FROM jobs WHERE depid=$depid ORDER BY displayname} {
|
||||
if {$displaytype=="bld"} {
|
||||
puts "${indent}$displayname in $dirname"
|
||||
explain_layer "${indent} " $jobid
|
||||
} elseif {$showtests} {
|
||||
puts "${indent}[lindex $displayname end]"
|
||||
}
|
||||
}
|
||||
}
|
||||
proc explain_tests {} {
|
||||
explain_layer "" ""
|
||||
}
|
||||
|
||||
sqlite3 trdb $TRG(dbname)
|
||||
trdb timeout $TRG(timeout)
|
||||
set tm [lindex [time { make_new_testset }] 0]
|
||||
if {$TRG(nJob)>1} {
|
||||
puts "splitting work across $TRG(nJob) jobs"
|
||||
if {$TRG(explain)} {
|
||||
explain_tests
|
||||
} else {
|
||||
if {$TRG(nJob)>1} {
|
||||
puts "splitting work across $TRG(nJob) jobs"
|
||||
}
|
||||
puts "built testset in [expr $tm/1000]ms.."
|
||||
handle_buildonly
|
||||
run_testset
|
||||
}
|
||||
puts "built testset in [expr $tm/1000]ms.."
|
||||
|
||||
handle_buildonly
|
||||
run_testset
|
||||
trdb close
|
||||
#puts [pwd]
|
||||
|
||||
@@ -598,7 +598,12 @@ proc trd_buildscript {config srcdir bMsvc} {
|
||||
|
||||
# Ensure that the named configuration exists.
|
||||
if {![info exists build($config)]} {
|
||||
error "No such build config: $config"
|
||||
if {$config!="help"} {
|
||||
puts "No such build config: $config"
|
||||
}
|
||||
puts "Available configurations: [lsort [array names build]]"
|
||||
flush stdout
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Generate and return the script.
|
||||
@@ -637,4 +642,3 @@ proc trd_test_script_properties {path} {
|
||||
|
||||
set trd_test_script_properties_cache($path)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user