Clean up the SQLTester output a bit by using the module name, instead of filename, where appropriate.

FossilOrigin-Name: 5323e4fd254274cc527af7536c622b786394599c68eca2da6c7fc641727dbdb2
This commit is contained in:
stephan 2023-08-09 12:05:17 +00:00
parent 283e87146c
commit aec9aa9289
7 changed files with 56 additions and 29 deletions

View File

@ -123,9 +123,9 @@ public class SQLTester {
++nTestFile; ++nTestFile;
final TestScript ts = new TestScript(f); final TestScript ts = new TestScript(f);
currentScript = ts; currentScript = ts;
outln("----->>>>> Test [",ts.getName(),"]"); outln("----->>>>> ",ts.getModuleName()," [",ts.getName(),"]");
if( ts.isIgnored() ){ if( ts.isIgnored() ){
outln("WARNING: skipping [",ts.getName(),"] because it contains ", outln("WARNING: skipping [",ts.getModuleName(),"] because it contains ",
"content which requires that it be skipped."); "content which requires that it be skipped.");
continue; continue;
}else{ }else{
@ -136,7 +136,7 @@ public class SQLTester {
++nAbortedScript; ++nAbortedScript;
} }
} }
outln("<<<<<----- ",nTest," test(s) in [",f,"]"); outln("<<<<<----- ",ts.getModuleName(),": ",nTest," test(s)");
} }
}finally{ }finally{
currentScript = null; currentScript = null;
@ -663,8 +663,8 @@ class CommandDispatcher {
if(null == cmd){ if(null == cmd){
final TestScript ts = tester.getCurrentScript(); final TestScript ts = tester.getCurrentScript();
if( tester.skipUnknownCommands() ){ if( tester.skipUnknownCommands() ){
tester.outln("WARNING: skipping remainder of ",ts.getName(), tester.outln("WARNING: skipping remainder of [",ts.getModuleName(),
" because it contains unknown command '",argv[0],"'."); "] because it contains unknown command '",argv[0],"'.");
throw new SkipTestRemainder(ts); throw new SkipTestRemainder(ts);
} }
Util.toss(IllegalArgumentException.class, Util.toss(IllegalArgumentException.class,

View File

@ -23,7 +23,8 @@ import java.util.regex.*;
evaluation are delegated elsewhere. evaluation are delegated elsewhere.
*/ */
class TestScript { class TestScript {
private String name; private String name = null;
private String moduleName = null;
private List<CommandChunk> chunks = null; private List<CommandChunk> chunks = null;
private final Outer outer = new Outer(); private final Outer outer = new Outer();
private boolean ignored = false; private boolean ignored = false;
@ -39,18 +40,14 @@ class TestScript {
return java.nio.file.Files.readAllBytes(java.nio.file.Paths.get(filename)); return java.nio.file.Files.readAllBytes(java.nio.file.Paths.get(filename));
} }
private void setContent(String c){
ignored = shouldBeIgnored(c);
if( !ignored ) chunks = chunkContent(c);
}
/** /**
Initializes the script with the content of the given file. Initializes the script with the content of the given file.
Throws if it cannot read the file or if tokenizing it fails. Throws if it cannot read the file or if tokenizing it fails.
*/ */
public TestScript(String filename) throws Exception{ public TestScript(String filename) throws Exception{
name = filename;
setContent(new String(readFile(filename), setContent(new String(readFile(filename),
java.nio.charset.StandardCharsets.UTF_8)); java.nio.charset.StandardCharsets.UTF_8));
name = filename;
} }
/** /**
@ -61,14 +58,22 @@ class TestScript {
*/ */
public TestScript(String virtualName, StringBuffer content) public TestScript(String virtualName, StringBuffer content)
throws RuntimeException { throws RuntimeException {
setContent(content.toString());
name = virtualName; name = virtualName;
setContent(content.toString());
}
private void setContent(String c){
this.chunks = chunkContent(c);
} }
public String getName(){ public String getName(){
return name; return name;
} }
public String getModuleName(){
return moduleName;
}
public boolean isIgnored(){ public boolean isIgnored(){
return ignored; return ignored;
} }
@ -87,11 +92,21 @@ class TestScript {
Returns true if the given script content should be ignored Returns true if the given script content should be ignored
(because it contains certain content which indicates such). (because it contains certain content which indicates such).
*/ */
public static boolean shouldBeIgnored(String content){ public boolean shouldBeIgnored(String content){
return content.indexOf("SCRIPT_MODULE_NAME")<0 return (null == moduleName)
|| content.indexOf("\n|")>=0; || content.indexOf("\n|")>=0;
} }
private boolean findModuleName(String content){
final Pattern p = Pattern.compile(
"SCRIPT_MODULE_NAME:\\s+(\\S+)\\s*\n",
Pattern.MULTILINE
);
final Matcher m = p.matcher(content);
moduleName = m.find() ? m.group(1) : null;
return moduleName != null;
}
/** /**
Chop script up into chunks containing individual commands and Chop script up into chunks containing individual commands and
their inputs. The approach taken here is not as robust as their inputs. The approach taken here is not as robust as
@ -109,7 +124,13 @@ class TestScript {
If/when that becomes a problem, it can be refactored. If/when that becomes a problem, it can be refactored.
*/ */
private List<CommandChunk> chunkContent(String content){ private List<CommandChunk> chunkContent(String content){
if( ignored ) return null; findModuleName(content);
ignored = shouldBeIgnored(content);
if( ignored ){
chunks = null;
return null;
}
// First, strip out any content which we know we can ignore... // First, strip out any content which we know we can ignore...
final String sCComment = "[/][*]([*](?![/])|[^*])*[*][/]"; final String sCComment = "[/][*]([*](?![/])|[^*])*[*][/]";
final String s3Dash = "^---+[^\\n]*\\n"; final String s3Dash = "^---+[^\\n]*\\n";

View File

@ -212,7 +212,7 @@ which database connection to use moving forward.
### The --close command ### The --close command
The --close command causes an existing database connetion to close. The --close command causes an existing database connection to close.
This command is a no-op if the database connection is not currently This command is a no-op if the database connection is not currently
open. There can be up to 7 different database connections, numbered 0 open. There can be up to 7 different database connections, numbered 0
through 6. The number of the database connection to close is an through 6. The number of the database connection to close is an

View File

@ -8,6 +8,7 @@
junk junk
# --open nope.db /* must throw */
--new SQLTester.db --new SQLTester.db
--null zilch --null zilch
--run --run

View File

@ -1,4 +1,9 @@
/* This script must be marked as ignored because it contains /*
content which triggers that condition. */ ** This script must be marked as ignored because it contains
** content which triggers that condition.
**
** SCRIPT_MODULE_NAME: ignored
**
*/
| |

View File

@ -1,5 +1,5 @@
C Document\sSQLTester's\s--print\scommand\sand\sadd\ssome\sargument\svalidation\sto\sit. C Clean\sup\sthe\sSQLTester\soutput\sa\sbit\sby\susing\sthe\smodule\sname,\sinstead\sof\sfilename,\swhere\sappropriate.
D 2023-08-09T11:10:48.778 D 2023-08-09T12:05:17.196
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@ -266,11 +266,11 @@ F ext/jni/src/org/sqlite/jni/sqlite3_context.java d26573fc7b309228cb49786e907859
F ext/jni/src/org/sqlite/jni/sqlite3_stmt.java 78e6d1b95ac600a9475e9db4623f69449322b0c93d1bd4e1616e76ed547ed9fc F ext/jni/src/org/sqlite/jni/sqlite3_stmt.java 78e6d1b95ac600a9475e9db4623f69449322b0c93d1bd4e1616e76ed547ed9fc
F ext/jni/src/org/sqlite/jni/sqlite3_value.java 3d1d4903e267bc0bc81d57d21f5e85978eff389a1a6ed46726dbe75f85e6914a F ext/jni/src/org/sqlite/jni/sqlite3_value.java 3d1d4903e267bc0bc81d57d21f5e85978eff389a1a6ed46726dbe75f85e6914a
F ext/jni/src/org/sqlite/jni/tester/Outer.java 3d9c40f8ed58ec0df05ca160986ea06ec84ec1f338b069cfba9604bbba467a01 F ext/jni/src/org/sqlite/jni/tester/Outer.java 3d9c40f8ed58ec0df05ca160986ea06ec84ec1f338b069cfba9604bbba467a01
F ext/jni/src/org/sqlite/jni/tester/SQLTester.java 6f2c6679cc3f334058b364de88cf6817ce111514514abdc4fd70c6805c94d824 F ext/jni/src/org/sqlite/jni/tester/SQLTester.java 42b694da25e20a246140e32d8aa044e65ed60c67f69adcf27c326a1d18b04228
F ext/jni/src/org/sqlite/jni/tester/TestScript.java 9d9e60cf62eb66d4c3b1567c03b84f5354c72605bf826d4375a6831ff53ba66b F ext/jni/src/org/sqlite/jni/tester/TestScript.java 57a5bb63e56324fe20b31142a8704b08cfc0bdff9e936620346fad659fb91759
F ext/jni/src/org/sqlite/jni/tester/test-script-interpreter.md 55bef0dc8580b90fa13e3728829d5e585b74f50d6ae35b9999bdef5aca0a7cab F ext/jni/src/org/sqlite/jni/tester/test-script-interpreter.md ae1d6706f723517e03a04ab578a539fa3df66fe38adad113f10b61eabc524d09
F ext/jni/src/tests/000_first.test 8bfd5d94fc51586461bdb311ff8df4e772555a29c3babc9e01ad0de324638c1e F ext/jni/src/tests/000_first.test 954c19705c791023eb5a473de0851d3727406fdef25f4b2521b88972280b4111
F ext/jni/src/tests/010_ignored.test ce2de6742ff1bf98d8976fda0f260ff3d280e8f8c0a99309fb59fcfef2556fcd F ext/jni/src/tests/010_ignored.test e17e874c6ab3c437f1293d88093cf06286083b65bf162317f91bbfd92f961b70
F ext/lsm1/Makefile a553b728bba6c11201b795188c5708915cc4290f02b7df6ba7e8c4c943fd5cd9 F ext/lsm1/Makefile a553b728bba6c11201b795188c5708915cc4290f02b7df6ba7e8c4c943fd5cd9
F ext/lsm1/Makefile.msc f8c878b467232226de288da320e1ac71c131f5ec91e08b21f502303347260013 F ext/lsm1/Makefile.msc f8c878b467232226de288da320e1ac71c131f5ec91e08b21f502303347260013
F ext/lsm1/lsm-test/README 87ea529d2abe615e856d4714bfe8bb185e6c2771b8612aa6298588b7b43e6f86 F ext/lsm1/lsm-test/README 87ea529d2abe615e856d4714bfe8bb185e6c2771b8612aa6298588b7b43e6f86
@ -2090,8 +2090,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
P f929f1f7f70181813f74562614f3f2aa29e65590560e3fce1677b8b176e3c6de P ab9c945bb0b4210b3f47e6341f150f8a7cc45f9e4e4c2247e91d2528ed4772a6
R e5314da4aee7d756c10ad57fb9cc922a R 71db74e5804fc1b921164f2085cce4db
U stephan U stephan
Z 8a5463f5ea02a18c2733745eccce2961 Z d1b5b5a17f205dc2910f24396b36f01b
# Remove this line to create a well-formed Fossil manifest. # Remove this line to create a well-formed Fossil manifest.

View File

@ -1 +1 @@
ab9c945bb0b4210b3f47e6341f150f8a7cc45f9e4e4c2247e91d2528ed4772a6 5323e4fd254274cc527af7536c622b786394599c68eca2da6c7fc641727dbdb2