From 71c3fcbb4751ea159a7df55b8170f3196de7619a Mon Sep 17 00:00:00 2001 From: Christopher Schleiden Date: Thu, 8 Dec 2022 10:17:29 -0800 Subject: [PATCH] Improve error handling --- .../src/complete.expressions.test.ts | 4 ++++ actions-languageservice/src/complete.test.ts | 4 ++++ .../src/test-utils/logger.ts | 19 +++++++++++++++++++ .../src/validate.expressions.test.ts | 4 ++++ actions-languageservice/src/validate.ts | 5 +++-- 5 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 actions-languageservice/src/test-utils/logger.ts diff --git a/actions-languageservice/src/complete.expressions.test.ts b/actions-languageservice/src/complete.expressions.test.ts index ee9691d..232556e 100644 --- a/actions-languageservice/src/complete.expressions.test.ts +++ b/actions-languageservice/src/complete.expressions.test.ts @@ -1,7 +1,9 @@ import {data} from "@github/actions-expressions"; import {complete, getExpressionInput} from "./complete"; import {ContextProviderConfig} from "./context-providers/config"; +import {registerLogger} from "./log"; import {getPositionFromCursor} from "./test-utils/cursor-position"; +import {TestLogger} from "./test-utils/logger"; const contextProviderConfig: ContextProviderConfig = { getContext: async (context: string) => { @@ -17,6 +19,8 @@ const contextProviderConfig: ContextProviderConfig = { } }; +registerLogger(new TestLogger()); + describe("expressions", () => { it("input extraction", () => { const test = (input: string) => { diff --git a/actions-languageservice/src/complete.test.ts b/actions-languageservice/src/complete.test.ts index 3ec5c2b..ef59c0e 100644 --- a/actions-languageservice/src/complete.test.ts +++ b/actions-languageservice/src/complete.test.ts @@ -1,9 +1,13 @@ import {TextEdit} from "vscode-languageserver-types"; import {complete} from "./complete"; import {WorkflowContext} from "./context/workflow-context"; +import {registerLogger} from "./log"; import {getPositionFromCursor} from "./test-utils/cursor-position"; +import {TestLogger} from "./test-utils/logger"; import {ValueProviderConfig, ValueProviderKind} from "./value-providers/config"; +registerLogger(new TestLogger()); + describe("completion", () => { it("runs-on", async () => { const input = "on: push\njobs:\n build:\n runs-on: |"; diff --git a/actions-languageservice/src/test-utils/logger.ts b/actions-languageservice/src/test-utils/logger.ts new file mode 100644 index 0000000..4a3a75f --- /dev/null +++ b/actions-languageservice/src/test-utils/logger.ts @@ -0,0 +1,19 @@ +import {Logger} from "../log"; + +export class TestLogger implements Logger { + error(message: string): void { + throw new Error(`Error: ${message}`); + } + + warn(message: string): void { + console.warn(message); + } + + info(message: string): void { + console.info(message); + } + + log(message: string): void { + console.warn(message); + } +} diff --git a/actions-languageservice/src/validate.expressions.test.ts b/actions-languageservice/src/validate.expressions.test.ts index 5b1afd0..152cfe6 100644 --- a/actions-languageservice/src/validate.expressions.test.ts +++ b/actions-languageservice/src/validate.expressions.test.ts @@ -1,7 +1,11 @@ import {DiagnosticSeverity} from "vscode-languageserver-types"; +import {registerLogger} from "./log"; import {createDocument} from "./test-utils/document"; +import {TestLogger} from "./test-utils/logger"; import {validate} from "./validate"; +registerLogger(new TestLogger()); + describe("expression validation", () => { it("access invalid context field", async () => { const result = await validate( diff --git a/actions-languageservice/src/validate.ts b/actions-languageservice/src/validate.ts index d0ca448..39e1177 100644 --- a/actions-languageservice/src/validate.ts +++ b/actions-languageservice/src/validate.ts @@ -22,6 +22,7 @@ import {ContextProviderConfig} from "./context-providers/config"; import {getContext} from "./context-providers/default"; import {getWorkflowContext, WorkflowContext} from "./context/workflow-context"; import {AccessError, wrapDictionary} from "./expression-validation/error-dictionary"; +import {error} from "./log"; import {nullTrace} from "./nulltrace"; import {findToken} from "./utils/find-token"; import {mapRange} from "./utils/range"; @@ -74,7 +75,7 @@ export async function validate( }); } } catch (e) { - // TODO: Handle error here + error(`Unhandled error while validating: ${e}`); } return diagnostics; @@ -208,7 +209,7 @@ async function validateExpression( range: mapRange(expression.range) }); } else { - // Ignore error + throw e; } } }