webpack/test/helpers/captureStdio.js

45 lines
1.1 KiB
JavaScript
Raw Normal View History

2025-05-16 21:49:07 +08:00
const stripVTControlCharacters = require("strip-ansi");
module.exports = (stdio, tty) => {
let logs = [];
const write = stdio.write;
const isTTY = stdio.isTTY;
2020-03-29 06:10:15 +08:00
stdio.write = function (str) {
logs.push(str);
};
if (tty !== undefined) stdio.isTTY = tty;
return {
data: logs,
reset: () => (logs = []),
2024-07-31 11:31:11 +08:00
toString: () =>
2025-05-16 21:49:07 +08:00
stripVTControlCharacters(logs.join(""))
2025-02-27 23:43:07 +08:00
.replace(
/\([^)]+\) (\[[^\]]+\]\s*)?(Deprecation|Experimental)Warning.+(\n\(Use .node.+\))?(\n(\s|BREAKING CHANGE).*)*(\n\s+at .*)*\n?/g,
""
)
// Ignore deprecated `import * as pkg from "file.json" assert { type: "json" };`
.replace(
/\([^)]+\) (\[[^\]]+\]\s*)?(V8:).* 'assert' is deprecated in import statements and support will be removed in a future version; use 'with' instead\n/g,
""
),
2024-07-31 11:31:11 +08:00
toStringRaw: () => logs.join(""),
restore() {
stdio.write = write;
stdio.isTTY = isTTY;
delete require.cache[require.resolve("../../")];
delete require.cache[
require.resolve("../../lib/node/NodeEnvironmentPlugin")
];
delete require.cache[require.resolve("../../lib/node/nodeConsole")];
}
};
};