Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 13 additions & 17 deletions src/rules/consistent-test-filename.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ const defaultTestsPattern = /.*\.(test|spec)\.[tj]sx?$/
export default createEslintRule<
[
Partial<{
pattern: string
allTestPattern: string
pattern: RegExp | string
allTestPattern: RegExp | string
}>,
],
'consistentTestFilename'
Expand All @@ -20,7 +20,7 @@ export default createEslintRule<
docs: {
recommended: false,
requiresTypeChecking: false,
description: 'require .spec test file pattern',
description: 'require test file pattern',
},
messages: {
consistentTestFilename: 'Use test file name pattern {{ pattern }}',
Expand All @@ -31,14 +31,12 @@ export default createEslintRule<
additionalProperties: false,
properties: {
pattern: {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-expect-error
type: 'string',
format: 'regex',
default: defaultPattern.source,
},
allTestPattern: {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-expect-error
type: 'string',
format: 'regex',
default: defaultTestsPattern.source,
},
Expand All @@ -48,23 +46,21 @@ export default createEslintRule<
},
defaultOptions: [
{
pattern: defaultTestsPattern.source,
allTestPattern: defaultTestsPattern.source,
pattern: defaultPattern,
allTestPattern: defaultTestsPattern,
},
],

create: (context) => {
const config = context.options[0] ?? {}
const {
pattern: patternRaw = defaultPattern,
allTestPattern: allTestPatternRaw = defaultTestsPattern,
} = config
create: (context, options) => {
const { pattern: patternRaw, allTestPattern: allTestPatternRaw } =
options[0]

const pattern =
typeof patternRaw === 'string' ? new RegExp(patternRaw) : patternRaw
typeof patternRaw === 'string' ? new RegExp(patternRaw) : patternRaw!
const testPattern =
typeof allTestPatternRaw === 'string'
? new RegExp(allTestPatternRaw)
: allTestPatternRaw
: allTestPatternRaw!

const { filename } = context

Expand Down
11 changes: 5 additions & 6 deletions src/rules/consistent-test-it.ts
Original file line number Diff line number Diff line change
Expand Up @@ -79,12 +79,11 @@ export default createEslintRule<
},
],
},
defaultOptions: [{ fn: TestCaseName.test, withinDescribe: TestCaseName.it }],
create(context) {
const config = context.options[0] ?? {}
const testFnKeyWork = config.fn || TestCaseName.test
const testKeywordWithinDescribe =
config?.withinDescribe || config?.fn || TestCaseName?.it
defaultOptions: [{}],
create(context, options) {
const { fn, withinDescribe } = options[0]
const testFnKeyWork = fn || TestCaseName.test
const testKeywordWithinDescribe = withinDescribe || fn || TestCaseName.it
const testFnDisabled =
testFnKeyWork === testKeywordWithinDescribe ? testFnKeyWork : undefined

Expand Down
6 changes: 3 additions & 3 deletions src/rules/consistent-vitest-vi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,16 +29,16 @@ export default createEslintRule<[Partial<{ fn: UtilName }>], MESSAGE_ID>({
fn: {
type: 'string',
enum: [UtilName.vi, UtilName.vitest],
default: UtilName.vi,
},
},
additionalProperties: false,
},
],
},
defaultOptions: [{ fn: UtilName.vi }],
create(context) {
const config = context.options[0] ?? {}
const utilKeyword = config.fn || UtilName.vi
create(context, options) {
const utilKeyword = options[0].fn!
const oppositeUtilKeyword = getOppositeVitestUtilKeyword(utilKeyword)

return {
Expand Down
4 changes: 2 additions & 2 deletions src/rules/no-focused-tests.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,8 @@ export default createEslintRule<Options, MessageIds>({
},
},
defaultOptions: [{ fixable: true }],
create: (context) => {
const fixable = context.options[0]?.fixable
create: (context, options) => {
const fixable = options[0].fixable!

return {
ExpressionStatement(node) {
Expand Down
8 changes: 4 additions & 4 deletions src/rules/require-hook.ts
Original file line number Diff line number Diff line change
Expand Up @@ -84,12 +84,12 @@ export default createEslintRule<Options, MESSAGE_IDS>({
allowedFunctionCalls: [],
},
],
create(context) {
const { allowedFunctionCalls } = context.options[0] ?? {}

create(context, options) {
const checkBlockBody = (body: TSESTree.BlockStatement['body']) => {
for (const statement of body) {
if (shouldBeInHook(statement, context, allowedFunctionCalls)) {
if (
shouldBeInHook(statement, context, options[0].allowedFunctionCalls)
) {
context.report({
node: statement,
messageId: 'useHook',
Expand Down
8 changes: 5 additions & 3 deletions src/rules/require-top-level-describe.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,15 +31,17 @@ export default createEslintRule<Options, MESSAGE_IDS>({
maxNumberOfTopLevelDescribes: {
type: 'number',
minimum: 1,
default: Infinity,
},
},
additionalProperties: false,
},
],
},
defaultOptions: [{}],
create(context) {
const { maxNumberOfTopLevelDescribes = Infinity } = context.options[0] ?? {}
defaultOptions: [{ maxNumberOfTopLevelDescribes: Infinity }],
create(context, options) {
const maxNumberOfTopLevelDescribes =
options[0].maxNumberOfTopLevelDescribes!

let numberOfTopLevelDescribeBlocks = 0
let numberOfDescribeBlocks = 0
Expand Down
9 changes: 6 additions & 3 deletions tests/consistent-test-filename.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,18 @@ ruleTester.run(`file-name`, rule, {
{
code: 'export {}',
filename: '1.test.ts',
options: [{ pattern: String.raw`.*\.test\.ts$` }],
},
{
code: 'export {}',
filename: '1.spec.ts',
options: [{ pattern: String.raw`.*\.spec\.ts$` }],
},
],
invalid: [
{
code: 'export {}',
filename: '1.spec.ts',
errors: [{ messageId: 'consistentTestFilename' }],
options: [{ pattern: String.raw`.*\.test\.ts$` }],
},
{
code: 'export {}',
Expand All @@ -23,7 +26,7 @@ ruleTester.run(`file-name`, rule, {
options: [
{
allTestPattern: String.raw`__tests__`,
pattern: String.raw`.*\.test\.ts$`,
pattern: String.raw`.*\.spec\.ts$`,
},
],
},
Expand Down
7 changes: 0 additions & 7 deletions tests/consistent-vitest-vi.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,29 +6,24 @@ ruleTester.run(RULE_NAME, rule, {
valid: [
{
code: 'import { expect, it } from "vitest";',
options: [{ fn: UtilName.vi }],
},
{
code: 'import { vi } from "vitest";',
options: [{ fn: UtilName.vi }],
},
{
code: 'import { vitest } from "vitest";',
options: [{ fn: UtilName.vitest }],
},
{
code: 'import { vi } from "vitest";\nvi.stubEnv("NODE_ENV", "production");',
options: [{ fn: UtilName.vi }],
},
{
code: 'vi.stubEnv("NODE_ENV", "production");',
options: [{ fn: UtilName.vi }],
},
],
invalid: [
{
code: 'import { vitest } from "vitest";',
options: [{ fn: UtilName.vi }],
output: 'import { vi } from "vitest";',
errors: [
{
Expand All @@ -45,7 +40,6 @@ ruleTester.run(RULE_NAME, rule, {
},
{
code: 'import { expect, vi, vitest } from "vitest";',
options: [{ fn: UtilName.vi }],
output: 'import { expect, vi } from "vitest";',
errors: [
{
Expand All @@ -62,7 +56,6 @@ ruleTester.run(RULE_NAME, rule, {
},
{
code: 'import { vitest } from "vitest";\nvitest.stubEnv("NODE_ENV", "production");',
options: [{ fn: UtilName.vi }],
output:
'import { vi } from "vitest";\nvi.stubEnv("NODE_ENV", "production");',
errors: [
Expand Down
35 changes: 5 additions & 30 deletions tests/no-focused-tests.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,11 @@ ruleTester.run(RULE_NAME, rule, {
valid: ['it("test", () => {});', 'describe("test group", () => {});'],
invalid: [
{
options: [
{
fixable: false,
},
],
code: 'it.only("test", () => {});',
errors: [
{
Expand Down Expand Up @@ -108,11 +113,6 @@ ruleTester.run(RULE_NAME, rule, {
valid: ['it("test", () => {});', 'describe("test group", () => {});'],
invalid: [
{
options: [
{
fixable: true,
},
],
code: 'it.only("test", () => {});',
errors: [
{
Expand All @@ -126,11 +126,6 @@ ruleTester.run(RULE_NAME, rule, {
output: 'it("test", () => {});',
},
{
options: [
{
fixable: true,
},
],
code: 'describe.only("test", () => {});',
errors: [
{
Expand All @@ -144,11 +139,6 @@ ruleTester.run(RULE_NAME, rule, {
output: 'describe("test", () => {});',
},
{
options: [
{
fixable: true,
},
],
code: 'test.only("test", () => {});',
errors: [
{
Expand All @@ -162,11 +152,6 @@ ruleTester.run(RULE_NAME, rule, {
output: 'test("test", () => {});',
},
{
options: [
{
fixable: true,
},
],
code: 'it.only.each([])("test", () => {});',
errors: [
{
Expand All @@ -180,11 +165,6 @@ ruleTester.run(RULE_NAME, rule, {
output: 'it.each([])("test", () => {});',
},
{
options: [
{
fixable: true,
},
],
code: 'test.only.each``("test", () => {});',
errors: [
{
Expand All @@ -198,11 +178,6 @@ ruleTester.run(RULE_NAME, rule, {
output: 'test.each``("test", () => {});',
},
{
options: [
{
fixable: true,
},
],
code: 'it.only.each``("test", () => {});',
errors: [
{
Expand Down