Skip to content

Commit

Permalink
fix: noIdenticalTitles efficiency & speed
Browse files Browse the repository at this point in the history
  • Loading branch information
codejedi365 committed Oct 23, 2021
1 parent dfe28cc commit 2e2b06a
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 16 deletions.
22 changes: 6 additions & 16 deletions lib/rules/no-identical-title.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,12 +69,14 @@ export default createRule({
create(context) {
let isInsideTest = false;
let hasRecordedTestName = false;
let currentTestNode: CallExpression | null = null;

const testTitles: { [key: string]: [CallExpressionArgument] } = {};

const resetFlags = () => {
hasRecordedTestName = false;
isInsideTest = false;
currentTestNode = null;
};

const addTestTitle = (testTitle: string, node: CallExpression) => {
Expand All @@ -93,6 +95,7 @@ export default createRule({
return;
}
isInsideTest = true;
currentTestNode = node;
addTestTitle(testTitle, node);
hasRecordedTestName = true;
};
Expand All @@ -117,19 +120,7 @@ export default createRule({
};

const unknownFnCallEXIT = (node: CallExpression) => {
if (!isInsideTest) return; // Short circuit

let fnName;
let objectName;
try {
[fnName, objectName] = determineCodeLocation(node);
} catch (e) {
// ABORT: Failed to evaluate rule effectively
// since I cannot derive values to determine location in the code
return;
}
if (objectName !== "test") return;
if (fnName === "test" || testFnAttributes.includes(fnName)) {
if (isInsideTest && node === currentTestNode) {
resetFlags();
}
};
Expand Down Expand Up @@ -166,9 +157,8 @@ export default createRule({
) => {
extractTestTitle(node);
},
[`${testFnCallExpression}[callee.name=test]:exit`]: () => {
resetFlags();
},
[`${testFnCallExpression}[callee.name=test]:exit`]:
unknownFnCallEXIT,
[`${testFnCallExpression}[callee.type=CallExpression]`]:
unknownFnCallENTER,
[`${testFnCallExpression}[callee.type=CallExpression]:exit`]:
Expand Down
4 changes: 4 additions & 0 deletions tests/lib/rules/no-identical-title.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,10 @@ describe("ESLint Code Snippets", () => {
await t.click().expect(true).ok();
});
`,
// Futuristic TestCafe || unexpected test chain => ignore as valid
`test.futureModifier("test", async t => {
await t.expect(true).ok();
});`,
// ignore undeterminable code (don't throw an error, not this rule's focus)
`test(/^regex_name/, async t => {});`,
`test(null, async t => {})`,
Expand Down

0 comments on commit 2e2b06a

Please sign in to comment.