From c267e06e7ffcad9f18b72b3dbd6c8d11444ccbfc Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@keylocation.sg> Date: Sat, 15 Apr 2017 21:58:41 +0200 Subject: [PATCH] Make package pattern explicit (#165) --- lib/worker.js | 4 +- test/__snapshots__/worker.spec.js.snap | 69 +++++++++++++++++++++++++- test/worker.spec.js | 46 ++++++++++++++++- 3 files changed, 115 insertions(+), 4 deletions(-) diff --git a/lib/worker.js b/lib/worker.js index 6680c156a0..d36bd18b48 100644 --- a/lib/worker.js +++ b/lib/worker.js @@ -84,11 +84,13 @@ function assignDepConfigs(inputConfig, deps) { // Exit after first match returnDep.config.packages.forEach((packageConfig) => { if (!packageRuleApplied) { - const packageRegex = new RegExp(packageConfig.packageName); + const pattern = packageConfig.packagePattern || `^${packageConfig.packageName}$`; + const packageRegex = new RegExp(pattern); if (dep.depName.match(packageRegex)) { packageRuleApplied = true; Object.assign(returnDep.config, packageConfig); delete returnDep.config.packageName; + delete returnDep.config.packagePattern; } } }); diff --git a/test/__snapshots__/worker.spec.js.snap b/test/__snapshots__/worker.spec.js.snap index 225e196e1b..8fe51724e7 100644 --- a/test/__snapshots__/worker.spec.js.snap +++ b/test/__snapshots__/worker.spec.js.snap @@ -42,6 +42,38 @@ Array [ ] `; +exports[`worker assignDepConfigs(inputConfig, deps) handles non-regex package name 1`] = ` +Array [ + Object { + "config": Object { + "foo": "bar", + "labels": Array [ + "eslint", + ], + }, + "depName": "eslint", + }, + Object { + "config": Object { + "foo": "bar", + }, + "depName": "eslint-foo", + }, + Object { + "config": Object { + "foo": "bar", + }, + "depName": "a", + }, + Object { + "config": Object { + "foo": "bar", + }, + "depName": "also-eslint", + }, +] +`; + exports[`worker assignDepConfigs(inputConfig, deps) handles package config 1`] = ` Array [ Object { @@ -56,7 +88,7 @@ Array [ ] `; -exports[`worker assignDepConfigs(inputConfig, deps) handles regex package config 1`] = ` +exports[`worker assignDepConfigs(inputConfig, deps) handles regex package pattern 1`] = ` Array [ Object { "config": Object { @@ -94,6 +126,41 @@ Array [ ] `; +exports[`worker assignDepConfigs(inputConfig, deps) handles regex wildcard package pattern 1`] = ` +Array [ + Object { + "config": Object { + "foo": "bar", + "labels": Array [ + "eslint", + ], + }, + "depName": "eslint", + }, + Object { + "config": Object { + "foo": "bar", + "labels": Array [ + "eslint", + ], + }, + "depName": "eslint-foo", + }, + Object { + "config": Object { + "foo": "bar", + }, + "depName": "a", + }, + Object { + "config": Object { + "foo": "bar", + }, + "depName": "also-eslint", + }, +] +`; + exports[`worker assignDepConfigs(inputConfig, deps) handles string deps 1`] = ` Array [ Object { diff --git a/test/worker.spec.js b/test/worker.spec.js index c64bc51ba1..c82f0026e9 100644 --- a/test/worker.spec.js +++ b/test/worker.spec.js @@ -206,10 +206,52 @@ describe('worker', () => { const updatedDeps = worker.assignDepConfigs(config, deps); expect(updatedDeps).toMatchSnapshot(); }); - it('handles regex package config', () => { + it('handles regex package pattern', () => { config.foo = 'bar'; config.packages = [{ - packageName: 'eslint.*', + packagePattern: 'eslint', + labels: ['eslint'], + }]; + deps.push({ + depName: 'eslint', + }); + deps.push({ + depName: 'eslint-foo', + }); + deps.push({ + depName: 'a', + }); + deps.push({ + depName: 'also-eslint', + }); + const updatedDeps = worker.assignDepConfigs(config, deps); + expect(updatedDeps).toMatchSnapshot(); + }); + it('handles regex wildcard package pattern', () => { + config.foo = 'bar'; + config.packages = [{ + packagePattern: '^eslint', + labels: ['eslint'], + }]; + deps.push({ + depName: 'eslint', + }); + deps.push({ + depName: 'eslint-foo', + }); + deps.push({ + depName: 'a', + }); + deps.push({ + depName: 'also-eslint', + }); + const updatedDeps = worker.assignDepConfigs(config, deps); + expect(updatedDeps).toMatchSnapshot(); + }); + it('handles non-regex package name', () => { + config.foo = 'bar'; + config.packages = [{ + packageName: 'eslint', labels: ['eslint'], }]; deps.push({ -- GitLab