Skip to content

Commit

Permalink
QUA-146: Fix no rules configured warning (#509) (#510)
Browse files Browse the repository at this point in the history
* QUA-146: Avoid warning due to file without rules

* QUA-146: Avoid checking condition in each iteration
  • Loading branch information
noelia-lencina authored Dec 17, 2020
1 parent e15fc91 commit f2791e8
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 52 deletions.
11 changes: 0 additions & 11 deletions integration/eslint_test.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,17 +43,6 @@ describe("eslint integration", function() {
})

describe("validating config", function() {
it("warns about empty config but not raise error", function() {
function executeEmptyConfig() {
executeConfig("empty_config/config.json")
}

expect(executeEmptyConfig).to.not.throw()
expect(consoleMock.outputErr).to.include(
"No rules are configured. Make sure you have added a config file with rules enabled."
)
})

it("raise on file not found", function() {
function executeNoLintrc() {
executeConfig("no_lintrc/config.json")
Expand Down
52 changes: 16 additions & 36 deletions lib/eslint6-patch.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,21 +34,6 @@ module.exports = function patch() {
}
}

function configWithRules(config) {
if (config.rules) {
return config
}

console.error(
"No rules are configured. Make sure you have added a config file with rules enabled."
)
console.error(
"See our documentation at https://docs.codeclimate.com/docs/eslint for more information."
)

return false
}

function patchPluginLoading() {
const methods = [
"_loadExtendedPluginConfig",
Expand Down Expand Up @@ -84,39 +69,34 @@ module.exports = function patch() {
})
}

function patchConfigs() {
const originalLoadConfigData = ConfigArrayFactory.prototype._loadConfigData
ConfigArrayFactory.prototype._loadConfigData = function _loadConfigData() {
const results = originalLoadConfigData.apply(this, arguments)
return [...results].filter(configWithRules)
}
}

function patchConfigArray() {
const orig = ConfigArray.prototype.extractConfig
ConfigArray.prototype.extractConfig = function extractConfig() {
const config = orig.apply(this, arguments)

RULES_BLOCKLIST.forEach((ruleName) => {
if (config.rules[ruleName] !== "off") {
config.rules[ruleName] = "off"
disabledRules.add(ruleName)
}
})
if (config.rules) {
RULES_BLOCKLIST.forEach((ruleName) => {
if (config.rules[ruleName] !== "off") {
config.rules[ruleName] = "off"
disabledRules.add(ruleName)
}
})
}

SETTINGS_BLOCKLIST.forEach((settingName) => {
if (config.settings && config.settings[settingName]) {
delete config.settings[settingName]
removedSettings.add(settingName)
}
})
if (config.settings) {
SETTINGS_BLOCKLIST.forEach((settingName) => {
if (config.settings[settingName]) {
delete config.settings[settingName]
removedSettings.add(settingName)
}
})
}

return config
}
}

patchPluginLoading()
patchConfigs()
patchConfigArray()

return {
Expand Down
11 changes: 6 additions & 5 deletions test/eslint6-patch_test.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ const expect = require("chai").expect
const sinon = require("sinon")

const { ConfigArrayFactory } = require("eslint/lib/cli-engine/config-array-factory")
const { ConfigArray } = require("eslint/lib/cli-engine/config-array")

const eslintPatch = require("../lib/eslint6-patch")

Expand All @@ -11,11 +12,11 @@ const eslintPatch = require("../lib/eslint6-patch")
*/
describe("eslint6-patch", function() {
describe("patch", function() {
let originalLoadPlugin, originalLoadConfigData
let originalLoadPlugin, originalExtractConfig

before(function() {
originalLoadPlugin = ConfigArrayFactory.prototype._loadPlugin
originalLoadConfigData = ConfigArrayFactory.prototype._loadConfigData
originalExtractConfig = ConfigArray.prototype.extractConfig
})

it("intercepts plugin loading", function() {
Expand All @@ -28,9 +29,9 @@ describe("eslint6-patch", function() {

it("intercepts rule configs", function() {
eslintPatch()
expect(originalLoadConfigData).to.not.equal(
ConfigArrayFactory.prototype._loadConfigData,
"ConfigArrayFactory._loadConfigData is not patched"
expect(originalExtractConfig).to.not.equal(
ConfigArray.prototype.extractConfig,
"ConfigArray.prototype.extractConfig is not patched"
)
})
})
Expand Down

0 comments on commit f2791e8

Please sign in to comment.