7dbbe0a222
This makes the js batched test runner cooperate with emrun. The runner sends back the output and exit messages to emrun to inform it about the test execution state. The code is based on emrun_postjs.js from the emsdk. Change-Id: I758f2c185797f4000810eb4314423eebc1c5d457 Reviewed-by: David Skoland <david.skoland@qt.io>
60 lines
2.0 KiB
JavaScript
60 lines
2.0 KiB
JavaScript
// 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';
|
|
|
|
(() => {
|
|
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);
|
|
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, () => {
|
|
window.close();
|
|
});
|
|
adapter.run();
|
|
}
|
|
setPageTitle(useEmrun, testName, isBatch);
|
|
|
|
testRunner.run(isBatch, testName, testOutputFormat);
|
|
})();
|