From b7ab8e4a306fcdb63d6d718d84110a43b4b73e8c Mon Sep 17 00:00:00 2001 From: Josh Gross Date: Tue, 20 Dec 2022 17:34:03 -0500 Subject: [PATCH] Add workflow context test util --- .../src/test-utils/workflow-context.ts | 27 +++++++++++++++++++ actions-languageserver/tsconfig.build.json | 2 +- 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 actions-languageserver/src/test-utils/workflow-context.ts diff --git a/actions-languageserver/src/test-utils/workflow-context.ts b/actions-languageserver/src/test-utils/workflow-context.ts new file mode 100644 index 0000000..63841a6 --- /dev/null +++ b/actions-languageserver/src/test-utils/workflow-context.ts @@ -0,0 +1,27 @@ +import {WorkflowContext} from "@github/actions-languageservice/context/workflow-context"; +import {convertWorkflowTemplate, parseWorkflow, TraceWriter} from "@github/actions-workflow-parser"; + +const nullTrace: TraceWriter = { + info: x => {}, + verbose: x => {}, + error: x => {} +}; + +export function createWorkflowContext(workflow: string, job?: string, stepIndex?: number): WorkflowContext { + const parsed = parseWorkflow("test.yaml", [{name: "test.yaml", content: workflow}], nullTrace); + if (!parsed.value) { + throw new Error("Failed to parse workflow"); + } + const template = convertWorkflowTemplate(parsed.context, parsed.value); + const context: WorkflowContext = {uri: "test.yaml", template}; + + if (job) { + context.job = template.jobs.find(j => j.id.value === job); + } + + if (stepIndex) { + context.step = context.job?.steps[stepIndex]; + } + + return context; +} diff --git a/actions-languageserver/tsconfig.build.json b/actions-languageserver/tsconfig.build.json index 88bdfa8..61c74a3 100644 --- a/actions-languageserver/tsconfig.build.json +++ b/actions-languageserver/tsconfig.build.json @@ -1,5 +1,5 @@ { - "exclude": ["./src/**/*.test.ts"], + "exclude": ["./src/**/*.test.ts", "./src/test-utils"], "extends": "./tsconfig.json", "compilerOptions": { "declaration": true,