Skip to content
This repository was archived by the owner on Mar 23, 2024. It is now read-only.

Commit 8eb92b6

Browse files
committed
Configuration: correct config dir detection
Fixes #1932
1 parent 5eb8fbd commit 8eb92b6

4 files changed

Lines changed: 44 additions & 4 deletions

File tree

lib/config/node-configuration.js

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
var path = require('path');
22
var util = require('util');
3-
var utils = require('../utils');
3+
var fs = require('fs');
4+
var assert = require('assert');
5+
46
var glob = require('glob');
7+
var resolve = require('resolve');
8+
9+
var utils = require('../utils');
510
var Configuration = require('./configuration');
6-
var assert = require('assert');
711
var configFinder = require('../cli-config');
8-
var resolve = require('resolve');
12+
913

1014
var OVERRIDE_OPTIONS = [
1115
'fix',
@@ -200,7 +204,10 @@ NodeConfiguration.prototype._loadAdditionalRule = function(additionalRule, confi
200204

201205
if (typeof additionalRule === 'string') {
202206
if (glob.hasMagic(additionalRule)) {
203-
config = path.extname(config).length ? path.dirname(config) : config;
207+
208+
// In some cases there might not be a config
209+
// like if options are defined through direct initialization (grunt plugin case)
210+
config = fs.statSync(config).isDirectory() ? config : path.dirname(config);
204211

205212
glob.sync(path.resolve(config, additionalRule)).forEach(function(p) {
206213
var Rule = require(p);
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"successRule": true
3+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
module.exports = function() {};
2+
3+
module.exports.prototype = {
4+
5+
configure: function() {},
6+
7+
getOptionName: function() {
8+
return 'successRule';
9+
},
10+
11+
check: function(file, errors) {}
12+
};

test/specs/config/node-configuration.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -395,6 +395,24 @@ describe('modules/config/node-configuration', function() {
395395
expect(configuration.getRegisteredRules()[0]).to.be.an.instanceof(AdditionalRule);
396396
});
397397

398+
it('should register additional rule with dot config (gh-1932)', function() {
399+
configuration.load({
400+
additionalRules: ['./success-rule.js'],
401+
configPath: path.resolve(__dirname + '/../../data/configs/additionalRules/gh-1932/.jscsrc')
402+
});
403+
expect(configuration.getRegisteredRules().length).to.equal(1);
404+
expect(configuration.getRegisteredRules()[0].getOptionName()).to.equal('successRule');
405+
});
406+
407+
it('should register additional rule with dot config through glob pattern (gh-1932)', function() {
408+
configuration.load({
409+
additionalRules: ['./*.js'],
410+
configPath: path.resolve(__dirname + '/../../data/configs/additionalRules/gh-1932/.jscsrc')
411+
});
412+
expect(configuration.getRegisteredRules().length).to.equal(1);
413+
expect(configuration.getRegisteredRules()[0].getOptionName()).to.equal('successRule');
414+
});
415+
398416
it('should accept `additionalRules` without "configPath" option', function() {
399417
configuration.load({
400418
additionalRules: ['./test/data/rules/*.js']

0 commit comments

Comments
 (0)