From 1cc4755331ab1d6af0e25eb459ae74571975a783 Mon Sep 17 00:00:00 2001 From: Julius Celik Date: Fri, 26 Jun 2020 14:58:05 +0200 Subject: [PATCH 1/6] test(load): adds test for loading plugins from an extended config --- .../fixtures/extends-with-plugins/commitlint.config.js | 3 +++ .../config-with-plugins/commitlint.config.js | 4 ++++ .../extends-with-plugins/config-with-plugins/index.js | 1 + @commitlint/load/src/load.test.ts | 10 ++++++++++ 4 files changed, 18 insertions(+) create mode 100644 @commitlint/load/fixtures/extends-with-plugins/commitlint.config.js create mode 100644 @commitlint/load/fixtures/extends-with-plugins/config-with-plugins/commitlint.config.js create mode 100644 @commitlint/load/fixtures/extends-with-plugins/config-with-plugins/index.js diff --git a/@commitlint/load/fixtures/extends-with-plugins/commitlint.config.js b/@commitlint/load/fixtures/extends-with-plugins/commitlint.config.js new file mode 100644 index 0000000000..cf6e89466d --- /dev/null +++ b/@commitlint/load/fixtures/extends-with-plugins/commitlint.config.js @@ -0,0 +1,3 @@ +module.exports = { + extends: ['./config-with-plugins'], +}; diff --git a/@commitlint/load/fixtures/extends-with-plugins/config-with-plugins/commitlint.config.js b/@commitlint/load/fixtures/extends-with-plugins/config-with-plugins/commitlint.config.js new file mode 100644 index 0000000000..07fe7273fe --- /dev/null +++ b/@commitlint/load/fixtures/extends-with-plugins/config-with-plugins/commitlint.config.js @@ -0,0 +1,4 @@ +module.exports = { + extends: [], + plugins: ['example', '@scope/example'] +}; diff --git a/@commitlint/load/fixtures/extends-with-plugins/config-with-plugins/index.js b/@commitlint/load/fixtures/extends-with-plugins/config-with-plugins/index.js new file mode 100644 index 0000000000..fe16cc487b --- /dev/null +++ b/@commitlint/load/fixtures/extends-with-plugins/config-with-plugins/index.js @@ -0,0 +1 @@ +module.exports = require('./commitlint.config.js'); diff --git a/@commitlint/load/src/load.test.ts b/@commitlint/load/src/load.test.ts index 80e71147d9..b33cd147e9 100644 --- a/@commitlint/load/src/load.test.ts +++ b/@commitlint/load/src/load.test.ts @@ -95,6 +95,16 @@ test('plugins should be loaded from config', async () => { }); }); +test('plugins should be loaded from shareable config', async () => { + const cwd = await gitBootstrap('fixtures/extends-with-plugins'); + const actual = await load({}, {cwd}); + + expect(actual.plugins).toMatchObject({ + example: plugin, + '@scope/example': scopedPlugin + }); +}); + test('uses seed with parserPreset', async () => { const cwd = await gitBootstrap('fixtures/parser-preset'); const {parserPreset: actual} = await load( From a75693478ec0adb71a2353de3962c7e973569d1e Mon Sep 17 00:00:00 2001 From: Julius Celik Date: Fri, 26 Jun 2020 14:59:28 +0200 Subject: [PATCH 2/6] fix(load): loads plugins from extended configs --- @commitlint/load/src/load.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/@commitlint/load/src/load.ts b/@commitlint/load/src/load.ts index 63fec9b908..1abc4c5a5f 100644 --- a/@commitlint/load/src/load.ts +++ b/@commitlint/load/src/load.ts @@ -3,6 +3,7 @@ import Path from 'path'; import merge from 'lodash/merge'; import mergeWith from 'lodash/mergeWith'; import pick from 'lodash/pick'; +import union from 'lodash/union'; import resolveFrom from 'resolve-from'; import executeRule from '@commitlint/execute-rule'; @@ -84,6 +85,10 @@ export default async function load( resolveFrom.silent(base, config.formatter) || config.formatter; } + // Read plugins from extends + if (Array.isArray(extended.plugins)) + config.plugins = union(config.plugins, extended.plugins || []); + // resolve plugins if (Array.isArray(config.plugins)) { config.plugins.forEach(plugin => { From 8b42bc3bfbe305af4cd528606ff3139bb69ed319 Mon Sep 17 00:00:00 2001 From: Julius Celik Date: Fri, 26 Jun 2020 15:30:00 +0200 Subject: [PATCH 3/6] refactor: clean up a loading test --- .../config-with-plugins/commitlint.config.js | 1 - 1 file changed, 1 deletion(-) diff --git a/@commitlint/load/fixtures/extends-with-plugins/config-with-plugins/commitlint.config.js b/@commitlint/load/fixtures/extends-with-plugins/config-with-plugins/commitlint.config.js index 07fe7273fe..1a285b7b1a 100644 --- a/@commitlint/load/fixtures/extends-with-plugins/config-with-plugins/commitlint.config.js +++ b/@commitlint/load/fixtures/extends-with-plugins/config-with-plugins/commitlint.config.js @@ -1,4 +1,3 @@ module.exports = { - extends: [], plugins: ['example', '@scope/example'] }; From 54869eab930c11ad3e87d184d1d73edb310b5cc1 Mon Sep 17 00:00:00 2001 From: Julius Celik Date: Fri, 26 Jun 2020 15:30:38 +0200 Subject: [PATCH 4/6] test(load): adds test for including a shareable config with a local plugin --- .../commitlint.config.js | 3 +++ .../commitlint.config.js | 9 +++++++++ .../config-with-local-plugin/index.js | 1 + @commitlint/load/src/load.test.ts | 16 ++++++++++++++++ 4 files changed, 29 insertions(+) create mode 100644 @commitlint/load/fixtures/extends-with-local-plugins/commitlint.config.js create mode 100644 @commitlint/load/fixtures/extends-with-local-plugins/config-with-local-plugin/commitlint.config.js create mode 100644 @commitlint/load/fixtures/extends-with-local-plugins/config-with-local-plugin/index.js diff --git a/@commitlint/load/fixtures/extends-with-local-plugins/commitlint.config.js b/@commitlint/load/fixtures/extends-with-local-plugins/commitlint.config.js new file mode 100644 index 0000000000..f0c973fd8c --- /dev/null +++ b/@commitlint/load/fixtures/extends-with-local-plugins/commitlint.config.js @@ -0,0 +1,3 @@ +module.exports = { + extends: ['./config-with-local-plugin'], +}; diff --git a/@commitlint/load/fixtures/extends-with-local-plugins/config-with-local-plugin/commitlint.config.js b/@commitlint/load/fixtures/extends-with-local-plugins/config-with-local-plugin/commitlint.config.js new file mode 100644 index 0000000000..ba01abd6f8 --- /dev/null +++ b/@commitlint/load/fixtures/extends-with-local-plugins/config-with-local-plugin/commitlint.config.js @@ -0,0 +1,9 @@ +module.exports = { + extends: [], + plugins: [{ + rules: { + test1: () => [true, 'asd'], + test2: () => [true, 'fgh'] + } + }] +}; diff --git a/@commitlint/load/fixtures/extends-with-local-plugins/config-with-local-plugin/index.js b/@commitlint/load/fixtures/extends-with-local-plugins/config-with-local-plugin/index.js new file mode 100644 index 0000000000..fe16cc487b --- /dev/null +++ b/@commitlint/load/fixtures/extends-with-local-plugins/config-with-local-plugin/index.js @@ -0,0 +1 @@ +module.exports = require('./commitlint.config.js'); diff --git a/@commitlint/load/src/load.test.ts b/@commitlint/load/src/load.test.ts index b33cd147e9..5fedf44447 100644 --- a/@commitlint/load/src/load.test.ts +++ b/@commitlint/load/src/load.test.ts @@ -105,6 +105,22 @@ test('plugins should be loaded from shareable config', async () => { }); }); +test('local plugins should be loaded from shareable configs', async () => { + const cwd = await gitBootstrap('fixtures/extends-with-local-plugins'); + const actual = await load({}, {cwd}); + + expect(actual.plugins).toEqual( + expect.objectContaining({ + local: { + rules: { + test1: expect.any(Function), + test2: expect.any(Function) + } + } + }) + ); +}); + test('uses seed with parserPreset', async () => { const cwd = await gitBootstrap('fixtures/parser-preset'); const {parserPreset: actual} = await load( From 592d265ec7f63e87d782fbb38fb6d259335efec6 Mon Sep 17 00:00:00 2001 From: juliuscc Date: Sat, 27 Jun 2020 09:13:53 +0200 Subject: [PATCH 5/6] test: adds more realistic test-scenarios --- .../commitlint.config.js | 16 ++++++++++++++-- @commitlint/load/src/load.test.ts | 4 ++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/@commitlint/load/fixtures/extends-with-local-plugins/config-with-local-plugin/commitlint.config.js b/@commitlint/load/fixtures/extends-with-local-plugins/config-with-local-plugin/commitlint.config.js index ba01abd6f8..2412bcd48a 100644 --- a/@commitlint/load/fixtures/extends-with-local-plugins/config-with-local-plugin/commitlint.config.js +++ b/@commitlint/load/fixtures/extends-with-local-plugins/config-with-local-plugin/commitlint.config.js @@ -2,8 +2,20 @@ module.exports = { extends: [], plugins: [{ rules: { - test1: () => [true, 'asd'], - test2: () => [true, 'fgh'] + 'hello-world-rule': ({ subject }) => { + const HELLO_WORLD = 'Hello World'; + return [ + subject.includes(HELLO_WORLD), + `Your subject should contain ${HELLO_WORLD} message` + ]; + }, + 'is-positive': ({ subject }) => { + const POSITIVE_EMOJI = ':)'; + return [ + subject.includes(POSITIVE_EMOJI), + `Your subject should contain ${POSITIVE_EMOJI} message` + ]; + } } }] }; diff --git a/@commitlint/load/src/load.test.ts b/@commitlint/load/src/load.test.ts index 5fedf44447..1a3e4ba1f8 100644 --- a/@commitlint/load/src/load.test.ts +++ b/@commitlint/load/src/load.test.ts @@ -113,8 +113,8 @@ test('local plugins should be loaded from shareable configs', async () => { expect.objectContaining({ local: { rules: { - test1: expect.any(Function), - test2: expect.any(Function) + 'hello-world-rule': expect.any(Function), + 'is-positive': expect.any(Function) } } }) From ad3aecbb6e2fdaef739bd25400b846ede7b21f5e Mon Sep 17 00:00:00 2001 From: Julius Recep Colliander Celik Date: Sun, 28 Jun 2020 09:57:04 +0200 Subject: [PATCH 6/6] Update @commitlint/load/src/load.ts Co-authored-by: Cedric van Putten --- @commitlint/load/src/load.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/@commitlint/load/src/load.ts b/@commitlint/load/src/load.ts index 1abc4c5a5f..c939e82192 100644 --- a/@commitlint/load/src/load.ts +++ b/@commitlint/load/src/load.ts @@ -86,8 +86,9 @@ export default async function load( } // Read plugins from extends - if (Array.isArray(extended.plugins)) + if (Array.isArray(extended.plugins)) { config.plugins = union(config.plugins, extended.plugins || []); + } // resolve plugins if (Array.isArray(config.plugins)) {