Improve error handling
This commit is contained in:
@@ -1,7 +1,9 @@
|
|||||||
import {data} from "@github/actions-expressions";
|
import {data} from "@github/actions-expressions";
|
||||||
import {complete, getExpressionInput} from "./complete";
|
import {complete, getExpressionInput} from "./complete";
|
||||||
import {ContextProviderConfig} from "./context-providers/config";
|
import {ContextProviderConfig} from "./context-providers/config";
|
||||||
|
import {registerLogger} from "./log";
|
||||||
import {getPositionFromCursor} from "./test-utils/cursor-position";
|
import {getPositionFromCursor} from "./test-utils/cursor-position";
|
||||||
|
import {TestLogger} from "./test-utils/logger";
|
||||||
|
|
||||||
const contextProviderConfig: ContextProviderConfig = {
|
const contextProviderConfig: ContextProviderConfig = {
|
||||||
getContext: async (context: string) => {
|
getContext: async (context: string) => {
|
||||||
@@ -17,6 +19,8 @@ const contextProviderConfig: ContextProviderConfig = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
registerLogger(new TestLogger());
|
||||||
|
|
||||||
describe("expressions", () => {
|
describe("expressions", () => {
|
||||||
it("input extraction", () => {
|
it("input extraction", () => {
|
||||||
const test = (input: string) => {
|
const test = (input: string) => {
|
||||||
|
|||||||
@@ -1,9 +1,13 @@
|
|||||||
import {TextEdit} from "vscode-languageserver-types";
|
import {TextEdit} from "vscode-languageserver-types";
|
||||||
import {complete} from "./complete";
|
import {complete} from "./complete";
|
||||||
import {WorkflowContext} from "./context/workflow-context";
|
import {WorkflowContext} from "./context/workflow-context";
|
||||||
|
import {registerLogger} from "./log";
|
||||||
import {getPositionFromCursor} from "./test-utils/cursor-position";
|
import {getPositionFromCursor} from "./test-utils/cursor-position";
|
||||||
|
import {TestLogger} from "./test-utils/logger";
|
||||||
import {ValueProviderConfig, ValueProviderKind} from "./value-providers/config";
|
import {ValueProviderConfig, ValueProviderKind} from "./value-providers/config";
|
||||||
|
|
||||||
|
registerLogger(new TestLogger());
|
||||||
|
|
||||||
describe("completion", () => {
|
describe("completion", () => {
|
||||||
it("runs-on", async () => {
|
it("runs-on", async () => {
|
||||||
const input = "on: push\njobs:\n build:\n runs-on: |";
|
const input = "on: push\njobs:\n build:\n runs-on: |";
|
||||||
|
|||||||
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,7 +1,11 @@
|
|||||||
import {DiagnosticSeverity} from "vscode-languageserver-types";
|
import {DiagnosticSeverity} from "vscode-languageserver-types";
|
||||||
|
import {registerLogger} from "./log";
|
||||||
import {createDocument} from "./test-utils/document";
|
import {createDocument} from "./test-utils/document";
|
||||||
|
import {TestLogger} from "./test-utils/logger";
|
||||||
import {validate} from "./validate";
|
import {validate} from "./validate";
|
||||||
|
|
||||||
|
registerLogger(new TestLogger());
|
||||||
|
|
||||||
describe("expression validation", () => {
|
describe("expression validation", () => {
|
||||||
it("access invalid context field", async () => {
|
it("access invalid context field", async () => {
|
||||||
const result = await validate(
|
const result = await validate(
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import {ContextProviderConfig} from "./context-providers/config";
|
|||||||
import {getContext} from "./context-providers/default";
|
import {getContext} from "./context-providers/default";
|
||||||
import {getWorkflowContext, WorkflowContext} from "./context/workflow-context";
|
import {getWorkflowContext, WorkflowContext} from "./context/workflow-context";
|
||||||
import {AccessError, wrapDictionary} from "./expression-validation/error-dictionary";
|
import {AccessError, wrapDictionary} from "./expression-validation/error-dictionary";
|
||||||
|
import {error} from "./log";
|
||||||
import {nullTrace} from "./nulltrace";
|
import {nullTrace} from "./nulltrace";
|
||||||
import {findToken} from "./utils/find-token";
|
import {findToken} from "./utils/find-token";
|
||||||
import {mapRange} from "./utils/range";
|
import {mapRange} from "./utils/range";
|
||||||
@@ -74,7 +75,7 @@ export async function validate(
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
// TODO: Handle error here
|
error(`Unhandled error while validating: ${e}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
return diagnostics;
|
return diagnostics;
|
||||||
@@ -208,7 +209,7 @@ async function validateExpression(
|
|||||||
range: mapRange(expression.range)
|
range: mapRange(expression.range)
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
// Ignore error
|
throw e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user