From 5a48d41bddf599b14dd9019ff49821c436ce4542 Mon Sep 17 00:00:00 2001 From: Nayeem Rahman Date: Mon, 18 Oct 2021 17:05:36 +0100 Subject: fix(cli/fmt_errors): don't panic on source line formatting errors (#12449) Returns empty values in case of errors, source lines are non-essential anyway. These errors can happen e.g. when source files change at runtime. A warning is also printed to help us track when it happens in unexpected cases besides this. --- cli/tests/integration/run_tests.rs | 6 ++++++ cli/tests/testdata/eval_context_conflicting_source.ts | 1 + cli/tests/testdata/eval_context_throw_with_conflicting_source.ts | 6 ++++++ .../testdata/eval_context_throw_with_conflicting_source.ts.out | 4 ++++ 4 files changed, 17 insertions(+) create mode 100644 cli/tests/testdata/eval_context_conflicting_source.ts create mode 100644 cli/tests/testdata/eval_context_throw_with_conflicting_source.ts create mode 100644 cli/tests/testdata/eval_context_throw_with_conflicting_source.ts.out (limited to 'cli/tests') diff --git a/cli/tests/integration/run_tests.rs b/cli/tests/integration/run_tests.rs index f469bb364..0aca09902 100644 --- a/cli/tests/integration/run_tests.rs +++ b/cli/tests/integration/run_tests.rs @@ -1916,3 +1916,9 @@ itest!(long_data_url_formatting { output: "long_data_url_formatting.ts.out", exit_code: 1, }); + +itest!(eval_context_throw_with_conflicting_source { + args: "run eval_context_throw_with_conflicting_source.ts", + output: "eval_context_throw_with_conflicting_source.ts.out", + exit_code: 1, +}); diff --git a/cli/tests/testdata/eval_context_conflicting_source.ts b/cli/tests/testdata/eval_context_conflicting_source.ts new file mode 100644 index 000000000..671740113 --- /dev/null +++ b/cli/tests/testdata/eval_context_conflicting_source.ts @@ -0,0 +1 @@ +throw new Error("foo"); diff --git a/cli/tests/testdata/eval_context_throw_with_conflicting_source.ts b/cli/tests/testdata/eval_context_throw_with_conflicting_source.ts new file mode 100644 index 000000000..c5bc21e48 --- /dev/null +++ b/cli/tests/testdata/eval_context_throw_with_conflicting_source.ts @@ -0,0 +1,6 @@ +// deno-lint-ignore no-explicit-any +const [, errorInfo] = (Deno as any).core.evalContext( + '/* aaaaaaaaaaaaaaaaa */ throw new Error("foo")', + new URL("eval_context_conflicting_source.ts", import.meta.url).href, +); +throw errorInfo.thrown; diff --git a/cli/tests/testdata/eval_context_throw_with_conflicting_source.ts.out b/cli/tests/testdata/eval_context_throw_with_conflicting_source.ts.out new file mode 100644 index 000000000..37219ba86 --- /dev/null +++ b/cli/tests/testdata/eval_context_throw_with_conflicting_source.ts.out @@ -0,0 +1,4 @@ +[WILDCARD]error: Uncaught Error: foo +Warning Couldn't format source line: Column 31 is out of bounds (source may have changed at runtime) + at file:///[WILDCARD]/eval_context_conflicting_source.ts:1:31 + at file:///[WILDCARD]/eval_context_throw_with_conflicting_source.ts:[WILDCARD] -- cgit v1.2.3