diff --git a/ext/wasm/SQLTester/SQLTester.mjs b/ext/wasm/SQLTester/SQLTester.mjs index 895c646116..8741b81524 100644 --- a/ext/wasm/SQLTester/SQLTester.mjs +++ b/ext/wasm/SQLTester/SQLTester.mjs @@ -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 : "" ) ); diff --git a/ext/wasm/SQLTester/SQLTester.run.mjs b/ext/wasm/SQLTester/SQLTester.run.mjs index 4a08904592..0f91230fd0 100644 --- a/ext/wasm/SQLTester/SQLTester.run.mjs +++ b/ext/wasm/SQLTester/SQLTester.run.mjs @@ -63,6 +63,7 @@ SELECT 1, null; SELECT 1, 2; intentional error; --run +/* ---intentional-failure */ --testcase json-1 SELECT json_array(1,2,3) --json [1,2,3] @@ -96,6 +97,7 @@ const sqt = new ns.SQLTester() .setLogger(console.log.bind(console)) .verbosity(1) .addTestScript(ts); +sqt.outer().outputPrefix(''); const runTests = function(){ try{ @@ -127,7 +129,7 @@ if( globalThis.WorkerGlobalScope ){ switch(data.type){ case 'run-tests':{ try{ runTests(); } - finally{ wPost('tests-end'); } + finally{ wPost('tests-end', sqt.metrics); } break; } default: diff --git a/ext/wasm/SQLTester/index.html b/ext/wasm/SQLTester/index.html index ebd828c645..cd1423ac37 100644 --- a/ext/wasm/SQLTester/index.html +++ b/ext/wasm/SQLTester/index.html @@ -33,7 +33,7 @@ -
+
Test output will go here.