2022-09-07 13:38:08 +00:00
|
|
|
// Copyright (C) 2022 The Qt Company Ltd.
|
|
|
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
|
|
|
|
|
|
|
|
import { BatchedTestRunner } from './batchedtestrunner.js'
|
|
|
|
import { EmrunAdapter, EmrunCommunication } from './emrunadapter.js'
|
|
|
|
import {
|
|
|
|
ModuleLoader,
|
|
|
|
ResourceFetcher,
|
|
|
|
ResourceLocator,
|
|
|
|
} from './qwasmjsruntime.js';
|
|
|
|
import { parseQuery } from './util.js';
|
2022-09-02 17:23:30 +00:00
|
|
|
import { VisualOutputProducer, UI, ScannerFactory } from './qtestoutputreporter.js'
|
2022-09-07 13:38:08 +00:00
|
|
|
|
|
|
|
(() => {
|
|
|
|
const setPageTitle = (useEmrun, testName, isBatch) => {
|
|
|
|
document.title = 'Qt WASM test runner';
|
|
|
|
if (useEmrun || testName || isBatch) {
|
|
|
|
document.title += `(${[
|
|
|
|
...[useEmrun ? ['emrun'] : []],
|
|
|
|
...[testName ? ['test=' + testName] : []],
|
|
|
|
...[isBatch ? ['batch'] : []]
|
|
|
|
].flat().join(", ")})`;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
const parsed = parseQuery(location.search);
|
2022-09-02 17:23:30 +00:00
|
|
|
const outputInPage = parsed.get('qvisualoutput') !== undefined;
|
2022-09-07 13:38:08 +00:00
|
|
|
const testName = parsed.get('qtestname');
|
|
|
|
const isBatch = parsed.get('qbatchedtest') !== undefined;
|
|
|
|
const useEmrun = parsed.get('quseemrun') !== undefined;
|
|
|
|
|
|
|
|
if (testName === undefined) {
|
|
|
|
if (!isBatch)
|
|
|
|
throw new Error('The qtestname parameter is required if not running a batch');
|
|
|
|
} else if (testName === '') {
|
|
|
|
throw new Error(`The qtestname=${testName} parameter is incorrect`);
|
|
|
|
}
|
|
|
|
|
|
|
|
const testOutputFormat = (() => {
|
|
|
|
const format = parsed.get('qtestoutputformat') ?? 'txt';
|
|
|
|
if (-1 === ['txt', 'xml', 'lightxml', 'junitxml', 'tap'].indexOf(format))
|
|
|
|
throw new Error(`Bad file format: ${format}`);
|
|
|
|
return format;
|
|
|
|
})();
|
|
|
|
|
|
|
|
const resourceLocator = new ResourceLocator('');
|
|
|
|
const testRunner = new BatchedTestRunner(
|
|
|
|
new ModuleLoader(new ResourceFetcher(resourceLocator), resourceLocator),
|
|
|
|
);
|
|
|
|
window.qtTestRunner = testRunner;
|
|
|
|
|
|
|
|
if (useEmrun) {
|
|
|
|
const adapter = new EmrunAdapter(new EmrunCommunication(), testRunner, () => {
|
2022-09-02 17:23:30 +00:00
|
|
|
if (!outputInPage)
|
|
|
|
window.close();
|
2022-09-07 13:38:08 +00:00
|
|
|
});
|
|
|
|
adapter.run();
|
|
|
|
}
|
2022-09-02 17:23:30 +00:00
|
|
|
if (outputInPage) {
|
|
|
|
const scanner = ScannerFactory.createScannerForFormat(testOutputFormat);
|
|
|
|
const ui = new UI(document.querySelector('body'), !!scanner);
|
|
|
|
const adapter =
|
|
|
|
new VisualOutputProducer(ui.outputArea, ui.counters, scanner, testRunner);
|
|
|
|
adapter.run();
|
|
|
|
}
|
2022-09-07 13:38:08 +00:00
|
|
|
setPageTitle(useEmrun, testName, isBatch);
|
|
|
|
|
|
|
|
testRunner.run(isBatch, testName, testOutputFormat);
|
|
|
|
})();
|