From 90391c878c95f78d63c5423cc6fa73fab3568f66 Mon Sep 17 00:00:00 2001 From: Armano Date: Fri, 29 Jan 2021 01:08:32 +0100 Subject: [PATCH] fix: rollback some unnecessary changes --- @commitlint/resolve-extends/src/index.test.ts | 36 +++++++++++++++++++ @commitlint/resolve-extends/src/index.ts | 4 +-- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/@commitlint/resolve-extends/src/index.test.ts b/@commitlint/resolve-extends/src/index.test.ts index 98099af3dd..e651bce889 100644 --- a/@commitlint/resolve-extends/src/index.test.ts +++ b/@commitlint/resolve-extends/src/index.test.ts @@ -493,3 +493,39 @@ test('parserPreset should be merged correctly', () => { expect(actual).toEqual(expected); }); + +test('should correctly merge nested configs', () => { + const input = {extends: ['extender-1']}; + + const require = (id: string) => { + switch (id) { + case 'extender-1': + return {extends: ['extender-3', 'extender-2']}; + case 'extender-2': + return {extends: ['extender-4']}; + case 'extender-3': + return {rules: {test: 3}}; + case 'extender-4': + return {extends: ['extender-5', 'extender-6'], rules: {test: 4}}; + case 'extender-5': + return {rules: {test: 5}}; + case 'extender-6': + return {rules: {test: 6}}; + default: + return {}; + } + }; + + const ctx = {resolve: id, require: jest.fn(require)} as ResolveExtendsContext; + + const actual = resolveExtends(input, ctx); + + const expected = { + extends: ['extender-1'], + rules: { + test: 4, + }, + }; + + expect(actual).toEqual(expected); +}); diff --git a/@commitlint/resolve-extends/src/index.ts b/@commitlint/resolve-extends/src/index.ts index 597a9db556..ca91b59b05 100644 --- a/@commitlint/resolve-extends/src/index.ts +++ b/@commitlint/resolve-extends/src/index.ts @@ -55,7 +55,7 @@ function loadExtends( const {extends: e} = config; const ext = e ? (Array.isArray(e) ? e : [e]) : []; - return ext.reduceRight((configs, raw) => { + return ext.reduce((configs, raw) => { const load = context.require || require; const resolved = resolveConfig(raw, context); const c = load(resolved); @@ -81,7 +81,7 @@ function loadExtends( config.parserPreset = parserPreset; } - return [...loadExtends(c, ctx), c, ...configs]; + return [...configs, ...loadExtends(c, ctx), c]; }, []); }