Skip to content

Commit a920463

Browse files
committed
[Fix] boolean-prop-naming: improve error message
1 parent 48291e8 commit a920463

File tree

3 files changed

+72
-17
lines changed

3 files changed

+72
-17
lines changed

CHANGELOG.md

+3
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ This change log adheres to standards from [Keep a CHANGELOG](https://keepachange
1111
* [`boolean-prop-naming`]: literalType error fix ([#3704][] @developer-bandi)
1212
* [`boolean-prop-naming`]: allow TSIntersectionType ([#3705][] @developer-bandi)
1313

14+
### Changed
15+
* [`boolean-prop-naming`]: improve error message (@ljharb)
16+
1417
[#3705]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3705
1518
[#3704]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3704
1619
[#3701]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3701

lib/rules/boolean-prop-naming.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ const report = require('../util/report');
1919
// ------------------------------------------------------------------------------
2020

2121
const messages = {
22-
patternMismatch: 'Prop name ({{propName}}) doesn\'t match rule ({{pattern}})',
22+
patternMismatch: 'Prop name `{{propName}}` doesnt match rule `{{pattern}}`',
2323
};
2424

2525
module.exports = {

tests/lib/rules/boolean-prop-naming.js

+68-16
Original file line numberDiff line numberDiff line change
@@ -1106,12 +1106,16 @@ ruleTester.run('boolean-prop-naming', rule, {
11061106
enabled: boolean
11071107
}
11081108
const HelloNew = (props: TestConstType) => { return <div /> };
1109-
`,
1109+
`,
11101110
options: [{ rule: '^is[A-Z]([A-Za-z0-9]?)+' }],
11111111
features: ['ts', 'no-ts-old'],
11121112
errors: [
11131113
{
1114-
message: 'Prop name (enabled) doesn\'t match rule (^is[A-Z]([A-Za-z0-9]?)+)',
1114+
messageId: 'patternMismatch',
1115+
data: {
1116+
propName: 'enabled',
1117+
pattern: '^is[A-Z]([A-Za-z0-9]?)+',
1118+
},
11151119
},
11161120
],
11171121
},
@@ -1121,12 +1125,16 @@ ruleTester.run('boolean-prop-naming', rule, {
11211125
enabled: boolean
11221126
}
11231127
const HelloNew = (props: TestFNType) => { return <div /> };
1124-
`,
1128+
`,
11251129
options: [{ rule: '^is[A-Z]([A-Za-z0-9]?)+' }],
11261130
features: ['ts', 'no-ts-old'],
11271131
errors: [
11281132
{
1129-
message: 'Prop name (enabled) doesn\'t match rule (^is[A-Z]([A-Za-z0-9]?)+)',
1133+
messageId: 'patternMismatch',
1134+
data: {
1135+
propName: 'enabled',
1136+
pattern: '^is[A-Z]([A-Za-z0-9]?)+',
1137+
},
11301138
},
11311139
],
11321140
},
@@ -1142,7 +1150,11 @@ ruleTester.run('boolean-prop-naming', rule, {
11421150
features: ['types', 'no-ts-old'],
11431151
errors: [
11441152
{
1145-
message: 'Prop name (enabled) doesn\'t match rule (^is[A-Z]([A-Za-z0-9]?)+)',
1153+
messageId: 'patternMismatch',
1154+
data: {
1155+
propName: 'enabled',
1156+
pattern: '^is[A-Z]([A-Za-z0-9]?)+',
1157+
},
11461158
},
11471159
],
11481160
},
@@ -1160,7 +1172,11 @@ ruleTester.run('boolean-prop-naming', rule, {
11601172
features: ['types', 'no-ts-old'],
11611173
errors: [
11621174
{
1163-
message: 'Prop name (enabled) doesn\'t match rule (^(is|has)[A-Z]([A-Za-z0-9]?)+)',
1175+
messageId: 'patternMismatch',
1176+
data: {
1177+
propName: 'enabled',
1178+
pattern: '^(is|has)[A-Z]([A-Za-z0-9]?)+',
1179+
},
11641180
},
11651181
],
11661182
},
@@ -1176,7 +1192,11 @@ ruleTester.run('boolean-prop-naming', rule, {
11761192
features: ['types', 'no-ts-old'],
11771193
errors: [
11781194
{
1179-
message: 'Prop name (enabled) doesn\'t match rule (^is[A-Z]([A-Za-z0-9]?)+)',
1195+
messageId: 'patternMismatch',
1196+
data: {
1197+
propName: 'enabled',
1198+
pattern: '^is[A-Z]([A-Za-z0-9]?)+',
1199+
},
11801200
},
11811201
],
11821202
},
@@ -1194,7 +1214,11 @@ ruleTester.run('boolean-prop-naming', rule, {
11941214
features: ['types', 'no-ts-old'],
11951215
errors: [
11961216
{
1197-
message: 'Prop name (enabled) doesn\'t match rule (^(is|has)[A-Z]([A-Za-z0-9]?)+)',
1217+
messageId: 'patternMismatch',
1218+
data: {
1219+
propName: 'enabled',
1220+
pattern: '^(is|has)[A-Z]([A-Za-z0-9]?)+',
1221+
},
11981222
},
11991223
],
12001224
},
@@ -1212,7 +1236,11 @@ ruleTester.run('boolean-prop-naming', rule, {
12121236
features: ['types', 'no-ts-old'],
12131237
errors: [
12141238
{
1215-
message: 'Prop name (enabled) doesn\'t match rule (^(is|has)[A-Z]([A-Za-z0-9]?)+)',
1239+
messageId: 'patternMismatch',
1240+
data: {
1241+
propName: 'enabled',
1242+
pattern: '^(is|has)[A-Z]([A-Za-z0-9]?)+',
1243+
},
12161244
},
12171245
],
12181246
},
@@ -1232,10 +1260,18 @@ ruleTester.run('boolean-prop-naming', rule, {
12321260
features: ['types', 'no-ts-old'],
12331261
errors: [
12341262
{
1235-
message: 'Prop name (enabled) doesn\'t match rule (^(is|has)[A-Z]([A-Za-z0-9]?)+)',
1263+
messageId: 'patternMismatch',
1264+
data: {
1265+
propName: 'enabled',
1266+
pattern: '^(is|has)[A-Z]([A-Za-z0-9]?)+',
1267+
},
12361268
},
12371269
{
1238-
message: 'Prop name (lol) doesn\'t match rule (^(is|has)[A-Z]([A-Za-z0-9]?)+)',
1270+
messageId: 'patternMismatch',
1271+
data: {
1272+
propName: 'lol',
1273+
pattern: '^(is|has)[A-Z]([A-Za-z0-9]?)+',
1274+
},
12391275
},
12401276
],
12411277
},
@@ -1250,7 +1286,11 @@ ruleTester.run('boolean-prop-naming', rule, {
12501286
features: ['ts', 'no-babel'],
12511287
errors: [
12521288
{
1253-
message: 'Prop name (enabled) doesn\'t match rule (^is[A-Z]([A-Za-z0-9]?)+)',
1289+
messageId: 'patternMismatch',
1290+
data: {
1291+
propName: 'enabled',
1292+
pattern: '^is[A-Z]([A-Za-z0-9]?)+',
1293+
},
12541294
},
12551295
],
12561296
},
@@ -1260,7 +1300,11 @@ ruleTester.run('boolean-prop-naming', rule, {
12601300
features: ['ts', 'no-babel'],
12611301
errors: [
12621302
{
1263-
message: 'Prop name (enabled) doesn\'t match rule (^(is|has)[A-Z]([A-Za-z0-9]?)+)',
1303+
messageId: 'patternMismatch',
1304+
data: {
1305+
propName: 'enabled',
1306+
pattern: '^(is|has)[A-Z]([A-Za-z0-9]?)+',
1307+
},
12641308
},
12651309
],
12661310
},
@@ -1272,17 +1316,25 @@ ruleTester.run('boolean-prop-naming', rule, {
12721316
type BaseProps = {
12731317
semi: boolean
12741318
}
1275-
1319+
12761320
const Hello = (props: Props & BaseProps) => <div />;
12771321
`,
12781322
options: [{ rule: '^(is|has)[A-Z]([A-Za-z0-9]?)+' }],
12791323
features: ['ts', 'no-babel', 'no-ts-old'],
12801324
errors: [
12811325
{
1282-
message: 'Prop name (enabled) doesn\'t match rule (^(is|has)[A-Z]([A-Za-z0-9]?)+)',
1326+
messageId: 'patternMismatch',
1327+
data: {
1328+
propName: 'enabled',
1329+
pattern: '^(is|has)[A-Z]([A-Za-z0-9]?)+',
1330+
},
12831331
},
12841332
{
1285-
message: 'Prop name (semi) doesn\'t match rule (^(is|has)[A-Z]([A-Za-z0-9]?)+)',
1333+
messageId: 'patternMismatch',
1334+
data: {
1335+
propName: 'semi',
1336+
pattern: '^(is|has)[A-Z]([A-Za-z0-9]?)+',
1337+
},
12861338
},
12871339
],
12881340
},

0 commit comments

Comments
 (0)