From 66c800fc25566afe823ab6236374fa65661fe250 Mon Sep 17 00:00:00 2001 From: Christopher Schleiden Date: Mon, 9 Jan 2023 15:22:49 -0800 Subject: [PATCH] Do not report required inputs without value but a default as error --- .../src/validate-action.ts | 2 +- .../src/validate.actions.test.ts | 31 ++++++++++++++++--- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/actions-languageservice/src/validate-action.ts b/actions-languageservice/src/validate-action.ts index dbd404a..8a5d30d 100644 --- a/actions-languageservice/src/validate-action.ts +++ b/actions-languageservice/src/validate-action.ts @@ -65,7 +65,7 @@ export async function validateAction( } const missingRequiredInputs = Object.entries(actionInputs).filter( - ([inputName, input]) => input.required && !stepInputs.has(inputName) + ([inputName, input]) => input.required && !stepInputs.has(inputName) && input.default === undefined ); if (missingRequiredInputs.length > 0) { diff --git a/actions-languageservice/src/validate.actions.test.ts b/actions-languageservice/src/validate.actions.test.ts index 9b499bf..b9be81b 100644 --- a/actions-languageservice/src/validate.actions.test.ts +++ b/actions-languageservice/src/validate.actions.test.ts @@ -1,4 +1,4 @@ -import {Diagnostic, DiagnosticSeverity} from "vscode-languageserver-types"; +import {DiagnosticSeverity} from "vscode-languageserver-types"; import {ActionInput, ActionReference} from "./action"; import {registerLogger} from "./log"; import {createDocument} from "./test-utils/document"; @@ -29,6 +29,15 @@ const validationConfig: ValidationConfig = { } }; break; + case "actions/deploy-pages": + inputs = { + token: { + required: true, + description: "token to use", + default: "${{ github.token }}" + } + }; + break; case "actions/cache@v1": inputs = { path: { @@ -73,7 +82,7 @@ jobs: steps: - uses: actions/checkout@v2 with: - notanoption: true + notanoption: true `; const result = await validate(createDocument("wf.yaml", input), validationConfig); @@ -104,7 +113,7 @@ jobs: steps: - uses: actions/setup-node@v1 with: - version: 10 + version: 10 `; const result = await validate(createDocument("wf.yaml", input), validationConfig); @@ -157,6 +166,20 @@ jobs: ]); }); + it("required input with default value", async () => { + const input = ` +on: push +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/deploy-pages@main +`; + const result = await validate(createDocument("wf.yaml", input), validationConfig); + + expect(result).toEqual([]); + }); + it("multiple missing required inputs", async () => { const input = ` on: push @@ -226,7 +249,7 @@ jobs: steps: - uses: actions/checkout@v2 with: - notanoption: true + notanoption: true `; const config = validationConfig; config.valueProviderConfig = {