UNPKG

@rstest/core

Version:
103 lines (102 loc) 5.85 kB
import 'module'; /*#__PURE__*/ import.meta.url; export const __webpack_ids__ = [ "355" ]; export const __webpack_modules__ = { "./src/utils/error.ts": function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { __webpack_require__.d(__webpack_exports__, { parseErrorStacktrace: ()=>parseErrorStacktrace, printError: ()=>printError }); var node_fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("fs"); var _jridgewell_trace_mapping__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/.pnpm/@jridgewell+trace-mapping@0.3.29/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.mjs"); var stacktrace_parser__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/.pnpm/stacktrace-parser@0.1.11/node_modules/stacktrace-parser/dist/stack-trace-parser.esm.js"); var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("./src/utils/index.ts"); async function printError(error, getSourcemap, rootPath) { const errorName = error.name || 'Unknown Error'; if (error.message.includes('Vitest failed to access its internal state')) { const tips = [ 'Error: not support import `vitest` in Rstest test environment.\n', 'Solution:', ` - Update your code to use imports from "${_utils__WEBPACK_IMPORTED_MODULE_3__.$_.yellow('@rstest/core')}" instead of "${_utils__WEBPACK_IMPORTED_MODULE_3__.$_.yellow('vitest')}".`, ' - Enable `globals` configuration and use global API.' ]; _utils__WEBPACK_IMPORTED_MODULE_3__.kg.log(`${_utils__WEBPACK_IMPORTED_MODULE_3__.$_.red(tips.join('\n'))}\n`); return; } _utils__WEBPACK_IMPORTED_MODULE_3__.kg.log(`${_utils__WEBPACK_IMPORTED_MODULE_3__.$_.red(_utils__WEBPACK_IMPORTED_MODULE_3__.$_.bold(errorName))}${_utils__WEBPACK_IMPORTED_MODULE_3__.$_.red(`: ${error.message}`)}\n`); if (error.diff) { _utils__WEBPACK_IMPORTED_MODULE_3__.kg.log(error.diff); _utils__WEBPACK_IMPORTED_MODULE_3__.kg.log(); } if (error.stack) { const stackFrames = await parseErrorStacktrace({ stack: error.stack, fullStack: error.fullStack, getSourcemap }); if (stackFrames[0]) await printCodeFrame(stackFrames[0]); printStack(stackFrames, rootPath); } } async function printCodeFrame(frame) { const filePath = frame.file?.startsWith('file') ? new URL(frame.file) : frame.file; if (!filePath) return; const source = node_fs__WEBPACK_IMPORTED_MODULE_0__["default"].existsSync(filePath) ? node_fs__WEBPACK_IMPORTED_MODULE_0__["default"].readFileSync(filePath, 'utf-8') : void 0; if (!source) return; const { codeFrameColumns } = await __webpack_require__.e("72").then(__webpack_require__.bind(__webpack_require__, "../../node_modules/.pnpm/@babel+code-frame@7.27.1/node_modules/@babel/code-frame/lib/index.js")); const result = codeFrameColumns(source, { start: { line: frame.lineNumber, column: frame.column } }, { highlightCode: true, linesBelow: 2 }); _utils__WEBPACK_IMPORTED_MODULE_3__.kg.log(result); _utils__WEBPACK_IMPORTED_MODULE_3__.kg.log(''); } function printStack(stackFrames, rootPath) { for (const frame of stackFrames){ const msg = '<unknown>' !== frame.methodName ? `at ${frame.methodName} (${(0, _utils__WEBPACK_IMPORTED_MODULE_3__.Ps)(rootPath, frame.file)}:${frame.lineNumber}:${frame.column})` : `at ${(0, _utils__WEBPACK_IMPORTED_MODULE_3__.Ps)(rootPath, frame.file)}:${frame.lineNumber}:${frame.column}`; _utils__WEBPACK_IMPORTED_MODULE_3__.kg.log(_utils__WEBPACK_IMPORTED_MODULE_3__.$_.gray(` ${msg}`)); } stackFrames.length && _utils__WEBPACK_IMPORTED_MODULE_3__.kg.log(); } const stackIgnores = [ /\/@rstest\/core/, /rstest\/packages\/core\/dist/, /node_modules\/tinypool/, /node_modules\/chai/, /node_modules\/@vitest\/expect/, /node_modules\/@vitest\/snapshot/, /node:\w+/, /webpack\/runtime/, /webpack\\runtime/, '<anonymous>' ]; async function parseErrorStacktrace({ stack, getSourcemap, fullStack }) { return Promise.all((0, stacktrace_parser__WEBPACK_IMPORTED_MODULE_2__.Q)(stack).filter((frame)=>fullStack ? true : frame.file && !stackIgnores.some((entry)=>frame.file?.match(entry))).map(async (frame)=>{ const sourcemap = getSourcemap(frame.file); if (sourcemap) { const traceMap = new _jridgewell_trace_mapping__WEBPACK_IMPORTED_MODULE_1__.s7(sourcemap); const { line, column, source, name } = (0, _jridgewell_trace_mapping__WEBPACK_IMPORTED_MODULE_1__.Sk)(traceMap, { line: frame.lineNumber, column: frame.column }); if (!source) return null; return { ...frame, file: source, lineNumber: line, name, column }; } return frame; })).then((frames)=>frames.filter((frame)=>null !== frame)); } } };