Skip to content

Commit c0a9e5d

Browse files
author
Anton Kayukov
committed
Fix inputs parsing when ctx.inputs is undefined.
1 parent 78b65eb commit c0a9e5d

File tree

3 files changed

+60
-1
lines changed

3 files changed

+60
-1
lines changed

src/parser.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -409,7 +409,7 @@ function parseIncludeInputs (ctx: any): {inputValue: any; inputType: InputType}
409409

410410
function getInputValue (ctx: any) {
411411
const {inputs, interpolationKey, configFilePath, inputsSpecification} = ctx;
412-
const inputValue = inputs[interpolationKey] ??
412+
const inputValue = inputs?.[interpolationKey] ??
413413
inputsSpecification.spec.inputs[interpolationKey]?.default;
414414
assert(inputValue !== undefined, chalk`This GitLab CI configuration is invalid: \`{blueBright ${configFilePath}}\`: \`{blueBright ${interpolationKey}}\` input: required value has not been provided.`);
415415
return inputValue;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
---
2+
spec:
3+
inputs:
4+
default_input_string:
5+
type: string
6+
default: string
7+
default_input_number:
8+
default: 1
9+
type: number
10+
default_input_boolean:
11+
default: true
12+
type: boolean
13+
default_input_array:
14+
type: array
15+
default:
16+
- alice
17+
- bob
18+
---
19+
stages:
20+
- test
21+
scan-website:
22+
script:
23+
- echo $[[ inputs.default_input_string ]]
24+
- echo $[[ inputs.default_input_number ]]
25+
- echo $[[ inputs.default_input_boolean ]]
26+
- $[[ inputs.default_input_array ]]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import {WriteStreamsMock} from "../../../src/write-streams.js";
2+
import {handler} from "../../../src/handler.js";
3+
import assert, {AssertionError} from "assert";
4+
import {initSpawnSpy} from "../../mocks/utils.mock.js";
5+
import {WhenStatics} from "../../mocks/when-statics.js";
6+
import chalk from "chalk";
7+
8+
beforeAll(() => {
9+
initSpawnSpy(WhenStatics.all);
10+
});
11+
12+
test("basic-inputs defaults no inputs", async () => {
13+
const writeStreams = new WriteStreamsMock();
14+
await handler({
15+
cwd: "tests/test-cases/basic-inputs/input-templates/default-no-inputs",
16+
preview: true,
17+
}, writeStreams);
18+
19+
const expected = `---
20+
stages:
21+
- .pre
22+
- test
23+
- .post
24+
scan-website:
25+
script:
26+
- echo string
27+
- echo 1
28+
- echo true
29+
- alice
30+
- bob`;
31+
32+
expect(writeStreams.stdoutLines[0]).toEqual(expected);
33+
});

0 commit comments

Comments
 (0)