@@ -17,9 +17,6 @@ const testConfig = {
1717 } ,
1818 languageOptions : {
1919 parserOptions : {
20- projectService : {
21- allowDefaultProject : [ '*.ts*' ] ,
22- } ,
2320 sourceType : 'module' ,
2421 ecmaFeatures : {
2522 jsx : true ,
@@ -32,6 +29,8 @@ const testConfig = {
3229} as RuleTesterConfig ;
3330
3431const ruleTester = new RuleTester ( testConfig ) ;
32+ type RuleTesterRule = Parameters < RuleTester [ 'defineRule' ] > [ 1 ] ;
33+
3534interface TestCase {
3635 name : string ;
3736 filename : string ;
@@ -40,6 +39,10 @@ interface TestCase {
4039interface InvalidTestCase extends TestCase {
4140 errors : { messageId : string } [ ] ;
4241}
42+
43+ const isRuleName = ( ruleName : string ) : ruleName is keyof typeof rules =>
44+ Object . prototype . hasOwnProperty . call ( rules , ruleName ) ;
45+
4346await ( async function setupEsLintRuleTesters ( ) {
4447 // list './test' directory content and set up one RuleTester per directory
4548 let testDir = join ( dirname ( new URL ( import . meta. url ) . pathname ) , './tests' ) ;
@@ -51,17 +54,17 @@ await (async function setupEsLintRuleTesters() {
5154
5255 const ruleNames = await readdir ( testDir ) ;
5356 for ( const ruleName of ruleNames ) {
54- const rule = rules [ ruleName ] ;
5557 if ( ruleName . endsWith ( '.json' ) ) {
5658 continue ;
5759 }
58- if ( ! rule ) {
60+ if ( ! isRuleName ( ruleName ) ) {
5961 throw new Error (
6062 `Test directory has rule '${ ruleName } ' but related eslint rule is missing. Valid rules are: ${ Object . keys (
6163 rules
6264 ) . join ( ', ' ) } `
6365 ) ;
6466 }
67+ const rule = rules [ ruleName ] as RuleTesterRule ;
6568 const ruleDir = join ( testDir , ruleName ) ;
6669 const valid : TestCase [ ] = [ ] ;
6770 const invalid : InvalidTestCase [ ] = [ ] ;
0 commit comments