Skip to content

Commit c9740c2

Browse files
G-RathSimenB
authored andcommitted
chore: migrate no-disabled-tests to TypeScript (#315)
1 parent 7941365 commit c9740c2

File tree

3 files changed

+17
-44
lines changed

3 files changed

+17
-44
lines changed

src/rules/__tests__/no-disabled-tests.test.js renamed to src/rules/__tests__/no-disabled-tests.test.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { RuleTester } from 'eslint';
1+
import { TSESLint } from '@typescript-eslint/experimental-utils';
22
import rule from '../no-disabled-tests';
33

4-
const ruleTester = new RuleTester({
4+
const ruleTester = new TSESLint.RuleTester({
55
parserOptions: {
66
sourceType: 'module',
77
},
@@ -15,6 +15,7 @@ ruleTester.run('no-disabled-tests', rule, {
1515
'it.only("foo", function () {})',
1616
'test("foo", function () {})',
1717
'test.only("foo", function () {})',
18+
'describe[`${"skip"}`]("foo", function () {})',
1819
'var appliedSkip = describe.skip; appliedSkip.apply(describe)',
1920
'var calledSkip = it.skip; calledSkip.call(it)',
2021
'({ f: function () {} }).f()',
@@ -57,6 +58,10 @@ ruleTester.run('no-disabled-tests', rule, {
5758
code: 'describe.skip("foo", function () {})',
5859
errors: [{ messageId: 'skippedTestSuite', column: 1, line: 1 }],
5960
},
61+
{
62+
code: 'describe[`skip`]("foo", function () {})',
63+
errors: [{ messageId: 'skippedTestSuite', column: 1, line: 1 }],
64+
},
6065
{
6166
code: 'describe["skip"]("foo", function () {})',
6267
errors: [{ messageId: 'skippedTestSuite', column: 1, line: 1 }],

src/rules/no-disabled-tests.js renamed to src/rules/no-disabled-tests.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
1-
import { getDocsUrl, getNodeName, scopeHasLocalReference } from './util';
1+
import { createRule } from './tsUtils';
2+
import { getNodeName, scopeHasLocalReference } from './tsUtils';
23

3-
export default {
4+
export default createRule({
5+
name: __filename,
46
meta: {
57
docs: {
6-
url: getDocsUrl(__filename),
8+
category: 'Best Practices',
9+
description: 'Disallow disabled tests',
10+
recommended: false,
711
},
812
messages: {
913
missingFunction: 'Test is missing function argument',
@@ -16,7 +20,9 @@ export default {
1620
disabledTest: 'Disabled test',
1721
},
1822
schema: [],
23+
type: 'suggestion',
1924
},
25+
defaultOptions: [],
2026
create(context) {
2127
let suiteDepth = 0;
2228
let testDepth = 0;
@@ -72,4 +78,4 @@ export default {
7278
},
7379
};
7480
},
75-
};
81+
});

src/rules/util.js

Lines changed: 0 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -184,44 +184,6 @@ export const getDocsUrl = filename => {
184184
return `${REPO_URL}/blob/v${version}/docs/rules/${ruleName}.md`;
185185
};
186186

187-
const collectReferences = scope => {
188-
const locals = new Set();
189-
const unresolved = new Set();
190-
191-
let currentScope = scope;
192-
193-
while (currentScope !== null) {
194-
for (const ref of currentScope.variables) {
195-
const isReferenceDefined = ref.defs.some(def => {
196-
return def.type !== 'ImplicitGlobalVariable';
197-
});
198-
199-
if (isReferenceDefined) {
200-
locals.add(ref.name);
201-
}
202-
}
203-
204-
for (const ref of currentScope.through) {
205-
unresolved.add(ref.identifier.name);
206-
}
207-
208-
currentScope = currentScope.upper;
209-
}
210-
211-
return { locals, unresolved };
212-
};
213-
214-
export const scopeHasLocalReference = (scope, referenceName) => {
215-
const references = collectReferences(scope);
216-
return (
217-
// referenceName was found as a local variable or function declaration.
218-
references.locals.has(referenceName) ||
219-
// referenceName was not found as an unresolved reference,
220-
// meaning it is likely not an implicit global reference.
221-
!references.unresolved.has(referenceName)
222-
);
223-
};
224-
225187
export function composeFixers(node) {
226188
return (...fixers) => {
227189
return fixerApi => {

0 commit comments

Comments
 (0)