diff options
author | drh <> | 2025-04-28 16:17:17 +0000 |
---|---|---|
committer | drh <> | 2025-04-28 16:17:17 +0000 |
commit | 7fec7c96c478848a769d9c35ecd2e00edb31612d (patch) | |
tree | dec282a27131b858d2bde04c6462611ef233c8f4 /test | |
parent | 738443c523a613a5cd2229a206501fbdace549aa (diff) | |
download | sqlite-7fec7c96c478848a769d9c35ecd2e00edb31612d.tar.gz sqlite-7fec7c96c478848a769d9c35ecd2e00edb31612d.zip |
Fix testrunner.tcl so that it honors pattern matches in non-testfixture
tests, such as fuzzcheck and sessionfuzz.
FossilOrigin-Name: 81857474fe90f50b760c22d61a6ad477642dabe1052390cd1614dcec8adb1376
Diffstat (limited to 'test')
-rwxr-xr-x | test/testrunner.tcl | 80 |
1 files changed, 45 insertions, 35 deletions
diff --git a/test/testrunner.tcl b/test/testrunner.tcl index 051f15d16..479f17868 100755 --- a/test/testrunner.tcl +++ b/test/testrunner.tcl @@ -1002,6 +1002,35 @@ proc add_job {args} { trdb last_insert_rowid } + +# Look to see if $jobcmd matches any of the glob patterns given in +# $patternlist. Return true if there is a match. Return false +# if no match is seen. +# +# An empty patternlist matches everything +# +proc job_matches_any_pattern {patternlist jobcmd} { + set bMatch 0 + if {[llength $patternlist]==0} {return 1} + foreach p $patternlist { + set p [string trim $p *] + if {[string index $p 0]=="^"} { + set p [string range $p 1 end] + } else { + set p "*$p" + } + if {[string index $p end]=="\$"} { + set p [string range $p 0 end-1] + } else { + set p "$p*" + } + if {[string match $p $jobcmd]} { + set bMatch 1 + break + } + } + return $bMatch +} # Argument $build is either an empty string, or else a list of length 3 @@ -1032,26 +1061,8 @@ proc add_tcl_jobs {build config patternlist {shelldepid ""}} { # The ::testspec array is populated by permutations.test foreach f [dict get $::testspec($config) -files] { - if {[llength $patternlist]>0} { - set bMatch 0 - foreach p $patternlist { - set p [string trim $p *] - if {[string index $p 0]=="^"} { - set p [string range $p 1 end] - } else { - set p "*$p" - } - if {[string index $p end]=="\$"} { - set p [string range $p 0 end-1] - } else { - set p "$p*" - } - if {[string match $p "$config [file tail $f]"]} { - set bMatch 1 - break - } - } - if {$bMatch==0} continue + if {![job_matches_any_pattern $patternlist "$config [file tail $f]"]} { + continue } if {[file pathtype $f]!="absolute"} { set f [file join $::testdir $f] } @@ -1145,26 +1156,29 @@ proc add_make_job {bld target} { -priority 1 } -proc add_fuzztest_jobs {buildname} { +proc add_fuzztest_jobs {buildname patternlist} { foreach {interpreter scripts} [trd_fuzztest_data] { + set bldDone 0 set subcmd [lrange $interpreter 1 end] set interpreter [lindex $interpreter 0] - set bld [add_build_job $buildname $interpreter] - foreach {depid dirname displayname} $bld {} - foreach s $scripts { # Fuzz data files fuzzdata1.db and fuzzdata2.db are larger than # the others. So ensure that these are run as a higher priority. set tail [file tail $s] + if {![job_matches_any_pattern $patternlist "fuzzcheck $tail"]} continue + if {!$bldDone} { + set bld [add_build_job $buildname $interpreter] + foreach {depid dirname displayname} $bld {} + set bldDone 1 + } if {$tail=="fuzzdata1.db" || $tail=="fuzzdata2.db"} { set priority 5 } else { set priority 1 } - add_job \ -displaytype fuzz \ -displayname "$buildname $interpreter $tail" \ @@ -1200,9 +1214,7 @@ proc add_devtest_jobs {lBld patternlist} { foreach b $lBld { set bld [add_build_job $b $TRG(testfixture)] add_tcl_jobs $bld veryquick $patternlist SHELL - if {$patternlist==""} { - add_fuzztest_jobs $b - } + add_fuzztest_jobs $b $patternlist 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]] @@ -1276,13 +1288,11 @@ proc add_jobs_from_cmdline {patternlist} { add_tcl_jobs $bld $c $patternlist SHELL } - if {$patternlist==""} { - foreach e [trd_extras $TRG(platform) $b] { - if {$e=="fuzztest"} { - add_fuzztest_jobs $b - } else { - add_make_job $bld $e - } + foreach e [trd_extras $TRG(platform) $b] { + if {$e=="fuzztest"} { + add_fuzztest_jobs $b $patternlist + } elseif {[job_matches_any_pattern $patternlist $e]} { + add_make_job $bld $e } } |