import { RuleTester } from '@typescript-eslint/utils/dist/ts-eslint' import { it } from 'vitest' import rule, { RULE_NAME } from './generic-spacing' const valids = [ 'type Foo = T', 'type Foo = T', ` type Foo< T = true, K = false > = T`, `function foo< T >() {}`, 'const foo = (name: T) => name', `interface Log { foo(name: T): void }`, `interface Log { (name: T): void }`, `interface Foo { foo?: (name: T) => void }`, ] const invalids = [ ['type Foo = T', 'type Foo = T'], ['type Foo = T', 'type Foo = T'], ['type Foo = T', 'type Foo = T', 3], ['function foo () {}', 'function foo() {}'], [`interface Log { foo (name: T): void }`, `interface Log { foo(name: T): void }`], ] as const it('runs', () => { const ruleTester: RuleTester = new RuleTester({ parser: require.resolve('@typescript-eslint/parser'), }) ruleTester.run(RULE_NAME, rule, { valid: valids, invalid: invalids.map(i => ({ code: i[0], output: i[1].trim(), errors: Array.from({ length: i[2] || 1 }, () => ({ messageId: 'genericSpacingMismatch' })), })), }) })