From 0d647c1765c996cf3c477d2fc5aa4baf41d12135 Mon Sep 17 00:00:00 2001 From: Josh Gross Date: Tue, 14 Feb 2023 16:41:34 -0500 Subject: [PATCH] Move `ErrorPolicy` into template converter options --- actions-languageservice/src/complete.ts | 13 ++++------ actions-languageservice/src/document-links.ts | 4 +++- .../src/expression-hover/visitor.test.ts | 4 +++- actions-languageservice/src/hover.ts | 8 +++++-- .../src/test-utils/test-workflow-context.ts | 2 +- actions-languageservice/src/validate.ts | 13 ++++------ .../src/model/convert.test.ts | 24 ++++++++++++++----- actions-workflow-parser/src/model/convert.ts | 18 +++++++++----- actions-workflow-parser/src/xlang.test.ts | 1 - 9 files changed, 51 insertions(+), 36 deletions(-) diff --git a/actions-languageservice/src/complete.ts b/actions-languageservice/src/complete.ts index c12bacd..8050570 100644 --- a/actions-languageservice/src/complete.ts +++ b/actions-languageservice/src/complete.ts @@ -77,15 +77,10 @@ export async function complete( } const {token, keyToken, parent, path} = findToken(newPos, result.value); - const template = await convertWorkflowTemplate( - result.context, - result.value, - ErrorPolicy.TryConversion, - config?.fileProvider, - { - fetchReusableWorkflowDepth: config?.fileProvider ? 1 : 0 - } - ); + const template = await convertWorkflowTemplate(result.context, result.value, config?.fileProvider, { + fetchReusableWorkflowDepth: config?.fileProvider ? 1 : 0, + errorPolicy: ErrorPolicy.TryConversion + }); const workflowContext = getWorkflowContext(textDocument.uri, template, path); // If we are inside an expression, take a different code-path. The workflow parser does not correctly create diff --git a/actions-languageservice/src/document-links.ts b/actions-languageservice/src/document-links.ts index a22d358..42ec015 100644 --- a/actions-languageservice/src/document-links.ts +++ b/actions-languageservice/src/document-links.ts @@ -19,7 +19,9 @@ export async function documentLinks(document: TextDocument): Promise = { maxReusableWorkflowDepth: 4, - fetchReusableWorkflowDepth: 0 + fetchReusableWorkflowDepth: 0, + errorPolicy: ErrorPolicy.ReturnErrorsOnly }; export async function convertWorkflowTemplate( context: TemplateContext, root: TemplateToken, - errorPolicy: ErrorPolicy = ErrorPolicy.ReturnErrorsOnly, fileProvider?: FileProvider, options: WorkflowTemplateConverterOptions = defaultOptions ): Promise { const result = {} as WorkflowTemplate; + const opts = getOptionsWithDefaults(options); - if (context.errors.getErrors().length > 0 && errorPolicy === ErrorPolicy.ReturnErrorsOnly) { + if (context.errors.getErrors().length > 0 && opts.errorPolicy === ErrorPolicy.ReturnErrorsOnly) { result.errors = context.errors.getErrors().map(x => ({ Message: x.message })); return result; } - const opts = getOptionsWithDefaults(options); - if (fileProvider === undefined && opts.fetchReusableWorkflowDepth > 0) { context.error(root, new Error("A file provider is required to fetch reusable workflows")); } @@ -136,6 +141,7 @@ function getOptionsWithDefaults(options: WorkflowTemplateConverterOptions): Requ fetchReusableWorkflowDepth: options.fetchReusableWorkflowDepth !== undefined ? options.fetchReusableWorkflowDepth - : defaultOptions.fetchReusableWorkflowDepth + : defaultOptions.fetchReusableWorkflowDepth, + errorPolicy: options.errorPolicy !== undefined ? options.errorPolicy : defaultOptions.errorPolicy }; } diff --git a/actions-workflow-parser/src/xlang.test.ts b/actions-workflow-parser/src/xlang.test.ts index e9e2ab1..42a2b77 100644 --- a/actions-workflow-parser/src/xlang.test.ts +++ b/actions-workflow-parser/src/xlang.test.ts @@ -85,7 +85,6 @@ describe("x-lang tests", () => { const workflowTemplate = await convertWorkflowTemplate( parseResult.context, parseResult.value!, - undefined, testFileProvider, { fetchReusableWorkflowDepth: 1