Skip to content

Commit 934ea97

Browse files
authored
Fix bug with extends in multi levels. Apparent extends is using deep-merge, not deep-extends like the rest of the YAML (#112)
1 parent 465b28e commit 934ea97

File tree

3 files changed

+22
-6
lines changed

3 files changed

+22
-6
lines changed

src/job-expanders.ts

+4
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@ export function jobExtends(gitlabData: any) {
2828
delete jobData.extends;
2929
}
3030

31+
if (parentData.extends) {
32+
jobData.extends = (jobData.extends || []).concat(parentData.extends);
33+
}
34+
3135
gitlabData[jobName] = deepExtend({}, parentData, jobData);
3236
}
3337

tests/cases.test.ts

+6-2
Original file line numberDiff line numberDiff line change
@@ -280,11 +280,15 @@ test('dotenv <test-job>', async () => {
280280
expect(mockProcessStdout).toHaveBeenCalledWith("Test something\n");
281281
});
282282

283-
test('extends', async () => {
283+
test('extends <test-job>', async () => {
284284
await defaultCmd.handler({
285-
cwd: 'tests/test-cases/extends'
285+
cwd: 'tests/test-cases/extends',
286+
job: 'test-job'
286287
});
288+
289+
expect(mockProcessStdout).toHaveBeenCalledWith("Test something (before_script)\n");
287290
expect(mockProcessStdout).toHaveBeenCalledWith("Test something\n");
291+
expect(mockProcessStdout).toHaveBeenCalledWith("Test something (after_script)\n");
288292
expect(mockProcessExit).toBeCalledTimes(0);
289293
});
290294

+12-4
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,21 @@
11
---
2-
.parent1:
2+
.after:
3+
after_script:
4+
- echo "Test something (after_script)"
5+
6+
.before:
37
stage: test
8+
before_script:
9+
- echo "Test something (before_script)"
410
script:
511
- echo "Should not be printed"
612

7-
.parent2:
8-
extends: .parent1
13+
.parent:
14+
extends: .before
915
script:
1016
- echo "Test something"
1117

1218
test-job:
13-
extends: .parent2
19+
extends:
20+
- .after
21+
- .parent

0 commit comments

Comments
 (0)