Skip to content

Commit cf3d0cc

Browse files
committed
Fix jsx-quotes rule deprecation message (fixes #220)
1 parent edd89f6 commit cf3d0cc

File tree

2 files changed

+17
-27
lines changed

2 files changed

+17
-27
lines changed

lib/rules/jsx-quotes.js

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ var QUOTE_SETTINGS = {
2323

2424
var AVOID_ESCAPE = 'avoid-escape';
2525

26+
var isWarnedForDeprecation = false;
27+
2628
// ------------------------------------------------------------------------------
2729
// Rule Definition
2830
// ------------------------------------------------------------------------------
@@ -42,8 +44,14 @@ module.exports = function(context) {
4244

4345
return {
4446

45-
Program: function(node) {
46-
context.report(node, 'The react/jsx-quotes rule is deprecated. Please use the jsx-quotes rule instead.');
47+
Program: function() {
48+
if (isWarnedForDeprecation) {
49+
return;
50+
}
51+
/* eslint-disable no-console */
52+
console.log('The react/jsx-quotes rule is deprecated. Please use the jsx-quotes rule instead.');
53+
/* eslint-enable no-console */
54+
isWarnedForDeprecation = true;
4755
},
4856

4957
Literal: function(node) {

tests/lib/rules/jsx-quotes.js

Lines changed: 7 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -12,41 +12,23 @@
1212
var rule = require('../../../lib/rules/jsx-quotes');
1313
var RuleTester = require('eslint').RuleTester;
1414

15-
var DEPRECATION_WARNING = 'The react/jsx-quotes rule is deprecated. Please use the jsx-quotes rule instead.';
16-
var SINGLEQUOTE_WARNING = 'JSX attributes must use singlequote.';
17-
var DOUBLEQUOTE_WARNING = 'JSX attributes must use doublequote.';
18-
1915
// -----------------------------------------------------------------------------
2016
// Tests
2117
// -----------------------------------------------------------------------------
2218

2319
var ruleTester = new RuleTester();
2420
ruleTester.run('jsx-quotes', rule, {
2521
valid: [
26-
// None, should always trigger at least the deprecation warning
22+
{code: '<App foo=\'bar\' />;', options: ['single'], ecmaFeatures: {jsx: true}},
23+
{code: '<App foo="bar" />;', options: ['double'], ecmaFeatures: {jsx: true}},
24+
{code: '<App foo="ba\'r" />;', options: ['single', 'avoid-escape'], ecmaFeatures: {jsx: true}},
25+
{code: '<App foo=\'ba"r\' />;', options: ['double', 'avoid-escape'], ecmaFeatures: {jsx: true}},
26+
{code: '<App>foo</App>;', options: ['single'], ecmaFeatures: {jsx: true}}
2727
],
2828
invalid: [
29-
{code: '<App />;',
30-
errors: [{message: DEPRECATION_WARNING}], ecmaFeatures: {jsx: true}},
31-
{code: '<App foo=\'bar\' />;',
32-
errors: [{message: DEPRECATION_WARNING}], options: ['single'], ecmaFeatures: {jsx: true}},
33-
{code: '<App foo="bar" />;',
34-
errors: [{message: DEPRECATION_WARNING}], options: ['double'], ecmaFeatures: {jsx: true}},
35-
{code: '<App foo="ba\'r" />;',
36-
errors: [{message: DEPRECATION_WARNING}], options: ['single', 'avoid-escape'], ecmaFeatures: {jsx: true}},
37-
{code: '<App foo=\'ba"r\' />;',
38-
errors: [{message: DEPRECATION_WARNING}], options: ['double', 'avoid-escape'], ecmaFeatures: {jsx: true}},
39-
{code: '<App>foo</App>;',
40-
errors: [{message: DEPRECATION_WARNING}], options: ['single'], ecmaFeatures: {jsx: true}},
4129
{code: '<App foo="bar" />;',
42-
errors: [
43-
{message: DEPRECATION_WARNING},
44-
{message: SINGLEQUOTE_WARNING}
45-
], options: ['single'], ecmaFeatures: {jsx: true}},
30+
errors: [{message: 'JSX attributes must use singlequote.'}], options: ['single'], ecmaFeatures: {jsx: true}},
4631
{code: '<App foo=\'bar\' />;',
47-
errors: [
48-
{message: DEPRECATION_WARNING},
49-
{message: DOUBLEQUOTE_WARNING}
50-
], options: ['double'], ecmaFeatures: {jsx: true}}
32+
errors: [{message: 'JSX attributes must use doublequote.'}], options: ['double'], ecmaFeatures: {jsx: true}}
5133
]
5234
});

0 commit comments

Comments
 (0)