@@ -2,8 +2,6 @@ import { getTSParsers, test, testFilePath } from '../utils';
2
2
import typescriptConfig from '../../../config/typescript' ;
3
3
import path from 'path' ;
4
4
import fs from 'fs' ;
5
- import semver from 'semver' ;
6
- import eslintPkg from 'eslint/package.json' ;
7
5
8
6
import { RuleTester } from 'eslint' ;
9
7
import flatMap from 'array.prototype.flatmap' ;
@@ -380,18 +378,19 @@ ruleTester.run('no-extraneous-dependencies', rule, {
380
378
] ,
381
379
} ) ;
382
380
383
- // TODO: figure out why these tests fail in eslint 4
384
- ( semver . satisfies ( eslintPkg . version , '^4' ) ? describe . skip : describe ) ( 'TypeScript' , ( ) => {
385
- getTSParsers ( ) . forEach ( ( parser ) => {
386
- const parserConfig = {
387
- parser,
388
- settings : {
389
- 'import/parsers' : { [ parser ] : [ '.ts' ] } ,
390
- 'import/resolver' : { 'eslint-import-resolver-typescript' : true } ,
391
- } ,
392
- } ;
381
+ describe ( 'TypeScript' , ( ) => {
382
+ getTSParsers ( )
383
+ // Type-only imports were added in TypeScript ESTree 2.23.0
384
+ . filter ( ( parser ) => parser !== require . resolve ( 'typescript-eslint-parser' ) )
385
+ . forEach ( ( parser ) => {
386
+ const parserConfig = {
387
+ parser,
388
+ settings : {
389
+ 'import/parsers' : { [ parser ] : [ '.ts' ] } ,
390
+ 'import/resolver' : { 'eslint-import-resolver-typescript' : true } ,
391
+ } ,
392
+ } ;
393
393
394
- if ( parser !== require . resolve ( 'typescript-eslint-parser' ) ) {
395
394
ruleTester . run ( 'no-extraneous-dependencies' , rule , {
396
395
valid : [
397
396
test ( Object . assign ( {
@@ -409,45 +408,22 @@ ruleTester.run('no-extraneous-dependencies', rule, {
409
408
} , parserConfig ) ) ,
410
409
] ,
411
410
} ) ;
412
- } else {
413
- ruleTester . run ( 'no-extraneous-dependencies' , rule , {
414
- valid : [ ] ,
415
- invalid : [
416
- test ( Object . assign ( {
417
- code : 'import T from "a"; /* typescript-eslint-parser */' ,
418
- options : [ { packageDir : packageDirWithTypescriptDevDependencies , devDependencies : false } ] ,
419
- errors : [ {
420
- message : "'a' should be listed in the project's dependencies, not devDependencies." ,
421
- } ] ,
422
- } , parserConfig ) ) ,
423
- test ( Object . assign ( {
424
- code : 'import type T from "a"; /* typescript-eslint-parser */' ,
425
- options : [ { packageDir : packageDirWithTypescriptDevDependencies , devDependencies : false } ] ,
426
- errors : [ {
427
- message : "'a' should be listed in the project's dependencies, not devDependencies." ,
428
- } ] ,
429
- } , parserConfig ) ) ,
430
- ] ,
431
- } ) ;
432
- }
433
- } ) ;
411
+ } ) ;
434
412
} ) ;
435
413
436
- if ( semver . satisfies ( eslintPkg . version , '>5.0.0' ) ) {
437
- typescriptRuleTester . run ( 'no-extraneous-dependencies typescript type imports' , rule , {
438
- valid : [
439
- test ( {
440
- code : 'import type MyType from "not-a-dependency";' ,
441
- filename : testFilePath ( './no-unused-modules/typescript/file-ts-a.ts' ) ,
442
- parser : require . resolve ( 'babel-eslint' ) ,
443
- } ) ,
444
- test ( {
445
- code : 'import type { MyType } from "not-a-dependency";' ,
446
- filename : testFilePath ( './no-unused-modules/typescript/file-ts-a.ts' ) ,
447
- parser : require . resolve ( 'babel-eslint' ) ,
448
- } ) ,
449
- ] ,
450
- invalid : [
451
- ] ,
452
- } ) ;
453
- }
414
+ typescriptRuleTester . run ( 'no-extraneous-dependencies typescript type imports' , rule , {
415
+ valid : [
416
+ test ( {
417
+ code : 'import type MyType from "not-a-dependency";' ,
418
+ filename : testFilePath ( './no-unused-modules/typescript/file-ts-a.ts' ) ,
419
+ parser : require . resolve ( 'babel-eslint' ) ,
420
+ } ) ,
421
+ test ( {
422
+ code : 'import type { MyType } from "not-a-dependency";' ,
423
+ filename : testFilePath ( './no-unused-modules/typescript/file-ts-a.ts' ) ,
424
+ parser : require . resolve ( 'babel-eslint' ) ,
425
+ } ) ,
426
+ ] ,
427
+ invalid : [
428
+ ] ,
429
+ } ) ;
0 commit comments