@rstest/core
Version:
The Rsbuild-based test tool.
104 lines (103 loc) • 5.29 kB
JavaScript
import 'module';
/*#__PURE__*/ import.meta.url;
export const __webpack_ids__ = [
"285"
];
export const __webpack_modules__ = {
"./src/core/listTests.ts": function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.d(__webpack_exports__, {
listTests: ()=>listTests
});
var node_fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("fs");
var node_path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("node:path");
var _pool__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./src/pool/index.ts");
var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("./src/utils/index.ts");
var _rsbuild__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("./src/core/rsbuild.ts");
async function listTests(context, fileFilters, { filesOnly, json }) {
const { normalizedConfig: { include, exclude, root, name, setupFiles: setups, includeSource }, rootPath } = context;
const testEntries = await (0, _utils__WEBPACK_IMPORTED_MODULE_3__.GL)({
include,
exclude,
root,
fileFilters,
includeSource
});
const globTestSourceEntries = async ()=>testEntries;
const setupFiles = (0, _utils__WEBPACK_IMPORTED_MODULE_3__.aA)(setups, rootPath);
const rsbuildInstance = await (0, _rsbuild__WEBPACK_IMPORTED_MODULE_4__.z)(context, globTestSourceEntries, setupFiles);
const { getRsbuildStats, closeServer } = await (0, _rsbuild__WEBPACK_IMPORTED_MODULE_4__.r)({
name,
globTestSourceEntries,
normalizedConfig: context.normalizedConfig,
setupFiles,
rsbuildInstance,
rootPath
});
const { entries, setupEntries, assetFiles, sourceMaps, getSourcemap } = await getRsbuildStats();
const pool = await (0, _pool__WEBPACK_IMPORTED_MODULE_2__.K)({
context
});
const list = await pool.collectTests({
entries,
sourceMaps,
setupEntries,
assetFiles,
updateSnapshot: context.snapshotManager.options.updateSnapshot
});
const tests = [];
const traverseTests = (test)=>{
if ([
'skip',
'todo'
].includes(test.runMode)) return;
if ('case' === test.type) tests.push({
file: test.testPath,
name: (0, _utils__WEBPACK_IMPORTED_MODULE_3__.Yz)(test)
});
else for (const child of test.tests)traverseTests(child);
};
const hasError = list.some((file)=>file.errors?.length);
if (hasError) {
const { printError } = await Promise.all([
__webpack_require__.e("723"),
__webpack_require__.e("355")
]).then(__webpack_require__.bind(__webpack_require__, "./src/utils/error.ts"));
process.exitCode = 1;
for (const file of list){
const relativePath = (0, node_path__WEBPACK_IMPORTED_MODULE_1__.relative)(rootPath, file.testPath);
if (file.errors?.length) {
_utils__WEBPACK_IMPORTED_MODULE_3__.kg.log(`${_utils__WEBPACK_IMPORTED_MODULE_3__.$_.bgRed(' FAIL ')} ${relativePath}`);
for (const error of file.errors)await printError(error, getSourcemap, rootPath);
}
}
await closeServer();
await pool.close();
return;
}
for (const file of list){
if (filesOnly) {
tests.push({
file: file.testPath
});
continue;
}
for (const test of file.tests)traverseTests(test);
}
if (json && 'false' !== json) {
const content = JSON.stringify(tests, null, 2);
if (true !== json && 'true' !== json) {
const jsonPath = (0, node_path__WEBPACK_IMPORTED_MODULE_1__.isAbsolute)(json) ? json : (0, node_path__WEBPACK_IMPORTED_MODULE_1__.join)(rootPath, json);
(0, node_fs__WEBPACK_IMPORTED_MODULE_0__.mkdirSync)((0, node_path__WEBPACK_IMPORTED_MODULE_1__.dirname)(jsonPath), {
recursive: true
});
(0, node_fs__WEBPACK_IMPORTED_MODULE_0__.writeFileSync)(jsonPath, content);
} else _utils__WEBPACK_IMPORTED_MODULE_3__.kg.log(content);
} else for (const test of tests){
const shortPath = (0, node_path__WEBPACK_IMPORTED_MODULE_1__.relative)(rootPath, test.file);
_utils__WEBPACK_IMPORTED_MODULE_3__.kg.log(test.name ? `${_utils__WEBPACK_IMPORTED_MODULE_3__.$_.dim(`${shortPath} > `)}${test.name}` : (0, _utils__WEBPACK_IMPORTED_MODULE_3__.aj)(shortPath));
}
await closeServer();
await pool.close();
}
}
};