]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Add the "errors" command to testrunner.tcl.
authordrh <>
Thu, 1 Aug 2024 14:16:36 +0000 (14:16 +0000)
committerdrh <>
Thu, 1 Aug 2024 14:16:36 +0000 (14:16 +0000)
FossilOrigin-Name: 03b7f99229cfcffde024915e6812d75ae11318db9dc93a00838e4588a79b1243

manifest
manifest.uuid
test/testrunner.tcl

index ce082dd8f38c52b8b5cbb7b0fdd7f90b7b7db72b..5a1c13a60f65707cb14b664629d1368fc8d6b49d 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\sthe\stclsqlite.c\sTCL\sinterface\smodule\sso\sthat\sit\sworks\swith\sboth\sTcl8\sand\nTcl9.\s\sMake\schanges\sacross\sthe\sTCL-based\stest\sharness\sto\senable\sSQLite\sto\nbe\stested\swith\seither\sTcl8\sor\sTcl9.\s\sGet\sthe\s--with-tcl=\sargument\son\sthe\nconfigure\sscript\sworking.\sTesting\schanges\sonly\s-\sno\schanges\sto\sthe\sSQLite\score.\nI\sbelieve\sthe\sprevious\smerge\sattempt\sdidn't\swork\sbecause\sof\serrors\sin\sthe\nmerge\sitself,\snot\sbecause\sof\sfaults\sin\sthe\scode.\s\sTrying\sagain...
-D 2024-07-31T22:36:14.186
+C Add\sthe\s"errors"\scommand\sto\stestrunner.tcl.
+D 2024-08-01T14:16:36.126
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -1705,7 +1705,7 @@ F test/temptable2.test 76821347810ecc88203e6ef0dd6897b6036ac788e9dd3e6b04fd4d163
 F test/temptable3.test d11a0974e52b347e45ee54ef1923c91ed91e4637
 F test/temptrigger.test 38f0ca479b1822d3117069e014daabcaacefffcc
 F test/tester.tcl 640106bf8f7785d0ac67cda2837577eb9f2d936033bacedf9e705ca5451958ef
-F test/testrunner.tcl 2d100e73245e5f423942b6c198176c699137ee65192ed872bd8c9d4ac2c779b3
+F test/testrunner.tcl 609d9e8f073ad7a4f839e3394ffb5019d4ea895c08e6701115bb0e94afa45c65
 F test/testrunner_data.tcl c5ae2b1f9a99210b0600d002fb3af1fee350997cee9416551e83b93501360ebf
 F test/thread001.test a0985c117eab62c0c65526e9fa5d1360dd1cac5b03bde223902763274ce21899
 F test/thread002.test c24c83408e35ba5a952a3638b7ac03ccdf1ce4409289c54a050ac4c5f1de7502
@@ -2200,8 +2200,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 86de4e755e37dc1cbcbd59018927aa87ff49fc15f706a36187631d8f14075c12 f23ad0979865f3c11a3dbd0598ee7c4e2eabeaf1863d000fc0242e18890a4a11
-R 5fce834a5a2db65fecaa00b46e4798f7
+P ea9d88f9ca3399bca83bf03893689a927b73e481604b94527e42de43f103eb46
+R bfca8ad2d62c4f03659e091bb06ca2cc
 U drh
-Z 9ec5dbf6df6049abe121ce7ac9b8445b
+Z 49d94432a94da4d21f2422461c255ece
 # Remove this line to create a well-formed Fossil manifest.
index 05b9c5c202ea3eab4c1fc0080cb44a531d1e28db..6742779a8cbb4d2db43d1945e992a56f196bf967 100644 (file)
@@ -1 +1 @@
-ea9d88f9ca3399bca83bf03893689a927b73e481604b94527e42de43f103eb46
+03b7f99229cfcffde024915e6812d75ae11318db9dc93a00838e4588a79b1243
index b32052873521e1bc1ed0980daf011de197221c1d..3b9da35b00f5481d87fd2145a60bc728f35a77dc 100644 (file)
@@ -54,6 +54,7 @@ proc usage {} {
 Usage: 
     $a0 ?SWITCHES? ?PERMUTATION? ?PATTERNS?
     $a0 PERMUTATION FILE
+    $a0 errors ?-v|--verbose?
     $a0 help
     $a0 njob ?NJOB?
     $a0 script ?-msvc? CONFIG
@@ -107,6 +108,11 @@ 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".
 
+The "errors" commands shows the output of all tests that failed in the
+most recent run.  Complete output is shown if the -v or --verbose options
+are used.  Otherwise, an attempt is made to minimize the output to show
+only the parts that contain the error messages.
+
 Full documentation here: https://sqlite.org/src/doc/trunk/doc/testrunner.md
   }]]
 
@@ -398,12 +404,22 @@ if {[llength $argv]==1
     puts "  $dfname $dtm"
   }
 
+  if {![file readable $TRG(dbname)]} {
+    puts "Database missing: $TRG(dbname)"
+    exit
+  }
   sqlite3 mydb $TRG(dbname)
   mydb timeout 2000
   mydb eval BEGIN
 
-  set cmdline [mydb one { SELECT value FROM config WHERE name='cmdline' }]
-  set nJob [mydb one { SELECT value FROM config WHERE name='njob' }]
+  if {[catch {
+    set cmdline [mydb one { SELECT value FROM config WHERE name='cmdline' }]
+    set nJob [mydb one { SELECT value FROM config WHERE name='njob' }]
+  } msg]} {
+    puts "Cannot read database: $TRG(dbname)"
+    mydb close
+    exit
+  }
 
   set now [clock_milliseconds]
   set tm [mydb one {
@@ -457,6 +473,47 @@ if {[llength $argv]==1
   exit
 }
 
+#--------------------------------------------------------------------------
+# Check if this is the "errors" command:
+#
+if {[llength $argv]>=1 && [llength $argv]<=2
+ && ([string compare -nocase errors [lindex $argv 0]]==0 ||
+     [string match err* [lindex $argv 0]]==1)
+} {
+  set verbose 0
+  for {set ii 1} {$ii<[llength $argv]} {incr ii} {
+    set a0 [lindex $argv $ii]
+    if {$a0=="-v" || $a0=="--verbose" || $a0=="-verbose"} {
+      set verbose 1
+    } else {
+      puts "unknown option: \"$a0\"".  Use --help for more info."
+      exit 1
+    }
+  }
+  set cnt 0
+  sqlite3 mydb $TRG(dbname)
+  mydb timeout 2000
+  mydb eval {SELECT displaytype, displayname, output
+               FROM jobs WHERE state='failed'} {
+    puts "**** $displayname ****"
+    if {$verbose || $displaytype!="tcl"} {
+      puts $output
+    } else {
+      foreach line [split $output \n] {
+        if {[string match {!*} $line] || [string match *failed* $line]} {
+          puts $line
+        }
+      }
+    }
+    incr cnt
+  }
+  mydb close
+  if {$cnt==0} {
+    puts "No errors"
+  }
+  exit
+}
+
 #-------------------------------------------------------------------------
 # Parse the command line.
 #
@@ -603,12 +660,6 @@ proc r_get_next_job {iJob} {
   return $ret
 }
 
-#rename r_get_next_job r_get_next_job_r
-#proc r_get_next_job {iJob} {
-  #puts [time { set res [r_get_next_job_r $iJob] }]
-  #set res
-#}
-
 # Usage:
 #
 #   add_job OPTION ARG OPTION ARG...