Skip to content

Commit 550eb61

Browse files
committed
Merge branch 'master' into tapeMode-newline
2 parents 905b9aa + 07d94a6 commit 550eb61

File tree

2 files changed

+84
-10
lines changed

2 files changed

+84
-10
lines changed

frontend/__tests__/utils/misc.spec.ts

Lines changed: 56 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { deepClone, isObject } from "../../src/ts/utils/misc";
1+
import { deepClone, getErrorMessage, isObject } from "../../src/ts/utils/misc";
22
import {
33
getLanguageDisplayString,
44
removeLanguageSize,
@@ -169,4 +169,59 @@ describe("misc.ts", () => {
169169
});
170170
});
171171
});
172+
describe("getErrorMesssage", () => {
173+
it("should correctly get the error message", () => {
174+
const tests = [
175+
{
176+
input: null,
177+
expected: undefined,
178+
},
179+
{
180+
input: undefined,
181+
expected: undefined,
182+
},
183+
{
184+
input: "",
185+
expected: undefined,
186+
},
187+
{
188+
input: {},
189+
expected: undefined,
190+
},
191+
{
192+
input: "error message",
193+
expected: "error message",
194+
},
195+
{
196+
input: 1,
197+
expected: "1",
198+
},
199+
{
200+
input: { message: "error message" },
201+
expected: "error message",
202+
},
203+
{
204+
input: { message: 1 },
205+
expected: "1",
206+
},
207+
{
208+
input: { message: "" },
209+
expected: undefined,
210+
},
211+
{
212+
input: { message: {} },
213+
expected: undefined,
214+
},
215+
{
216+
input: new Error("error message"),
217+
expected: "error message",
218+
},
219+
];
220+
221+
tests.forEach((test) => {
222+
const result = getErrorMessage(test.input);
223+
expect(result).toBe(test.expected);
224+
});
225+
});
226+
});
172227
});

frontend/src/ts/utils/misc.ts

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -484,21 +484,40 @@ export async function downloadResultsCSV(
484484
Loader.hide();
485485
}
486486

487-
export function createErrorMessage(error: unknown, message: string): string {
487+
export function getErrorMessage(error: unknown): string | undefined {
488+
let message = "";
489+
488490
if (error instanceof Error) {
489-
return `${message}: ${error.message}`;
491+
message = error.message;
492+
} else if (
493+
error !== null &&
494+
typeof error === "object" &&
495+
"message" in error &&
496+
(typeof error.message === "string" || typeof error.message === "number")
497+
) {
498+
message = `${error.message}`;
499+
} else if (typeof error === "string") {
500+
message = error;
501+
} else if (typeof error === "number") {
502+
message = `${error}`;
490503
}
491504

492-
if (error instanceof Object && "message" in error) {
493-
const objectWithMessage = error as { message?: string };
505+
if (message === "") {
506+
return undefined;
507+
}
494508

495-
if (objectWithMessage?.message !== undefined) {
496-
return `${message}: ${objectWithMessage.message}`;
497-
}
509+
return message;
510+
}
511+
512+
export function createErrorMessage(error: unknown, message: string): string {
513+
const errorMessage = getErrorMessage(error);
514+
515+
if (errorMessage === undefined) {
516+
console.error("Could not get error message from error", error);
517+
return `${message}: Unknown error`;
498518
}
499519

500-
console.error("Unknown error", error);
501-
return `${message}: Unknown error`;
520+
return `${message}: ${errorMessage}`;
502521
}
503522

504523
export function isElementVisible(query: string): boolean {

0 commit comments

Comments
 (0)