1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-07-30 19:03:16 +03:00

Update testrunner.tcl to allow the user to specify which tests to run on the command line.

FossilOrigin-Name: 900febcf362fa5f592c640d16177f33c13aab11ce31a61c7e18ff1be6e70bf9b
This commit is contained in:
dan
2022-07-13 19:57:35 +00:00
parent e9a7ebe19f
commit 95cc6a5e11
4 changed files with 143 additions and 74 deletions

View File

@ -1,5 +1,5 @@
C Fix\stestrunner.tcl\sso\sthat\sit\schecks\sfor\smemory\sleaks.
D 2022-07-13T17:46:42.435
C Update\stestrunner.tcl\sto\sallow\sthe\suser\sto\sspecify\swhich\stests\sto\srun\son\sthe\scommand\sline.
D 2022-07-13T19:57:35.922
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@ -1507,7 +1507,8 @@ F test/temptable2.test d2940417496e2b9548e01d09990763fbe88c316504033256d51493e1f
F test/temptable3.test d11a0974e52b347e45ee54ef1923c91ed91e4637
F test/temptrigger.test 38f0ca479b1822d3117069e014daabcaacefffcc
F test/tester.tcl 76771269dcc20b2c2d1d6f1175dd50d1eebddc004aebac865483f1829a5cd398
F test/testrunner.tcl 3bdd2d32319c65f34d1aafe6fe66aac4881e78ded4880719f48203aeea13b1c4
F test/testrunner.tcl 297f066a0c2c78e552a29060701825fcfd16cd915c19d51654112d54df2feacc
F test/testset.tcl 8295bbfe2da21bc32a818b55b074d572a24a44fccfb74da919194a749bb7654c
F test/thread001.test b61a29dd87cf669f5f6ac96124a7c97d71b0c80d9012746072055877055cf9ef
F test/thread002.test e630504f8a06c00bf8bbe68528774dd96aeb2e58
F test/thread003.test ee4c9efc3b86a6a2767516a37bd64251272560a7
@ -1980,8 +1981,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 ef229cbb7ffbeb8c8877dff70e9d6d43050d2297dee582a37df3a0caaebd2a41
R 9ae28163af03b5806c7e690857875476
P 106f6724d54ccec3edf8c9a0422b89c4f227adb26021ed6f0fc91392ef4b3fc5
R 032a0dd6c8d21e7f2f5ea3dc860bfe74
U dan
Z 14e1b9ab4edb92095656b55f758ae601
Z f52161ed1f80342c1b5b733a625a7b6b
# Remove this line to create a well-formed Fossil manifest.

View File

@ -1 +1 @@
106f6724d54ccec3edf8c9a0422b89c4f227adb26021ed6f0fc91392ef4b3fc5
900febcf362fa5f592c640d16177f33c13aab11ce31a61c7e18ff1be6e70bf9b

View File

