Skip to content

Commit

Permalink
--wip-- [skip ci]
Browse files Browse the repository at this point in the history
  • Loading branch information
SimenB committed Aug 31, 2023
1 parent 2198f4a commit e167c3c
Show file tree
Hide file tree
Showing 58 changed files with 152 additions and 171 deletions.
7 changes: 4 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@
]
},
"dependencies": {
"@typescript-eslint/utils": "^5.10.0"
"@typescript-eslint/utils": "6"
},
"devDependencies": {
"@babel/cli": "^7.4.4",
Expand All @@ -111,8 +111,9 @@
"@types/eslint": "^8.4.6",
"@types/jest": "^29.0.0",
"@types/node": "^14.18.26",
"@typescript-eslint/eslint-plugin": "^5.0.0",
"@typescript-eslint/parser": "^5.0.0",
"@typescript-eslint/eslint-plugin": "6",
"@typescript-eslint/parser": "6",
"@typescript-eslint/rule-tester": "^6.0.0",
"babel-jest": "^29.0.0",
"babel-plugin-replace-ts-export-assignment": "^0.0.2",
"dedent": "^1.5.0",
Expand Down
7 changes: 0 additions & 7 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,6 @@ type RuleModule = TSESLint.RuleModule<string, unknown[]> & {
meta: Required<Pick<TSESLint.RuleMetaData<string>, 'docs'>>;
};

// v5 of `@typescript-eslint/experimental-utils` removed this
declare module '@typescript-eslint/utils/dist/ts-eslint/Rule' {
export interface RuleMetaDataDocs {
category: 'Best Practices' | 'Possible Errors';
}
}

// copied from https://github.com/babel/babel/blob/d8da63c929f2d28c401571e2a43166678c555bc4/packages/babel-helpers/src/helpers.js#L602-L606
/* istanbul ignore next */
const interopRequireDefault = (obj: any): { default: any } =>
Expand Down
9 changes: 7 additions & 2 deletions src/rules/__tests__/unbound-method.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,12 @@ function getFixturesRootDir(): string {

const rootPath = getFixturesRootDir();

const ruleTester = new ESLintUtils.RuleTester({
const RuleTester =
ESLintUtils.RuleTester ??
// eslint-disable-next-line @typescript-eslint/no-require-imports
require('@typescript-eslint/rule-tester').RuleTester;

const ruleTester = new RuleTester({
parser: '@typescript-eslint/parser',
parserOptions: {
sourceType: 'module',
Expand Down Expand Up @@ -164,7 +169,7 @@ describe('error handling', () => {
});

describe('when @typescript-eslint/eslint-plugin is not available', () => {
const ruleTester = new ESLintUtils.RuleTester({
const ruleTester = new RuleTester({
parser: '@typescript-eslint/parser',
parserOptions: {
sourceType: 'module',
Expand Down
4 changes: 2 additions & 2 deletions src/rules/consistent-test-it.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,7 @@ export default createRule<
name: __filename,
meta: {
docs: {
category: 'Best Practices',
description: 'Enforce `test` and `it` usage conventions',
recommended: false,
},
fixable: 'code',
messages: {
Expand All @@ -51,9 +49,11 @@ export default createRule<
type: 'object',
properties: {
fn: {
type: 'string',
enum: [TestCaseName.it, TestCaseName.test],
},
withinDescribe: {
type: 'string',
enum: [TestCaseName.it, TestCaseName.test],
},
},
Expand Down
2 changes: 0 additions & 2 deletions src/rules/expect-expect.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,7 @@ export default createRule<
name: __filename,
meta: {
docs: {
category: 'Best Practices',
description: 'Enforce assertion to be made in a test body',
recommended: 'warn',
},
messages: {
noAssertions: 'Test has no assertions',
Expand Down
2 changes: 0 additions & 2 deletions src/rules/max-expects.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,7 @@ export default createRule({
name: __filename,
meta: {
docs: {
category: 'Best Practices',
description: 'Enforces a maximum number assertion calls in a test body',
recommended: false,
},
messages: {
exceededMaxAssertion:
Expand Down
2 changes: 0 additions & 2 deletions src/rules/max-nested-describe.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,7 @@ export default createRule({
name: __filename,
meta: {
docs: {
category: 'Best Practices',
description: 'Enforces a maximum depth to nested describe calls',
recommended: false,
},
messages: {
exceededMaxDepth:
Expand Down
2 changes: 0 additions & 2 deletions src/rules/no-alias-methods.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,7 @@ export default createRule({
name: __filename,
meta: {
docs: {
category: 'Best Practices',
description: 'Disallow alias methods',
recommended: 'error',
},
messages: {
replaceAlias: `Replace {{ alias }}() with its canonical name of {{ canonical }}()`,
Expand Down
2 changes: 0 additions & 2 deletions src/rules/no-commented-out-tests.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,7 @@ export default createRule({
name: __filename,
meta: {
docs: {
category: 'Best Practices',
description: 'Disallow commented out tests',
recommended: 'warn',
},
messages: {
commentedTests: 'Some tests seem to be commented',
Expand Down
2 changes: 0 additions & 2 deletions src/rules/no-conditional-expect.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,6 @@ export default createRule({
meta: {
docs: {
description: 'Disallow calling `expect` conditionally',
category: 'Best Practices',
recommended: 'error',
},
messages: {
conditionalExpect: 'Avoid calling `expect` conditionally`',
Expand Down
2 changes: 0 additions & 2 deletions src/rules/no-conditional-in-test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@ export default createRule({
meta: {
docs: {
description: 'Disallow conditional logic in tests',
category: 'Best Practices',
recommended: false,
},
messages: {
conditionalInTest: 'Avoid having conditionals in tests',
Expand Down
2 changes: 0 additions & 2 deletions src/rules/no-deprecated-functions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,7 @@ export default createRule({
name: __filename,
meta: {
docs: {
category: 'Best Practices',
description: 'Disallow use of deprecated functions',
recommended: 'error',
},
messages: {
deprecatedFunction:
Expand Down
2 changes: 0 additions & 2 deletions src/rules/no-disabled-tests.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,7 @@ export default createRule({
name: __filename,
meta: {
docs: {
category: 'Best Practices',
description: 'Disallow disabled tests',
recommended: 'warn',
},
messages: {
missingFunction: 'Test is missing function argument',
Expand Down
2 changes: 0 additions & 2 deletions src/rules/no-done-callback.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,7 @@ export default createRule({
name: __filename,
meta: {
docs: {
category: 'Best Practices',
description: 'Disallow using a callback in asynchronous tests and hooks',
recommended: 'error',
},
messages: {
noDoneCallback:
Expand Down
2 changes: 0 additions & 2 deletions src/rules/no-duplicate-hooks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,7 @@ export default createRule({
name: __filename,
meta: {
docs: {
category: 'Best Practices',
description: 'Disallow duplicate setup and teardown hooks',
recommended: false,
},
messages: {
noDuplicateHook: 'Duplicate {{hook}} in describe block',
Expand Down
2 changes: 0 additions & 2 deletions src/rules/no-export.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,7 @@ export default createRule({
name: __filename,
meta: {
docs: {
category: 'Best Practices',
description: 'Disallow using `exports` in files containing tests',
recommended: 'error',
},
messages: {
unexpectedExport: `Do not export from a test file.`,
Expand Down
2 changes: 0 additions & 2 deletions src/rules/no-focused-tests.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,7 @@ export default createRule({
name: __filename,
meta: {
docs: {
category: 'Best Practices',
description: 'Disallow focused tests',
recommended: 'error',
},
messages: {
focusedTest: 'Unexpected focused test.',
Expand Down
2 changes: 0 additions & 2 deletions src/rules/no-hooks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,7 @@ export default createRule<
name: __filename,
meta: {
docs: {
category: 'Best Practices',
description: 'Disallow setup and teardown hooks',
recommended: false,
},
messages: {
unexpectedHook: "Unexpected '{{ hookName }}' hook",
Expand Down
2 changes: 0 additions & 2 deletions src/rules/no-identical-title.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,7 @@ export default createRule({
name: __filename,
meta: {
docs: {
category: 'Best Practices',
description: 'Disallow identical titles',
recommended: 'error',
},
messages: {
multipleTestTitle:
Expand Down
2 changes: 0 additions & 2 deletions src/rules/no-if.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,6 @@ export default createRule({
meta: {
docs: {
description: 'Disallow conditional logic',
category: 'Best Practices',
recommended: false,
},
messages: {
conditionalInTest: 'Test should not contain {{ condition }} statements.',
Expand Down
2 changes: 0 additions & 2 deletions src/rules/no-interpolation-in-snapshots.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,7 @@ export default createRule({
name: __filename,
meta: {
docs: {
category: 'Best Practices',
description: 'Disallow string interpolation inside snapshots',
recommended: 'error',
},
messages: {
noInterpolation: 'Do not use string interpolation inside of snapshots',
Expand Down
2 changes: 0 additions & 2 deletions src/rules/no-jasmine-globals.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,7 @@ export default createRule({
name: __filename,
meta: {
docs: {
category: 'Best Practices',
description: 'Disallow Jasmine globals',
recommended: 'error',
},
messages: {
illegalGlobal:
Expand Down
2 changes: 0 additions & 2 deletions src/rules/no-large-snapshots.ts
Original file line number Diff line number Diff line change
Expand Up @@ -75,9 +75,7 @@ export default createRule<[RuleOptions], MessageId>({
name: __filename,
meta: {
docs: {
category: 'Best Practices',
description: 'Disallow large snapshots',
recommended: false,
},
messages: {
noSnapshot: '`{{ lineCount }}`s should begin with lowercase',
Expand Down
2 changes: 0 additions & 2 deletions src/rules/no-mocks-import.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,7 @@ export default createRule({
meta: {
type: 'problem',
docs: {
category: 'Best Practices',
description: 'Disallow manually importing from `__mocks__`',
recommended: 'error',
},
messages: {
noManualImport: `Mocks should not be manually imported from a ${mocksDirName} directory. Instead use \`jest.mock\` and import from the original module path.`,
Expand Down
2 changes: 0 additions & 2 deletions src/rules/no-restricted-jest-methods.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,7 @@ export default createRule<
name: __filename,
meta: {
docs: {
category: 'Best Practices',
description: 'Disallow specific `jest.` methods',
recommended: false,
},
type: 'suggestion',
schema: [
Expand Down
2 changes: 0 additions & 2 deletions src/rules/no-restricted-matchers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,7 @@ export default createRule<
name: __filename,
meta: {
docs: {
category: 'Best Practices',
description: 'Disallow specific matchers & modifiers',
recommended: false,
},
type: 'suggestion',
schema: [
Expand Down
2 changes: 0 additions & 2 deletions src/rules/no-standalone-expect.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,7 @@ export default createRule<
name: __filename,
meta: {
docs: {
category: 'Best Practices',
description: 'Disallow using `expect` outside of `it` or `test` blocks',
recommended: 'error',
},
messages: {
unexpectedExpect: 'Expect must be inside of a test block.',
Expand Down
2 changes: 0 additions & 2 deletions src/rules/no-test-prefixes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,7 @@ export default createRule({
name: __filename,
meta: {
docs: {
category: 'Best Practices',
description: 'Require using `.only` and `.skip` over `f` and `x`',
recommended: 'error',
},
messages: {
usePreferredName: 'Use "{{ preferredNodeName }}" instead',
Expand Down
2 changes: 0 additions & 2 deletions src/rules/no-test-return-statement.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,7 @@ export default createRule({
name: __filename,
meta: {
docs: {
category: 'Best Practices',
description: 'Disallow explicitly returning from tests',
recommended: false,
},
messages: {
noReturnValue: 'Jest tests should not return a value.',
Expand Down
7 changes: 4 additions & 3 deletions src/rules/no-untyped-mock-factory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,8 @@ export default createRule({
name: __filename,
meta: {
docs: {
category: 'Best Practices',
description:
'Disallow using `jest.mock()` factories without an explicit type parameter',
recommended: false,
},
messages: {
addTypeParameterToModuleMock:
Expand All @@ -38,7 +36,7 @@ export default createRule({
create(context) {
return {
CallExpression(node: TSESTree.CallExpression): void {
const { callee, typeParameters } = node;
const { callee } = node;

if (callee.type !== AST_NODE_TYPES.MemberExpression) {
return;
Expand All @@ -54,6 +52,9 @@ export default createRule({
) {
const [nameNode, factoryNode] = node.arguments;

// this will still emit a deprecation warning as `typeArguments` might be nullish on v6
const typeParameters = node.typeArguments ?? node.typeParameters;

const hasTypeParameter =
typeParameters !== undefined && typeParameters.params.length > 0;
const hasReturnType =
Expand Down
2 changes: 0 additions & 2 deletions src/rules/prefer-called-with.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,8 @@ export default createRule({
name: __filename,
meta: {
docs: {
category: 'Best Practices',
description:
'Suggest using `toBeCalledWith()` or `toHaveBeenCalledWith()`',
recommended: false,
},
messages: {
preferCalledWith: 'Prefer {{ matcherName }}With(/* expected args */)',
Expand Down
2 changes: 0 additions & 2 deletions src/rules/prefer-comparison-matcher.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,7 @@ export default createRule({
name: __filename,
meta: {
docs: {
category: 'Best Practices',
description: 'Suggest using the built-in comparison matchers',
recommended: false,
},
messages: {
useToBeComparison: 'Prefer using `{{ preferredMatcher }}` instead',
Expand Down
2 changes: 0 additions & 2 deletions src/rules/prefer-each.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,7 @@ export default createRule({
name: __filename,
meta: {
docs: {
category: 'Best Practices',
description: 'Prefer using `.each` rather than manual loops',
recommended: false,
},
messages: {
preferEach: 'prefer using `{{ fn }}.each` rather than a manual loop',
Expand Down
2 changes: 0 additions & 2 deletions src/rules/prefer-equality-matcher.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,7 @@ export default createRule({
name: __filename,
meta: {
docs: {
category: 'Best Practices',
description: 'Suggest using the built-in equality matchers',
recommended: false,
},
messages: {
useEqualityMatcher: 'Prefer using one of the equality matchers instead',
Expand Down
Loading

0 comments on commit e167c3c

Please sign in to comment.