@@ -2,8 +2,6 @@ import { getTSParsers, test, testFilePath } from '../utils';
22import typescriptConfig from '../../../config/typescript' ;
33import path from 'path' ;
44import fs from 'fs' ;
5- import semver from 'semver' ;
6- import eslintPkg from 'eslint/package.json' ;
75
86import { RuleTester } from 'eslint' ;
97import flatMap from 'array.prototype.flatmap' ;
@@ -380,18 +378,19 @@ ruleTester.run('no-extraneous-dependencies', rule, {
380378 ] ,
381379} ) ;
382380
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+ } ;
393393
394- if ( parser !== require . resolve ( 'typescript-eslint-parser' ) ) {
395394 ruleTester . run ( 'no-extraneous-dependencies' , rule , {
396395 valid : [
397396 test ( Object . assign ( {
@@ -409,45 +408,22 @@ ruleTester.run('no-extraneous-dependencies', rule, {
409408 } , parserConfig ) ) ,
410409 ] ,
411410 } ) ;
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+ } ) ;
434412} ) ;
435413
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