[be][fixtures] Pass message directly instead of overwriting Error object
--- Started getting crashes in watch mode from trying to overwrite `error.message` (invalid setter or frozen object). This should fix
Mofei Zhang committed
Dec 11, 2023 at 22:59 UTC
4c2b89288f3613a66996ec50826cc3d448db1223
2 files changed
+8
-12
compiler/packages/fixture-test-utils/src/output-utils.ts
+3
-5
@@ -20,7 +20,7 @@ ${s}
20
export function writeOutputToString(
21
input: string,
22
output: string | null,
23
- error: Error | null
23
+ errorMessage: string | null
24
) {
25
// leading newline intentional
26
let result = `
@@ -39,13 +39,11 @@ ${output == null ? "[ none ]" : wrapWithTripleBackticks(output, "javascript")}
39
result += "\n";
40
}
41
42
- if (error != null) {
43
- const errorMessage = error.message.replace(/^\/.*?:\s/, "");
44
-
42
+ if (errorMessage != null) {
43
result += `
44
## Error
45
48
-${wrapWithTripleBackticks(errorMessage)}
46
+${wrapWithTripleBackticks(errorMessage.replace(/^\/.*?:\s/, ""))}
47
\n`;
48
}
49
return result + ` `;
compiler/packages/snap/src/compiler-worker.ts
+5
-7
@@ -66,7 +66,7 @@ export async function compile(
66
}
67
68
let code: string | null = null;
69
- let error: Error | null = null;
69
+ let error: string | null = null;
70
try {
71
// NOTE: we intentionally require lazily here so that we can clear the require cache
72
// and load fresh versions of the compiler when `compilerVersion` changes.
@@ -93,17 +93,15 @@ export async function compile(
93
if (isOnlyFixture && !expectError) {
94
console.error(e.stack);
95
}
96
- e.message = e.message.replace(/\u001b[^m]*m/g, "");
97
- error = e;
96
+ error = e.message.replace(/\u001b[^m]*m/g, "");
97
}
98
99
// Promote console errors so they can be recorded in fixture output
100
for (const consoleError of seenConsoleErrors) {
101
if (error != null) {
103
- error.message = `${error.message}\n\n${consoleError}`;
102
+ error = `${error}\n\n${consoleError}`;
103
} else {
105
- error = new Error(consoleError);
106
- error.name = "ConsoleError";
104
+ error = `ConsoleError: ${consoleError}`;
105
}
106
}
107
@@ -114,7 +112,7 @@ export async function compile(
112
}
113
} else {
114
if (error !== null) {
117
- unexpectedError = `Expected fixture '${basename}' to succeed but it failed with error:\n\n${error.message}`;
115
+ unexpectedError = `Expected fixture '${basename}' to succeed but it failed with error:\n\n${error}`;
116
} else if (code == null || code.length === 0) {
117
unexpectedError = `Expected output for fixture '${basename}'.`;
118
}