summaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
authorMikolaj Boc <mikolaj.boc@qt.io>2023-01-23 12:35:13 +0100
committerMikolaj Boc <mikolaj.boc@qt.io>2023-01-30 13:55:58 +0100
commitd5525581705d073fd28cf222489c065b059a5150 (patch)
treebf6bbb76cf37a766ce1489ddcf31366dc05df493 /util
parentcde904b38ab6ef1ddcc9a0cbcae766cf42d58d81 (diff)
downloadqtbase-d5525581705d073fd28cf222489c065b059a5150.tar.gz
Allow filtering of test functions to run in WASM testrunner
Just proxy any non-standard arg to the WASM module and let it use the arg as a filter Change-Id: Ia77a30ca872497425017edb8fa8961b6d687ca68 Reviewed-by: Michal Klocek <michal.klocek@qt.io>
Diffstat (limited to 'util')
-rw-r--r--util/wasm/batchedtestrunner/batchedtestrunner.js7
-rw-r--r--util/wasm/batchedtestrunner/qwasmtestmain.js29
2 files changed, 27 insertions, 9 deletions
diff --git a/util/wasm/batchedtestrunner/batchedtestrunner.js b/util/wasm/batchedtestrunner/batchedtestrunner.js
index e26e561b5a..7cd5f2d350 100644
--- a/util/wasm/batchedtestrunner/batchedtestrunner.js
+++ b/util/wasm/batchedtestrunner/batchedtestrunner.js
@@ -68,9 +68,9 @@ export class BatchedTestRunner {
get errorDetails() { return this.#errorDetails; }
- async run(targetIsBatch, testName, testOutputFormat) {
+ async run(targetIsBatch, testName, functions, testOutputFormat) {
try {
- await this.#doRun(targetIsBatch, testName, testOutputFormat);
+ await this.#doRun(targetIsBatch, testName, functions, testOutputFormat);
} catch (e) {
this.#setTestRunnerError(e.message);
return;
@@ -93,7 +93,7 @@ export class BatchedTestRunner {
this.#setTestRunnerStatus(status.code, status.numberOfFailed);
}
- async #doRun(targetIsBatch, testName, testOutputFormat) {
+ async #doRun(targetIsBatch, testName, functions, testOutputFormat) {
const module = await this.#loader.loadEmscriptenModule(
targetIsBatch ? BatchedTestRunner.#TestBatchModuleName : testName,
() => { }
@@ -111,6 +111,7 @@ export class BatchedTestRunner {
const LogToStdoutSpecialFilename = '-';
result = await module.exec({
args: [...(targetIsBatch ? [testClassName] : []),
+ ...(functions ?? []),
'-o', `${LogToStdoutSpecialFilename},${testOutputFormat}`],
onStdout: (output) => {
this.#addTestOutput(testClassName, output);
diff --git a/util/wasm/batchedtestrunner/qwasmtestmain.js b/util/wasm/batchedtestrunner/qwasmtestmain.js
index 644455907f..497f5309b1 100644
--- a/util/wasm/batchedtestrunner/qwasmtestmain.js
+++ b/util/wasm/batchedtestrunner/qwasmtestmain.js
@@ -11,6 +11,22 @@ import {
import { parseQuery } from './util.js';
import { VisualOutputProducer, UI, ScannerFactory } from './qtestoutputreporter.js'
+const StandardArg = {
+ qVisualOutput: 'qvisualoutput',
+ qTestName: 'qtestname',
+ qBatchedTest: 'qbatchedtest',
+ qUseEmrun: 'quseemrun',
+ qTestOutputFormat: 'qtestoutputformat',
+}
+
+const allArgs = new Set(Object.getOwnPropertyNames(StandardArg).map(arg => StandardArg[arg]));
+Object.defineProperty(StandardArg, 'isKnown', {
+ get()
+ {
+ return name => allArgs.has(name);
+ },
+});
+
(() => {
const setPageTitle = (useEmrun, testName, isBatch) => {
document.title = 'Qt WASM test runner';
@@ -24,10 +40,11 @@ import { VisualOutputProducer, UI, ScannerFactory } from './qtestoutputreporter.
}
const parsed = parseQuery(location.search);
- const outputInPage = parsed.get('qvisualoutput') !== undefined;
- const testName = parsed.get('qtestname');
- const isBatch = parsed.get('qbatchedtest') !== undefined;
- const useEmrun = parsed.get('quseemrun') !== undefined;
+ const outputInPage = parsed.has(StandardArg.qVisualOutput);
+ const testName = parsed.get(StandardArg.qTestName);
+ const isBatch = parsed.has(StandardArg.qBatchedTest);
+ const useEmrun = parsed.has(StandardArg.qUseEmrun);
+ const functions = [...parsed.keys()].filter(arg => !StandardArg.isKnown(arg));
if (testName === undefined) {
if (!isBatch)
@@ -37,7 +54,7 @@ import { VisualOutputProducer, UI, ScannerFactory } from './qtestoutputreporter.
}
const testOutputFormat = (() => {
- const format = parsed.get('qtestoutputformat') ?? 'txt';
+ const format = parsed.get(StandardArg.qTestOutputFormat) ?? 'txt';
if (-1 === ['txt', 'xml', 'lightxml', 'junitxml', 'tap'].indexOf(format))
throw new Error(`Bad file format: ${format}`);
return format;
@@ -65,5 +82,5 @@ import { VisualOutputProducer, UI, ScannerFactory } from './qtestoutputreporter.
}
setPageTitle(useEmrun, testName, isBatch);
- testRunner.run(isBatch, testName, testOutputFormat);
+ testRunner.run(isBatch, testName, functions, testOutputFormat);
})();