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

Lines changed: 3 additions & 0 deletions
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 68 additions & 16 deletions
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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy