|
9 | 9 | // Requirements
|
10 | 10 | //------------------------------------------------------------------------------
|
11 | 11 |
|
| 12 | +const semver = require('semver'); |
| 13 | +const eslintPkg = require('eslint/package.json'); |
12 | 14 | const RuleTester = require('eslint').RuleTester;
|
13 | 15 | const rule = require('../../../lib/rules/jsx-no-leaked-render');
|
14 | 16 |
|
@@ -193,9 +195,9 @@ ruleTester.run('jsx-no-leaked-render', rule, {
|
193 | 195 | `,
|
194 | 196 | options: [{ validStrategies: ['coerce'] }],
|
195 | 197 | },
|
196 |
| - ]), |
| 198 | + ]) || [], |
197 | 199 |
|
198 |
| - invalid: parsers.all([ |
| 200 | + invalid: parsers.all([].concat( |
199 | 201 | // Common invalid cases with default options
|
200 | 202 | {
|
201 | 203 | code: `
|
@@ -847,5 +849,41 @@ ruleTester.run('jsx-no-leaked-render', rule, {
|
847 | 849 | column: 24,
|
848 | 850 | }],
|
849 | 851 | },
|
850 |
| - ]), |
| 852 | + { |
| 853 | + code: ` |
| 854 | + const MyComponent = () => { |
| 855 | + return <Something checked={isIndeterminate ? false : isChecked} /> |
| 856 | + } |
| 857 | + `, |
| 858 | + output: semver.satisfies(eslintPkg.version, '> 4') ? ` |
| 859 | + const MyComponent = () => { |
| 860 | + return <Something checked={!isIndeterminate && isChecked} /> |
| 861 | + } |
| 862 | + ` : null, |
| 863 | + options: [{ validStrategies: ['coerce'] }], |
| 864 | + errors: [{ |
| 865 | + message: 'Potential leaked value that might cause unintentionally rendered values or rendering crashes', |
| 866 | + line: 3, |
| 867 | + column: 38, |
| 868 | + }], |
| 869 | + }, |
| 870 | + { |
| 871 | + code: ` |
| 872 | + const MyComponent = () => { |
| 873 | + return <Something checked={cond && isIndeterminate ? false : isChecked} /> |
| 874 | + } |
| 875 | + `, |
| 876 | + output: semver.satisfies(eslintPkg.version, '> 4') ? ` |
| 877 | + const MyComponent = () => { |
| 878 | + return <Something checked={!!cond && !!isIndeterminate ? false : isChecked} /> |
| 879 | + } |
| 880 | + ` : null, |
| 881 | + options: [{ validStrategies: ['coerce'] }], |
| 882 | + errors: [{ |
| 883 | + message: 'Potential leaked value that might cause unintentionally rendered values or rendering crashes', |
| 884 | + line: 3, |
| 885 | + column: 38, |
| 886 | + }], |
| 887 | + } |
| 888 | + )), |
851 | 889 | });
|
0 commit comments