]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
New testrunner.tcl option "--case DISPLAYLNAME" only runs the single case
authordrh <>
Mon, 6 Oct 2025 15:53:52 +0000 (15:53 +0000)
committerdrh <>
Mon, 6 Oct 2025 15:53:52 +0000 (15:53 +0000)
(and its build dependencies) that exactly matches DISPLAYNAME.

FossilOrigin-Name: 8ea2e097b731514c284f255f12b08e15f63c7f49641a698e61ee7e47cc9d3c45

manifest
manifest.uuid
test/testrunner.tcl

index 5b7d0460689e0faeaaf4b73e89c16d28b0734d2b..e681bb3fcdae39a94d1ed8b1f34e9a3cac56f675 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\stestrunner.tcl\sso\sthat\s--help\soutput\sgoes\sto\sstdout,\snot\sstderr.
-D 2025-10-06T14:30:22.167
+C New\stestrunner.tcl\soption\s"--case\sDISPLAYLNAME"\sonly\sruns\sthe\ssingle\scase\n(and\sits\sbuild\sdependencies)\sthat\sexactly\smatches\sDISPLAYNAME.
+D 2025-10-06T15:53:52.416
 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
@@ -1690,7 +1690,7 @@ F test/temptable2.test 76821347810ecc88203e6ef0dd6897b6036ac788e9dd3e6b04fd4d163
 F test/temptable3.test d11a0974e52b347e45ee54ef1923c91ed91e4637
 F test/temptrigger.test 38f0ca479b1822d3117069e014daabcaacefffcc
 F test/tester.tcl 463ae33b8bf75ac77451df19bd65e7c415c2e9891227c7c9e657d0a2d8e1074a
-F test/testrunner.tcl 6d238aa684188ed9c40de5eaba9ba520045df9ac64877248543e44ae4555b9eb x
+F test/testrunner.tcl 66d14fc27a154de22c214a9db4b7dcab6aed2b4d84972ffce760d470b8191b7d x
 F test/testrunner_data.tcl c507a9afa911c03446ed90442ffd4a98aca02882c3d51bd1177c24795674def8
 F test/testrunner_estwork.tcl 7927a84327259a32854926f68a75292e33a61e7e052fdbfcb01f18696c99c724
 F test/thread001.test a0985c117eab62c0c65526e9fa5d1360dd1cac5b03bde223902763274ce21899
@@ -2168,8 +2168,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350
 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
 F tool/warnings.sh 1ad0169b022b280bcaaf94a7fa231591be96b514230ab5c98fbf15cd7df842dd
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P d71cd722c478288601c70df8cec8c242cc623d2147b30f4f68dad57c75b3ee4a
-R 3c756745369c530a639ff29c23ffa763
+P 441a759c225d4e710a693339402624e7ba52852c08aa64439ed4568c193ad529
+R e90b90f4d394350c07286abfd5e6ecff
 U drh
-Z e37f86978f05cd5d329c04e26e755a80
+Z 378abedcb519a363b3577a7db41694b7
 # Remove this line to create a well-formed Fossil manifest.
index 0175d1e0bc13afbab28d26f7a5ff2be9b820855d..81d80428c15fbd471fa03a2707d59abeff0bde89 100644 (file)
@@ -1 +1 @@
-441a759c225d4e710a693339402624e7ba52852c08aa64439ed4568c193ad529
+8ea2e097b731514c284f255f12b08e15f63c7f49641a698e61ee7e47cc9d3c45
index 70cc60a02628c8440b87849399438d7556d9f3f0..d933aba51eeda0b2422fc6e5ccf50e96c1edbede 100755 (executable)
@@ -108,6 +108,7 @@ Usage:
 
   where SWITCHES are:
     --buildonly              Build test exes but do not run tests
+    --case DISPLAYNAME       Only run the one test identified by DISPLAYNAME
     --config CONFIGS         Only use configs on comma-separate list CONFIGS
     --dryrun                 Write what would have happened to testrunner.log
     --explain                Write summary to stdout
@@ -239,6 +240,7 @@ set TRG(explain) 0                  ;# True for the --explain option
 set TRG(stopOnError) 0              ;# Stop running at first failure
 set TRG(stopOnCore) 0               ;# Stop on a core-dump
 set TRG(fullstatus) 0               ;# Full "status" report while running
+set TRG(case) {}                    ;# Only run this one case
 
 switch -nocase -glob -- $tcl_platform(os) {
   *darwin* {
@@ -873,6 +875,9 @@ for {set ii 0} {$ii < [llength $argv]} {incr ii} {
     } elseif {($n>2 && [string match "$a*" --omit]) || $a=="-c"} {
       incr ii
       set TRG(omitconfig) [lindex $argv $ii]
+    } elseif {($n>2 && [string match "$a*" --case]) || $a=="-c"} {
+      incr ii
+      set TRG(case) [lindex $argv $ii]
     } elseif {($n>2 && [string match "$a*" --fuzzdb])} {
       incr ii
       set env(FUZZDB) [lindex $argv $ii]
@@ -1442,6 +1447,31 @@ proc add_jobs_from_cmdline {patternlist} {
       }
     }
   }
+
+  # If the "--case DISPLAYNAME" option appears on the command-line, mark
+  # all tests other than DISPLAYNAME as 'omit'.
+  #
+  if {[info exists TRG(case)] && $TRG(case) ne ""} {
+    set jid [trdb one {
+      SELECT jobid FROM jobs WHERE displayname=$TRG(case)
+    }]
+    if {$jid eq ""} {
+      puts "ERROR: No jobs match \"$TRG(case)\"."
+      puts "The argument to --case must exactly match the jobs.displayname column"
+      puts "of the testrunner.db database."
+      trdb eval {UPDATE jobs SET state='omit'}
+    } else {
+      trdb eval {
+        WITH RECURSIVE keepers(jid,did) AS (
+           SELECT jobid,depid FROM jobs
+            WHERE displayname GLOB $TRG(case)
+           UNION
+           SELECT jobid,depid FROM jobs, keepers WHERE jobid=did
+        )
+        DELETE FROM jobs WHERE jobid NOT IN (SELECT jid FROM keepers);
+      }
+    }
+  }
 }
 
 proc make_new_testset {} {
@@ -1711,6 +1741,7 @@ proc run_testset {} {
   }
   close $TRG(log)
   progress_report
+  puts ""
 
   r_write_db {
     set tm [clock_milliseconds]
@@ -1730,7 +1761,7 @@ proc run_testset {} {
     }
   }
 
-  puts "\nTest database is $TRG(dbname)"
+  puts "Test database is $TRG(dbname)"
   puts "Test log is $TRG(logname)"
   if {[info exists TRG(FUZZDB)]} {
     puts "Extra fuzzcheck data taken from $TRG(FUZZDB)"