1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-08-08 14:02:16 +03:00

When a JS SQLTester script throws, report the exception details back to the UI regardless of whether it's fatal.

FossilOrigin-Name: 273d3b05f630d399d42914e95c416b107b4746bbef129cfba9d00fd921666261
This commit is contained in:
stephan
2023-08-30 14:20:02 +00:00
parent 24c32c2e39
commit 8dd07389ac
5 changed files with 28 additions and 22 deletions

View File

@@ -147,6 +147,7 @@ class UnknownCommand extends SQLTesterException {
super(testScript, cmdName);
this.name = 'UnknownCommand';
}
isFatal() { return true; }
}
class IncompatibleDirective extends SQLTesterException {
@@ -290,10 +291,10 @@ class SQLTester {
nTotalTest: 0,
//! Total test script files run
nTestFile: 0,
//! Number of scripts which were aborted
nAbortedScript: 0,
//! Test-case count for to the current TestScript
nTest: 0
nTest: 0,
//! Names of scripts which were aborted.
failedScripts: []
});
#emitColNames = false;
//! True to keep going regardless of how a test fails.
@@ -511,8 +512,9 @@ class SQLTester {
runTests(){
const tStart = (new Date()).getTime();
let isVerbose = this.verbosity();
this.metrics.nAbortedScript = 0;
this.metrics.failedScripts.length = 0;
this.metrics.nTotalTest = 0;
this.metrics.nTestFile = 0;
for(const ts of this.#aScripts){
this.reset();
++this.metrics.nTestFile;
@@ -525,7 +527,7 @@ class SQLTester {
if(e instanceof SQLTesterException){
threw = true;
this.outln("🔥EXCEPTION: ",e);
++this.metrics.nAbortedScript;
this.metrics.failedScripts.push({script: ts.filename(), message:e.toString()});
if( this.#keepGoing ){
this.outln("Continuing anyway because of the keep-going option.");
}else if( e.isFatal() ){
@@ -548,11 +550,11 @@ class SQLTester {
}
const tEnd = (new Date()).getTime();
Util.unlink(this.#db.initialDbName);
this.outln("Took ",(tEnd-tStart),"ms. test count = ",
this.outln("Took ",(tEnd-tStart),"ms. Test count = ",
this.metrics.nTotalTest,", script count = ",
this.#aScripts.length,(
this.metrics.nAbortedScript
? ", aborted scripts = "+this.metrics.nAbortedScript
this.metrics.failedScripts.length
? ", failed scripts = "+this.metrics.failedScripts.length
: ""
)
);