@ -4,7 +4,7 @@
# Usage:
#
proc usage {} {
puts stderr "Usage: $::argv0 ?SWITCHES?"
puts stderr "Usage: $::argv0 ?SWITCHES? ?PATTERN? ..."
puts stderr ""
puts stderr "where SWITCHES are:"
puts stderr " --jobs NUMBER-OF-JOBS"
@ -70,7 +70,6 @@ proc default_njob {} {
#-------------------------------------------------------------------------
set R(dbname) [file normalize testrunner.db]
set R(logname) [file normalize testrunner.log]
set R(info_script) [file normalize [info script]]
@ -78,6 +77,10 @@ set R(timeout) 10000 ;# Default busy-timeout for testrunner.
set R(nJob) [default_njob] ;# Default number of helper processes
set R(leaker) "" ;# Name of first script to leak memory
set R(patternlist) [list]
set testdir [file dirname $argv0]
source $testdir/testset.tcl
# Parse the command line options. There are two ways to invoke this
# script - to create a helper or coordinator process. If there are
@ -114,80 +117,24 @@ if {$R(helper)==0} {
set a [lindex $argv $ii]
set n [string length $a]
if {[string range $a 0 0]=="-"} {
if {($n>2 && [string match "$a*" --jobs]) || $a=="-j"} {
incr ii
set R(nJob) [lindex $argv $ii]
} else {
usage
}
} else {
lappend R(patternlist) [string map {% * _ .} $a]
}
}
set argv [list]
}
set testdir [file dirname $argv0]
source $testdir/tester.tcl
db close
#--------------------------------------------------------------------
# This is temporary!
#
# Return a list of all scripts in the "veryquick" test.
#
proc all_veryquick_scripts {} {
set OMIT {
async2.test async3.test backup_ioerr.test corrupt.test
corruptC.test crash.test crash2.test crash3.test crash4.test crash5.test
crash6.test crash7.test delete3.test e_fts3.test fts3rnd.test
fkey_malloc.test fuzz.test fuzz3.test fuzz_malloc.test in2.test loadext.test
misc7.test mutex2.test notify2.test onefile.test pagerfault2.test
savepoint4.test savepoint6.test select9.test
speed1.test speed1p.test speed2.test speed3.test speed4.test
speed4p.test sqllimits1.test tkt2686.test thread001.test thread002.test
thread003.test thread004.test thread005.test trans2.test vacuum3.test
incrvacuum_ioerr.test autovacuum_crash.test btree8.test shared_err.test
vtab_err.test walslow.test walcrash.test walcrash3.test
walthread.test rtree3.test indexfault.test securedel2.test
sort3.test sort4.test fts4growth.test fts4growth2.test
bigsort.test walprotocol.test mmap4.test fuzzer2.test
walcrash2.test e_fkey.test backup.test
writecrash.test
fts4merge.test fts4merge2.test fts4merge4.test fts4check.test
fts4merge5.test
fts3cov.test fts3snippet.test fts3corrupt2.test fts3an.test
fts3defer.test fts4langid.test fts3sort.test fts5unicode.test
rtree4.test sessionbig.test
all.test async.test quick.test veryquick.test
memleak.test permutations.test soak.test fts3.test
mallocAll.test rtree.test full.test extraquick.test
session.test rbu.test
}
set testdir [file normalize $::testdir]
set ret [list]
foreach f [glob -nocomplain $testdir/*.test] {
if {[lsearch $OMIT [file tail $f]]<0
&& [string match *malloc* $f]==0
&& [string match *ioerr* $f]==0
&& [string match *fault* $f]==0
&& [string match *bigfile* $f]==0
&& [string match *_err* $f]==0
&& [string match *fts5corrupt* $f]==0
&& [string match *fts5big* $f]==0
&& [string match *fts5aj* $f]==0
} {
lappend ret $f
}
}
set ret
}
#--------------------------------------------------------------------
proc r_write_db {tcl} {
global R
@ -204,9 +151,10 @@ proc r_write_db {tcl} {
proc make_new_testset {} {
global R
set scripts [testset_patternlist $R(patternlist)]
r_write_db {
db eval $R(schema)
foreach s [all_veryquick_scripts] {
foreach s $scripts {
db eval { INSERT INTO script(filename, state) VALUES ($s, 'ready') }
}
}

120
test/testset.tcl Normal file
View File

@ -0,0 +1,120 @@
# Commands in this file:
#
# testset_all
# Return a list of all test scripts designed to be run individually.
#
# testset_veryquick
# The subset of [testset_all] meant to run as veryquick.test.
#
set D(testdir) [file dir [file normalize [info script]]]
proc testset_all {} {
global D
set ret [list]
# The following tests are driver scripts that themselves run lots of other
# test scripts. They should be ignored here.
set drivers {
all.test async.test quick.test veryquick.test
memleak.test permutations.test soak.test fts3.test
mallocAll.test rtree.test full.test extraquick.test
session.test rbu.test
}
set srcdir [file dirname $D(testdir)]
set ret [glob -nocomplain \
$srcdir/test/*.test \
$srcdir/ext/rtree/*.test \
$srcdir/ext/fts5/test/*.test \
$srcdir/ext/expert/*.test \
$srcdir/ext/session/*.test \
]
set ret [ts_filter $ret $drivers]
return $ret
}
proc testset_veryquick {} {
set ret [testset_all]
set ret [ts_filter $ret {
async2.test async3.test backup_ioerr.test corrupt.test
corruptC.test crash.test crash2.test crash3.test crash4.test crash5.test
crash6.test crash7.test delete3.test e_fts3.test fts3rnd.test
fkey_malloc.test fuzz.test fuzz3.test fuzz_malloc.test in2.test loadext.test
misc7.test mutex2.test notify2.test onefile.test pagerfault2.test
savepoint4.test savepoint6.test select9.test
speed1.test speed1p.test speed2.test speed3.test speed4.test
speed4p.test sqllimits1.test tkt2686.test thread001.test thread002.test
thread003.test thread004.test thread005.test trans2.test vacuum3.test
incrvacuum_ioerr.test autovacuum_crash.test btree8.test shared_err.test
vtab_err.test walslow.test walcrash.test walcrash3.test
walthread.test rtree3.test indexfault.test securedel2.test
sort3.test sort4.test fts4growth.test fts4growth2.test
bigsort.test walprotocol.test mmap4.test fuzzer2.test
walcrash2.test e_fkey.test backup.test
fts4merge.test fts4merge2.test fts4merge4.test fts4check.test
fts4merge5.test
fts3cov.test fts3snippet.test fts3corrupt2.test fts3an.test
fts3defer.test fts4langid.test fts3sort.test fts5unicode.test
rtree4.test
sessionbig.test
}]
set ret [ts_filter $ret {
*malloc* *ioerr* *fault* *bigfile* *_err* *fts5corrupt* *fts5big* *fts5aj*
}]
return $ret
}
proc ts_filter {input exlist} {
foreach f $input { set a($f) 1 }
foreach e $exlist { array unset a */$e }
array names a
}
proc testset_patternlist {patternlist} {
set nPat [llength $patternlist]
if {$nPat==0} {
set scripts [testset_veryquick]
} else {
set ii 0
set p0 [lindex $patternlist 0]
if {$p0=="veryquick"} {
set scripts [testset_veryquick]
incr ii
} elseif {$p0=="all"} {
set scripts [testset_all]
incr ii
} else {
set scripts [testset_all]
}
if {$nPat>$ii} {
array set S [list]
foreach f $scripts { set a([file tail $f]) $f }
foreach p [lrange $patternlist $ii end] {
set nList [llength [array names a $p]]
if {$nList==0} {
puts stderr "Argument $p matches no scripts (typo?)"
exit 1
}
foreach n [array names a $p] { set S($a($n)) 1 }
}
}
set scripts [lsort [array names S]]
}
set scripts
}