From e415132d48328dbbb6074396d8b25b180cce1ac8 Mon Sep 17 00:00:00 2001 From: Jose Gonzalez Date: Fri, 5 Oct 2018 12:38:29 -0400 Subject: [PATCH] [New] `jsx-no-literals`: print node value in warning message --- lib/rules/jsx-no-literals.js | 3 +- tests/lib/rules/jsx-no-literals.js | 46 +++++++++++++++--------------- 2 files changed, 25 insertions(+), 24 deletions(-) diff --git a/lib/rules/jsx-no-literals.js b/lib/rules/jsx-no-literals.js index d421e4748b..d6bff3ad00 100644 --- a/lib/rules/jsx-no-literals.js +++ b/lib/rules/jsx-no-literals.js @@ -33,6 +33,7 @@ module.exports = { create: function(context) { const isNoStrings = context.options[0] ? context.options[0].noStrings : false; + const sourceCode = context.getSourceCode(); const message = isNoStrings ? 'Strings not allowed in JSX files' : @@ -41,7 +42,7 @@ module.exports = { function reportLiteralNode(node) { context.report({ node: node, - message: message + message: `${message}: “${sourceCode.getText(node).trim()}”` }); } diff --git a/tests/lib/rules/jsx-no-literals.js b/tests/lib/rules/jsx-no-literals.js index 7edac90594..3c1ce0a0cc 100644 --- a/tests/lib/rules/jsx-no-literals.js +++ b/tests/lib/rules/jsx-no-literals.js @@ -201,7 +201,7 @@ ruleTester.run('jsx-no-literals', rule, { } `, parser: 'babel-eslint', - errors: [{message: 'Missing JSX expression container around literal string'}] + errors: [{message: 'Missing JSX expression container around literal string:test'}] }, { code: ` class Comp1 extends Component { @@ -211,7 +211,7 @@ ruleTester.run('jsx-no-literals', rule, { } `, parser: 'babel-eslint', - errors: [{message: 'Missing JSX expression container around literal string'}] + errors: [{message: 'Missing JSX expression container around literal string:test'}] }, { code: ` class Comp1 extends Component { @@ -222,7 +222,7 @@ ruleTester.run('jsx-no-literals', rule, { } `, parser: 'babel-eslint', - errors: [{message: 'Missing JSX expression container around literal string'}] + errors: [{message: 'Missing JSX expression container around literal string:test'}] }, { code: ` class Comp1 extends Component { @@ -233,7 +233,7 @@ ruleTester.run('jsx-no-literals', rule, { } `, parser: 'babel-eslint', - errors: [{message: 'Missing JSX expression container around literal string'}] + errors: [{message: 'Missing JSX expression container around literal string:test'}] }, { code: ` var Hello = createReactClass({ @@ -244,7 +244,7 @@ ruleTester.run('jsx-no-literals', rule, { }); `, parser: 'babel-eslint', - errors: [{message: 'Missing JSX expression container around literal string'}] + errors: [{message: 'Missing JSX expression container around literal string:hello'}] }, { code: ` class Comp1 extends Component { @@ -258,7 +258,7 @@ ruleTester.run('jsx-no-literals', rule, { } `, parser: 'babel-eslint', - errors: [{message: 'Missing JSX expression container around literal string'}] + errors: [{message: 'Missing JSX expression container around literal string:asdjfl'}] }, { code: ` class Comp1 extends Component { @@ -274,7 +274,7 @@ ruleTester.run('jsx-no-literals', rule, { } `, parser: 'babel-eslint', - errors: [{message: 'Missing JSX expression container around literal string'}] + errors: [{message: 'Missing JSX expression container around literal string:asdjfl\n test\n foo'}] }, { code: ` class Comp1 extends Component { @@ -290,7 +290,7 @@ ruleTester.run('jsx-no-literals', rule, { } `, parser: 'babel-eslint', - errors: [{message: 'Missing JSX expression container around literal string'}] + errors: [{message: 'Missing JSX expression container around literal string:test'}] }, { code: ` @@ -299,7 +299,7 @@ ruleTester.run('jsx-no-literals', rule, { `, parser: 'babel-eslint', options: [{noStrings: true}], - errors: [{message: 'Strings not allowed in JSX files'}] + errors: [{message: 'Strings not allowed in JSX files:\'Test\''}] }, { code: ` @@ -307,7 +307,7 @@ ruleTester.run('jsx-no-literals', rule, { `, options: [{noStrings: true}], - errors: [{message: 'Strings not allowed in JSX files'}] + errors: [{message: 'Strings not allowed in JSX files:\'Test\''}] }, { code: ` @@ -315,7 +315,7 @@ ruleTester.run('jsx-no-literals', rule, { `, options: [{noStrings: true}], - errors: [{message: 'Strings not allowed in JSX files'}] + errors: [{message: 'Strings not allowed in JSX files:\'Test\''}] }, { code: ` @@ -324,7 +324,7 @@ ruleTester.run('jsx-no-literals', rule, { `, parser: 'babel-eslint', options: [{noStrings: true}], - errors: [{message: 'Strings not allowed in JSX files'}] + errors: [{message: 'Strings not allowed in JSX files:Test'}] }, { code: ` @@ -332,7 +332,7 @@ ruleTester.run('jsx-no-literals', rule, { `, options: [{noStrings: true}], - errors: [{message: 'Strings not allowed in JSX files'}] + errors: [{message: 'Strings not allowed in JSX files:Test'}] }, { code: ` @@ -340,39 +340,39 @@ ruleTester.run('jsx-no-literals', rule, { `, options: [{noStrings: true}], - errors: [{message: 'Strings not allowed in JSX files'}] + errors: [{message: 'Strings not allowed in JSX files:`Test`'}] }, { code: '', options: [{noStrings: true}], - errors: [{message: 'Strings not allowed in JSX files'}] + errors: [{message: 'Strings not allowed in JSX files:`Test`'}] }, { code: '', options: [{noStrings: true}], - errors: [{message: 'Strings not allowed in JSX files'}] + errors: [{message: 'Strings not allowed in JSX files:`${baz}`'}] }, { code: '', options: [{noStrings: true}], - errors: [{message: 'Strings not allowed in JSX files'}] + errors: [{message: 'Strings not allowed in JSX files:`Test ${baz}`'}] }, { code: '', options: [{noStrings: true}], errors: [ - {message: 'Strings not allowed in JSX files'}, - {message: 'Strings not allowed in JSX files'} + {message: 'Strings not allowed in JSX files:`foo`'}, + {message: 'Strings not allowed in JSX files:\'bar\''} ] }, { code: '', options: [{noStrings: true}], errors: [ - {message: 'Strings not allowed in JSX files'}, - {message: 'Strings not allowed in JSX files'} + {message: 'Strings not allowed in JSX files:`foo`'}, + {message: 'Strings not allowed in JSX files:`bar`'} ] }, { code: '', options: [{noStrings: true}], errors: [ - {message: 'Strings not allowed in JSX files'}, - {message: 'Strings not allowed in JSX files'} + {message: 'Strings not allowed in JSX files:\'foo\''}, + {message: 'Strings not allowed in JSX files:`bar`'} ] } ]