Skip to content

Commit

Permalink
Update: no-identical-names message references line number (fixes #62)
Browse files Browse the repository at this point in the history
  • Loading branch information
platinumazure committed May 8, 2017
1 parent f503cd0 commit f27a36c
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 13 deletions.
30 changes: 22 additions & 8 deletions lib/rules/no-identical-names.js
Expand Up @@ -25,7 +25,7 @@ module.exports = {

create: function (context) {
const moduleNames = [];
let testNames = [];
const testNames = [];

//----------------------------------------------------------------------
// Helper functions
Expand All @@ -37,25 +37,39 @@ module.exports = {

function handleTestNames(node, title) {
if (utils.isTest(node.callee)) {
if (testNames.indexOf(title) !== -1) {
const duplicateTestTitle = testNames.find(t => t.title === title);

if (duplicateTestTitle) {
context.report({
node: node.arguments[0],
message: "Test name is used multiple times in the same module."
message: "Test name is used on line {{ line }} in the same module.",
data: duplicateTestTitle
});
}
testNames.push(title);

testNames.push({
title,
line: node.arguments[0].loc.start.line
});
}
}

function handleModuleNames(node, title) {
if (utils.isModule(node.callee)) {
if (moduleNames.indexOf(title) !== -1) {
const duplicateModuleTitle = moduleNames.find(t => t.title === title);

if (duplicateModuleTitle) {
context.report({
node: node.arguments[0],
message: "Module name is used multiple times."
message: "Module name is used on line {{ line }}.",
data: duplicateModuleTitle
});
}
moduleNames.push(title);

moduleNames.push({
title,
line: node.arguments[0].loc.start.line
});
}
}

Expand All @@ -66,7 +80,7 @@ module.exports = {
return {
"CallExpression": function (node) {
if (utils.isModule(node.callee)) {
testNames = [];
testNames.length = 0;
}

if (!isFirstArgLiteral(node)) {
Expand Down
10 changes: 5 additions & 5 deletions tests/lib/rules/no-identical-names.js
Expand Up @@ -78,7 +78,7 @@ ruleTester.run("no-identical-title", rule, {
"test(\"it1\", function() {});"
].join("\n"),
errors: [{
message: "Test name is used multiple times in the same module.",
message: "Test name is used on line 2 in the same module.",
column: 6,
line: 3
}]
Expand All @@ -89,7 +89,7 @@ ruleTester.run("no-identical-title", rule, {
"test(\"it1\", function() {});"
].join("\n"),
errors: [{
message: "Test name is used multiple times in the same module.",
message: "Test name is used on line 1 in the same module.",
column: 6,
line: 2
}]
Expand All @@ -102,7 +102,7 @@ ruleTester.run("no-identical-title", rule, {
"});"
].join("\n"),
errors: [{
message: "Test name is used multiple times in the same module.",
message: "Test name is used on line 2 in the same module.",
column: 8,
line: 3
}]
Expand All @@ -113,7 +113,7 @@ ruleTester.run("no-identical-title", rule, {
"module(\"module1\");"
].join("\n"),
errors: [{
message: "Module name is used multiple times.",
message: "Module name is used on line 1.",
column: 8,
line: 2
}]
Expand All @@ -125,7 +125,7 @@ ruleTester.run("no-identical-title", rule, {
"module(\"module1\");"
].join("\n"),
errors: [{
message: "Module name is used multiple times.",
message: "Module name is used on line 1.",
column: 8,
line: 3
}]
Expand Down

0 comments on commit f27a36c

Please sign in to comment.