Skip to content

Commit

Permalink
Add deprecated metadata to deprecated rules
Browse files Browse the repository at this point in the history
  • Loading branch information
randycoulman authored and yannickcr committed Nov 1, 2016
1 parent 16a3b22 commit 6620a0a
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 25 deletions.
57 changes: 32 additions & 25 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,6 @@
'use strict';

var deprecatedRules = {
'no-comment-textnodes': require('./lib/rules/no-comment-textnodes'),
'require-extension': require('./lib/rules/require-extension'),
'wrap-multilines': require('./lib/rules/wrap-multilines')
};

var rules = {
var allRules = {
'jsx-uses-react': require('./lib/rules/jsx-uses-react'),
'no-multi-comp': require('./lib/rules/no-multi-comp'),
'prop-types': require('./lib/rules/prop-types'),
Expand Down Expand Up @@ -58,32 +52,45 @@ var rules = {
'no-danger-with-children': require('./lib/rules/no-danger-with-children'),
'style-prop-object': require('./lib/rules/style-prop-object'),
'no-unused-prop-types': require('./lib/rules/no-unused-prop-types'),
'no-children-prop': require('./lib/rules/no-children-prop')
'no-children-prop': require('./lib/rules/no-children-prop'),
'no-comment-textnodes': require('./lib/rules/no-comment-textnodes'),
'require-extension': require('./lib/rules/require-extension'),
'wrap-multilines': require('./lib/rules/wrap-multilines')
};

var ruleNames = Object.keys(rules);
var allRules = {};
for (var i = 0; i < ruleNames.length; i++) {
allRules['react/' + ruleNames[i]] = 2;
}

var exportedRules = {};
for (var key in rules) {
if (!rules.hasOwnProperty(key)) {
continue;
function filterRules(rules, predicate) {
var result = {};
for (var key in rules) {
if (rules.hasOwnProperty(key) && predicate(rules[key])) {
result[key] = rules[key];
}
}
exportedRules[key] = rules[key];
return result;
}
for (var deprecatedKey in deprecatedRules) {
if (!deprecatedRules.hasOwnProperty(deprecatedKey)) {
continue;

function configureAsError(rules) {
var result = {};
for (var key in rules) {
if (!rules.hasOwnProperty(key)) {
continue;
}
result['react/' + key] = 2;
}
exportedRules[deprecatedKey] = deprecatedRules[deprecatedKey];
return result;
}

var activeRules = filterRules(allRules, function(rule) {
return !rule.meta.deprecated;
});
var activeRulesConfig = configureAsError(activeRules);

var deprecatedRules = filterRules(allRules, function(rule) {
return rule.meta.deprecated;
});

module.exports = {
deprecatedRules: deprecatedRules,
rules: exportedRules,
rules: allRules,
configs: {
recommended: {
plugin: [
Expand Down Expand Up @@ -120,7 +127,7 @@ module.exports = {
jsx: true
}
},
rules: allRules
rules: activeRulesConfig
}
}
};
1 change: 1 addition & 0 deletions lib/rules/no-comment-textnodes.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ var isWarnedForDeprecation = false;

module.exports = {
meta: {
deprecated: true,
docs: {
description: 'Comments inside children section of tag should be placed inside braces',
category: 'Possible Errors',
Expand Down
1 change: 1 addition & 0 deletions lib/rules/require-extension.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ var PKG_REGEX = /^[^\.]((?!\/).)*$/;

module.exports = {
meta: {
deprecated: true,
docs: {
description: 'Restrict file extensions that may be required',
category: 'Stylistic Issues',
Expand Down
1 change: 1 addition & 0 deletions lib/rules/wrap-multilines.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ var isWarnedForDeprecation = false;

module.exports = {
meta: {
deprecated: true,
docs: {
description: 'Prevent missing parentheses around multilines JSX',
category: 'Stylistic Issues',
Expand Down
14 changes: 14 additions & 0 deletions tests/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,20 @@ describe('all rule files should be exported by the plugin', function() {
});
});

describe('deprecated rules', function() {
it('marks all deprecated rules as deprecated', function() {
ruleFiles.forEach(function(ruleName) {
var inDeprecatedRules = Boolean(plugin.deprecatedRules[ruleName]);
var isDeprecated = plugin.rules[ruleName].meta.deprecated;
if (inDeprecatedRules) {
assert(isDeprecated, ruleName + ' metadata should mark it as deprecated');
} else {
assert(!isDeprecated, ruleName + ' metadata should not mark it as deprecated');
}
});
});
});

describe('configurations', function() {
it('should export a \'recommended\' configuration', function() {
assert(plugin.configs.recommended);
Expand Down

0 comments on commit 6620a0a

Please sign in to comment.