mirror of https://github.com/sqlite/sqlite
Add "mdevtest" target to makefiles. Equivalent to running "devtest" on both debug and non-debug builds.
FossilOrigin-Name: af354fbc0be06d5792a1e712ec4e9cec4c6cb4521335aa31f8f51ca5c94499ae
This commit is contained in:
parent
6c6badd2ef
commit
a6f09a0193
|
@ -1314,6 +1314,9 @@ testrunner: testfixture$(TEXE)
|
|||
#
|
||||
devtest: testfixture$(TEXE) fuzztest testrunner
|
||||
|
||||
mdevtest:
|
||||
$(TCLSH_CMD) $(TOP)/test/testrunner.tcl mdevtest
|
||||
|
||||
# Testing for a release
|
||||
#
|
||||
releasetest: testfixture$(TEXE)
|
||||
|
|
|
@ -2505,6 +2505,9 @@ testrunner: testfixture.exe
|
|||
#
|
||||
devtest: testfixture.exe fuzztest testrunner
|
||||
|
||||
mdevtest:
|
||||
$(TCLSH_CMD) $(TOP)\test\testrunner.tcl mdevtest
|
||||
|
||||
# Testing for a release
|
||||
#
|
||||
releasetest: testfixture.exe fuzztest
|
||||
|
|
3
main.mk
3
main.mk
|
@ -940,6 +940,9 @@ testrunner: testfixture$(EXE)
|
|||
#
|
||||
devtest: testfixture$(EXE) fuzztest testrunner
|
||||
|
||||
mdevtest:
|
||||
tclsh $(TOP)/test/testrunner.tcl mdevtest
|
||||
|
||||
# A very quick test using only testfixture and omitting all the slower
|
||||
# tests. Designed to run in under 3 minutes on a workstation.
|
||||
#
|
||||
|
|
24
manifest
24
manifest
|
@ -1,11 +1,11 @@
|
|||
C Modernize\sthe\ssqlite3\sshell\sman\spage\sa\sbit,\sper\s[forum:d9aa201dee553bb2|forum\srequest].
|
||||
D 2023-08-11T22:40:06.541
|
||||
C Add\s"mdevtest"\starget\sto\smakefiles.\sEquivalent\sto\srunning\s"devtest"\son\sboth\sdebug\sand\snon-debug\sbuilds.
|
||||
D 2023-08-12T17:36:57.632
|
||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
||||
F Makefile.in 5ad2d1e198306bc730f06f7545d3a8832225b1bfddbc648d97c0e0b9a35f67e9
|
||||
F Makefile.in 6f391d54fa01f8a49b024fef5cce1ab8234c281164641cf9a52694b432bdec1b
|
||||
F Makefile.linux-gcc f3842a0b1efbfbb74ac0ef60e56b301836d05b4d867d014f714fa750048f1ab6
|
||||
F Makefile.msc daad4a19e0b3c3c3b79b64d4ddbf75e3f506405e8d3f3f604d6f48b26043c51f
|
||||
F Makefile.msc dd4c8fcc274e7933756cc581f7d3b4de080e8e8eef7770edde079f4aa9c6c206
|
||||
F README.md c1c4218efcc4071a6e26db2b517fdbc1035696a29b370edd655faddbef02b224
|
||||
F VERSION c6366dc72582d3144ce87b013cc35fe48d62f6d07d5be0c9716ea33c862144aa
|
||||
F aclocal.m4 a5c22d164aff7ed549d53a90fa56d56955281f50
|
||||
|
@ -563,7 +563,7 @@ F ext/wasm/wasmfs.make 8a4955882aaa0783b3f60a9484a1f0f3d8b6f775c0fcd17c082f31966
|
|||
F install-sh 9d4de14ab9fb0facae2f48780b874848cbf2f895 x
|
||||
F ltmain.sh 3ff0879076df340d2e23ae905484d8c15d5fdea8
|
||||
F magic.txt 5ade0bc977aa135e79e3faaea894d5671b26107cc91e70783aa7dc83f22f3ba0
|
||||
F main.mk 0eb735008653412026092961cecdf7d698156c060e4062a69d911335982d471c
|
||||
F main.mk e18c03071dbb9da424212ba2a1ea331ae0e8f6d7d51283b7ad610c52ea11229c
|
||||
F mptest/config01.test 3c6adcbc50b991866855f1977ff172eb6d901271
|
||||
F mptest/config02.test 4415dfe36c48785f751e16e32c20b077c28ae504
|
||||
F mptest/crash01.test 61e61469e257df0850df4293d7d4d6c2af301421
|
||||
|
@ -1370,7 +1370,7 @@ F test/pcache.test c8acbedd3b6fd0f9a7ca887a83b11d24a007972b
|
|||
F test/pcache2.test af7f3deb1a819f77a6d0d81534e97d1cf62cd442
|
||||
F test/pendingrace.test cbdf0f74bc939fb43cebad64dda7a0b5a3941a10b7e9cc2b596ff3e423a18156
|
||||
F test/percentile.test 4243af26b8f3f4555abe166f723715a1f74c77ff
|
||||
F test/permutations.test 8bd6b6db541e2a7f9bb894be99ef5c00526b23762c4a00c574e1cba697495125
|
||||
F test/permutations.test 4268ad170a788ec1c0e3179786ffdaac6d8a022d4f849587a3378945a48fdde1
|
||||
F test/pg_common.tcl 3b27542224db1e713ae387459b5d117c836a5f6e328846922993b6d2b7640d9f
|
||||
F test/pragma.test 57a36226218c03cfb381019fe43234b2cefbd8a1f12825514f906a17ccf7991e
|
||||
F test/pragma2.test e5d5c176360c321344249354c0c16aec46214c9f
|
||||
|
@ -1399,7 +1399,7 @@ F test/recover.test fd5199f928757cb308661b5fdca1abc19398a798ff7f24b57c3071e9f8e0
|
|||
F test/regexp1.test 8f2a8bc1569666e29a4cee6c1a666cd224eb6d50e2470d1dc1df995170f3e0f1
|
||||
F test/regexp2.test 55ed41da802b0e284ac7e2fe944be3948f93ff25abbca0361a609acfed1368b5
|
||||
F test/reindex.test cd9d6021729910ece82267b4f5e1b5ac2911a7566c43b43c176a6a4732e2118d
|
||||
F test/releasetest_data.tcl c8cf85aeb313a771e18dae01396f5ca70e85d4574df681990629b1103f185afe
|
||||
F test/releasetest_data.tcl 693e0ab5c07100d749250bf0b60abbd436525ac44fa345eab12cd09c9d5301d5
|
||||
F test/resetdb.test 54c06f18bc832ac6d6319e5ab23d5c8dd49fdbeec7c696d791682a8006bd5fc3
|
||||
F test/resolver01.test f4022acafda7f4d40eca94dbf16bc5fc4ac30ceb
|
||||
F test/returning1.test db532cde29d6aebbc48c6ddc3149b30476f8e69ca7a2c4b53986c7635e6fd8ec
|
||||
|
@ -1562,7 +1562,7 @@ F test/temptable2.test 76821347810ecc88203e6ef0dd6897b6036ac788e9dd3e6b04fd4d163
|
|||
F test/temptable3.test d11a0974e52b347e45ee54ef1923c91ed91e4637
|
||||
F test/temptrigger.test 38f0ca479b1822d3117069e014daabcaacefffcc
|
||||
F test/tester.tcl 68454ef88508c196d19e8694daa27bff7107a91857799eaa12f417188ae53ede
|
||||
F test/testrunner.tcl 59490f189cac99b16b0376d0cc0a7ecfb753a84b89c9f4c361af337d88db53ac
|
||||
F test/testrunner.tcl 3d34b921c035e36a65aa83ff86c90e025e5f49a7b60a1c659295ce203ec43d37
|
||||
F test/testrunner_data.tcl 8169c68654ac8906833b8a6aadca973358a441ebf88270dd05c153e5f96f76b8
|
||||
F test/thread001.test a0985c117eab62c0c65526e9fa5d1360dd1cac5b03bde223902763274ce21899
|
||||
F test/thread002.test c24c83408e35ba5a952a3638b7ac03ccdf1ce4409289c54a050ac4c5f1de7502
|
||||
|
@ -2051,8 +2051,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 8a6b0c24937e855b710f97b4aea973eff53e6d43e1182842731547aa4b37db2a
|
||||
R 43c88f4a8c1b73283f31097d1c50c3b5
|
||||
U stephan
|
||||
Z 44f8c32555ee16d703264cb55479403e
|
||||
P 3bc0693c4633f545f09dbee702e25354504b20836373a068447e6c61cb2ebd79
|
||||
R 5871751fcc353cdba4cb88e039a842ae
|
||||
U dan
|
||||
Z 6d27e9e4f744d4df09f5cac7701d8a3b
|
||||
# Remove this line to create a well-formed Fossil manifest.
|
||||
|
|
|
@ -1 +1 @@
|
|||
3bc0693c4633f545f09dbee702e25354504b20836373a068447e6c61cb2ebd79
|
||||
af354fbc0be06d5792a1e712ec4e9cec4c6cb4521335aa31f8f51ca5c94499ae
|
|
@ -10,9 +10,11 @@
|
|||
#***********************************************************************
|
||||
#
|
||||
|
||||
set testdir [file dirname $argv0]
|
||||
source $testdir/tester.tcl
|
||||
db close
|
||||
if {[info vars ::testdir]==""} {
|
||||
set testdir [file dirname $argv0]
|
||||
source $testdir/tester.tcl
|
||||
db close
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
# test_suite NAME OPTIONS
|
||||
|
@ -813,117 +815,111 @@ test_suite "inmemory_journal" -description {
|
|||
recoverpgsz.test
|
||||
}]
|
||||
|
||||
ifcapable mem3 {
|
||||
test_suite "memsys3" -description {
|
||||
Run tests using the allocator in mem3.c.
|
||||
} -files [test_set $::allquicktests -exclude {
|
||||
autovacuum.test delete3.test manydb.test
|
||||
bigrow.test incrblob2.test memdb.test
|
||||
bitvec.test index2.test memsubsys1.test
|
||||
capi3c.test ioerr.test memsubsys2.test
|
||||
capi3.test join3.test pagesize.test
|
||||
collate5.test limit.test backup_ioerr.test
|
||||
backup_malloc.test
|
||||
}] -initialize {
|
||||
catch {db close}
|
||||
sqlite3_reset_auto_extension
|
||||
sqlite3_shutdown
|
||||
sqlite3_config_heap 25000000 0
|
||||
sqlite3_config_lookaside 0 0
|
||||
ifcapable mem5 {
|
||||
# If both memsys3 and memsys5 are enabled in the build, the call to
|
||||
# [sqlite3_config_heap] will initialize the system to use memsys5.
|
||||
# The following overrides this preference and installs the memsys3
|
||||
# allocator.
|
||||
sqlite3_install_memsys3
|
||||
}
|
||||
install_malloc_faultsim 1
|
||||
sqlite3_initialize
|
||||
autoinstall_test_functions
|
||||
} -shutdown {
|
||||
catch {db close}
|
||||
sqlite3_shutdown
|
||||
sqlite3_config_heap 0 0
|
||||
sqlite3_config_lookaside 100 500
|
||||
install_malloc_faultsim 1
|
||||
sqlite3_initialize
|
||||
autoinstall_test_functions
|
||||
test_suite "memsys3" -description {
|
||||
Run tests using the allocator in mem3.c.
|
||||
} -files [test_set $::allquicktests -exclude {
|
||||
autovacuum.test delete3.test manydb.test
|
||||
bigrow.test incrblob2.test memdb.test
|
||||
bitvec.test index2.test memsubsys1.test
|
||||
capi3c.test ioerr.test memsubsys2.test
|
||||
capi3.test join3.test pagesize.test
|
||||
collate5.test limit.test backup_ioerr.test
|
||||
backup_malloc.test
|
||||
}] -initialize {
|
||||
catch {db close}
|
||||
sqlite3_reset_auto_extension
|
||||
sqlite3_shutdown
|
||||
sqlite3_config_heap 25000000 0
|
||||
sqlite3_config_lookaside 0 0
|
||||
ifcapable mem5 {
|
||||
# If both memsys3 and memsys5 are enabled in the build, the call to
|
||||
# [sqlite3_config_heap] will initialize the system to use memsys5.
|
||||
# The following overrides this preference and installs the memsys3
|
||||
# allocator.
|
||||
sqlite3_install_memsys3
|
||||
}
|
||||
install_malloc_faultsim 1
|
||||
sqlite3_initialize
|
||||
autoinstall_test_functions
|
||||
} -shutdown {
|
||||
catch {db close}
|
||||
sqlite3_shutdown
|
||||
sqlite3_config_heap 0 0
|
||||
sqlite3_config_lookaside 100 500
|
||||
install_malloc_faultsim 1
|
||||
sqlite3_initialize
|
||||
autoinstall_test_functions
|
||||
}
|
||||
|
||||
ifcapable mem5 {
|
||||
test_suite "memsys5" -description {
|
||||
Run tests using the allocator in mem5.c.
|
||||
} -files [test_set $::allquicktests -exclude {
|
||||
autovacuum.test delete3.test manydb.test
|
||||
bigrow.test incrblob2.test memdb.test
|
||||
bitvec.test index2.test memsubsys1.test
|
||||
capi3c.test ioerr.test memsubsys2.test
|
||||
capi3.test join3.test pagesize.test
|
||||
collate5.test limit.test zeroblob.test
|
||||
}] -initialize {
|
||||
catch {db close}
|
||||
sqlite3_shutdown
|
||||
sqlite3_config_heap 25000000 64
|
||||
sqlite3_config_lookaside 0 0
|
||||
install_malloc_faultsim 1
|
||||
sqlite3_initialize
|
||||
autoinstall_test_functions
|
||||
} -shutdown {
|
||||
catch {db close}
|
||||
sqlite3_shutdown
|
||||
sqlite3_config_heap 0 0
|
||||
sqlite3_config_lookaside 100 500
|
||||
install_malloc_faultsim 1
|
||||
sqlite3_initialize
|
||||
autoinstall_test_functions
|
||||
}
|
||||
|
||||
test_suite "memsys5-2" -description {
|
||||
Run tests using the allocator in mem5.c in a different configuration.
|
||||
} -files {
|
||||
select1.test
|
||||
} -initialize {
|
||||
catch {db close}
|
||||
sqlite3_shutdown
|
||||
sqlite3_config_memstatus 0
|
||||
sqlite3_config_heap 40000000 16
|
||||
sqlite3_config_lookaside 0 0
|
||||
install_malloc_faultsim 1
|
||||
sqlite3_initialize
|
||||
autoinstall_test_functions
|
||||
} -shutdown {
|
||||
catch {db close}
|
||||
sqlite3_shutdown
|
||||
sqlite3_config_heap 0 0
|
||||
sqlite3_config_lookaside 100 500
|
||||
install_malloc_faultsim 1
|
||||
sqlite3_initialize
|
||||
autoinstall_test_functions
|
||||
}
|
||||
test_suite "memsys5" -description {
|
||||
Run tests using the allocator in mem5.c.
|
||||
} -files [test_set $::allquicktests -exclude {
|
||||
autovacuum.test delete3.test manydb.test
|
||||
bigrow.test incrblob2.test memdb.test
|
||||
bitvec.test index2.test memsubsys1.test
|
||||
capi3c.test ioerr.test memsubsys2.test
|
||||
capi3.test join3.test pagesize.test
|
||||
collate5.test limit.test zeroblob.test
|
||||
}] -initialize {
|
||||
catch {db close}
|
||||
sqlite3_shutdown
|
||||
sqlite3_config_heap 25000000 64
|
||||
sqlite3_config_lookaside 0 0
|
||||
install_malloc_faultsim 1
|
||||
sqlite3_initialize
|
||||
autoinstall_test_functions
|
||||
} -shutdown {
|
||||
catch {db close}
|
||||
sqlite3_shutdown
|
||||
sqlite3_config_heap 0 0
|
||||
sqlite3_config_lookaside 100 500
|
||||
install_malloc_faultsim 1
|
||||
sqlite3_initialize
|
||||
autoinstall_test_functions
|
||||
}
|
||||
|
||||
ifcapable threadsafe {
|
||||
test_suite "no_mutex_try" -description {
|
||||
The sqlite3_mutex_try() interface always fails
|
||||
} -files [
|
||||
test_set $::allquicktests -exclude mutex1.test mutex2.test
|
||||
] -initialize {
|
||||
catch {db close}
|
||||
sqlite3_shutdown
|
||||
install_mutex_counters 1
|
||||
set ::disable_mutex_try 1
|
||||
sqlite3_initialize
|
||||
autoinstall_test_functions
|
||||
} -shutdown {
|
||||
catch {db close}
|
||||
catch {db2 close}
|
||||
catch {db3 close}
|
||||
sqlite3_shutdown
|
||||
install_mutex_counters 0
|
||||
sqlite3_initialize
|
||||
autoinstall_test_functions
|
||||
}
|
||||
test_suite "memsys5-2" -description {
|
||||
Run tests using the allocator in mem5.c in a different configuration.
|
||||
} -files {
|
||||
select1.test
|
||||
} -initialize {
|
||||
catch {db close}
|
||||
sqlite3_shutdown
|
||||
sqlite3_config_memstatus 0
|
||||
sqlite3_config_heap 40000000 16
|
||||
sqlite3_config_lookaside 0 0
|
||||
install_malloc_faultsim 1
|
||||
sqlite3_initialize
|
||||
autoinstall_test_functions
|
||||
} -shutdown {
|
||||
catch {db close}
|
||||
sqlite3_shutdown
|
||||
sqlite3_config_heap 0 0
|
||||
sqlite3_config_lookaside 100 500
|
||||
install_malloc_faultsim 1
|
||||
sqlite3_initialize
|
||||
autoinstall_test_functions
|
||||
}
|
||||
|
||||
test_suite "no_mutex_try" -description {
|
||||
The sqlite3_mutex_try() interface always fails
|
||||
} -files [
|
||||
test_set $::allquicktests -exclude mutex1.test mutex2.test
|
||||
] -initialize {
|
||||
catch {db close}
|
||||
sqlite3_shutdown
|
||||
install_mutex_counters 1
|
||||
set ::disable_mutex_try 1
|
||||
sqlite3_initialize
|
||||
autoinstall_test_functions
|
||||
} -shutdown {
|
||||
catch {db close}
|
||||
catch {db2 close}
|
||||
catch {db3 close}
|
||||
sqlite3_shutdown
|
||||
install_mutex_counters 0
|
||||
sqlite3_initialize
|
||||
autoinstall_test_functions
|
||||
}
|
||||
|
||||
# run_tests "crash_safe_append" -description {
|
||||
|
|
|
@ -53,6 +53,12 @@ array set ::Configs [strip_comments {
|
|||
--enable-session
|
||||
-DSQLITE_ENABLE_RBU
|
||||
}
|
||||
"All-Debug" {
|
||||
--enable-debug --enable-all
|
||||
}
|
||||
"All-O0" {
|
||||
-O0 --enable-all
|
||||
}
|
||||
"Sanitize" {
|
||||
CC=clang -fsanitize=address,undefined
|
||||
-DSQLITE_ENABLE_STAT4
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
set dir [pwd]
|
||||
set testdir [file dirname $argv0]
|
||||
set testdir [file normalize [file dirname $argv0]]
|
||||
set saved $argv
|
||||
set argv [list]
|
||||
source [file join $testdir testrunner_data.tcl]
|
||||
|
@ -8,6 +8,16 @@ source [file join $testdir permutations.test]
|
|||
set argv $saved
|
||||
cd $dir
|
||||
|
||||
# Usually this script is run by [testfixture]. But it can also be run
|
||||
# by a regular [tclsh]. For these cases, load the sqlite3 package and
|
||||
# implement a [clock_milliseconds] command.
|
||||
package require sqlite3
|
||||
if {[info commands clock_milliseconds]==""} {
|
||||
proc clock_milliseconds {} {
|
||||
clock milliseconds
|
||||
}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
# Usage:
|
||||
#
|
||||
|
@ -152,7 +162,7 @@ set TRG(schema) {
|
|||
state TEXT CHECK( state IN ('', 'ready', 'running', 'done', 'failed') ),
|
||||
time INTEGER, -- Time in ms
|
||||
output TEXT, -- full output of test script
|
||||
priority AS ((config='make') + ((config='build')*2) + (slow*4)),
|
||||
priority AS (((config='make')*3) + (config='build') + (slow*2)),
|
||||
jobtype AS (
|
||||
CASE WHEN config IN ('build', 'make') THEN config ELSE 'script' END
|
||||
),
|
||||
|
@ -181,10 +191,11 @@ if {[llength $argv]==2
|
|||
set script [file normalize [lindex $argv 1]]
|
||||
set ::argv [list]
|
||||
|
||||
set testdir [file dirname $argv0]
|
||||
source $::testdir/tester.tcl
|
||||
|
||||
if {$permutation=="full"} {
|
||||
|
||||
set testdir [file dirname $argv0]
|
||||
source $::testdir/tester.tcl
|
||||
unset -nocomplain ::G(isquick)
|
||||
reset_db
|
||||
|
||||
|
@ -289,9 +300,13 @@ if {[llength $argv]==1
|
|||
|
||||
set cmdline [mydb one { SELECT value FROM config WHERE name='cmdline' }]
|
||||
set nJob [mydb one { SELECT value FROM config WHERE name='njob' }]
|
||||
set tm [expr [clock_milliseconds] - [mydb one {
|
||||
SELECT value FROM config WHERE name='start'
|
||||
}]]
|
||||
|
||||
set now [clock_milliseconds]
|
||||
set tm [mydb one {
|
||||
SELECT
|
||||
COALESCE((SELECT value FROM config WHERE name='end'), $now) -
|
||||
(SELECT value FROM config WHERE name='start')
|
||||
}]
|
||||
|
||||
set total 0
|
||||
foreach s {"" ready running done failed} { set S($s) 0 }
|
||||
|
@ -315,7 +330,6 @@ if {[llength $argv]==1
|
|||
set srcdir [file dirname [file dirname $TRG(info_script)]]
|
||||
if {$S(running)>0} {
|
||||
puts "Running: "
|
||||
set now [clock_milliseconds]
|
||||
mydb eval {
|
||||
SELECT build, config, filename, time FROM script WHERE state='running'
|
||||
ORDER BY time
|
||||
|
@ -411,8 +425,6 @@ proc dirs_allocDir {} {
|
|||
return $iRet
|
||||
}
|
||||
|
||||
set testdir [file dirname $argv0]
|
||||
|
||||
# Check that directory $dir exists. If it does not, create it. If
|
||||
# it does, delete its contents.
|
||||
#
|
||||
|
@ -449,7 +461,16 @@ proc testset_patternlist {patternlist} {
|
|||
|
||||
set first [lindex $patternlist 0]
|
||||
|
||||
if {$first=="release"} {
|
||||
if {$first=="mdevtest"} {
|
||||
set patternlist [lrange $patternlist 1 end]
|
||||
|
||||
foreach b {All-Debug All-O0} {
|
||||
lappend testset [list $b build testfixture]
|
||||
lappend testset [list $b make fuzztest]
|
||||
testset_append testset $b veryquick $patternlist
|
||||
}
|
||||
|
||||
} elseif {$first=="release"} {
|
||||
set platform $::TRG(platform)
|
||||
|
||||
set patternlist [lrange $patternlist 1 end]
|
||||
|
@ -865,6 +886,8 @@ proc run_testset {} {
|
|||
one_line_report
|
||||
|
||||
r_write_db {
|
||||
set tm [clock_milliseconds]
|
||||
trdb eval { REPLACE INTO config VALUES('end', $tm ); }
|
||||
set nErr [trdb one {SELECT count(*) FROM script WHERE state='failed'}]
|
||||
if {$nErr>0} {
|
||||
puts "$nErr failures:"
|
||||
|
|
Loading…
Reference in New Issue