Skip to content

Commit bace62c

Browse files
committed
no-unescaped-entities: support shorthand fragments
1 parent 83eb307 commit bace62c

File tree

2 files changed

+63
-1
lines changed

2 files changed

+63
-1
lines changed

lib/rules/no-unescaped-entities.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
'use strict';
66

77
const docsUrl = require('../util/docsUrl');
8+
const jsxUtil = require('../util/jsx');
89

910
// ------------------------------------------------------------------------------
1011
// Rule Definition
@@ -72,7 +73,7 @@ module.exports = {
7273

7374
return {
7475
'Literal, JSXText': function(node) {
75-
if (node.parent.type === 'JSXElement') {
76+
if (jsxUtil.isJSX(node.parent)) {
7677
reportInvalidEntity(node);
7778
}
7879
}

tests/lib/rules/no-unescaped-entities.js

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,35 @@ ruleTester.run('no-unescaped-entities', rule, {
7171
},
7272
});
7373
`
74+
},
75+
{
76+
code: `
77+
var Hello = createReactClass({
78+
render: function() {
79+
return <>Here is some text!</>;
80+
}
81+
});
82+
`,
83+
parser: 'babel-eslint'
84+
}, {
85+
code: `
86+
var Hello = createReactClass({
87+
render: function() {
88+
return <>I&rsquo;ve escaped some entities: &gt; &lt; &amp;</>;
89+
}
90+
});
91+
`,
92+
parser: 'babel-eslint'
93+
},
94+
{
95+
code: `
96+
var Hello = createReactClass({
97+
render: function() {
98+
return <>{">" + "<" + "&" + '"'}</>;
99+
},
100+
});
101+
`,
102+
parser: 'babel-eslint'
74103
}
75104
],
76105

@@ -84,6 +113,16 @@ ruleTester.run('no-unescaped-entities', rule, {
84113
});
85114
`,
86115
errors: [{message: 'HTML entities must be escaped.'}]
116+
}, {
117+
code: `
118+
var Hello = createReactClass({
119+
render: function() {
120+
return <>></>;
121+
}
122+
});
123+
`,
124+
parser: 'babel-eslint',
125+
errors: [{message: 'HTML entities must be escaped.'}]
87126
}, {
88127
code: `
89128
var Hello = createReactClass({
@@ -95,6 +134,18 @@ ruleTester.run('no-unescaped-entities', rule, {
95134
});
96135
`,
97136
errors: [{message: 'HTML entities must be escaped.'}]
137+
}, {
138+
code: `
139+
var Hello = createReactClass({
140+
render: function() {
141+
return <>first line is ok
142+
so is second
143+
and here are some bad entities: ></>
144+
}
145+
});
146+
`,
147+
parser: 'babel-eslint',
148+
errors: [{message: 'HTML entities must be escaped.'}]
98149
}, {
99150
code: `
100151
var Hello = createReactClass({
@@ -126,6 +177,16 @@ ruleTester.run('no-unescaped-entities', rule, {
126177
});
127178
`,
128179
errors: [{message: 'HTML entities must be escaped.'}]
180+
}, {
181+
code: `
182+
var Hello = createReactClass({
183+
render: function() {
184+
return <>{"Unbalanced braces"}}</>;
185+
}
186+
});
187+
`,
188+
parser: 'babel-eslint',
189+
errors: [{message: 'HTML entities must be escaped.'}]
129190
}
130191
]
131192
});

0 commit comments

Comments
 (0)