Skip to content

Commit 47e9c89

Browse files
committedSep 21, 2021
[Tests] type-only imports were added in TypeScript ESTree 2.23.0
1 parent 28669b9 commit 47e9c89

6 files changed

+73
-94
lines changed
 

‎tests/src/rules/first.js

-1
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,6 @@ ruleTester.run('first', rule, {
8080

8181
context('TypeScript', function () {
8282
getTSParsers()
83-
.filter((parser) => parser !== require.resolve('typescript-eslint-parser'))
8483
.forEach((parser) => {
8584
const parserConfig = {
8685
parser,

‎tests/src/rules/max-dependencies.js

+41-40
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
import { test, getTSParsers } from '../utils';
22

33
import { RuleTester } from 'eslint';
4-
import eslintPkg from 'eslint/package.json';
5-
import semver from 'semver';
64

75
const ruleTester = new RuleTester();
86
const rule = require('rules/max-dependencies');
@@ -91,43 +89,46 @@ ruleTester.run('max-dependencies', rule, {
9189
],
9290
});
9391

94-
(semver.satisfies(eslintPkg.version, '>5.0.0') ? describe.skip : describe)('TypeScript', () => {
95-
getTSParsers().forEach((parser) => {
96-
ruleTester.run(`max-dependencies (${parser.replace(process.cwd(), '.')})`, rule, {
97-
valid: [
98-
test({
99-
code: 'import type { x } from \'./foo\'; import { y } from \'./bar\';',
100-
parser,
101-
options: [{
102-
max: 1,
103-
ignoreTypeImports: true,
104-
}],
105-
}),
106-
],
107-
invalid: [
108-
test({
109-
code: 'import type { x } from \'./foo\'; import type { y } from \'./bar\'',
110-
parser,
111-
options: [{
112-
max: 1,
113-
}],
114-
errors: [
115-
'Maximum number of dependencies (1) exceeded.',
116-
],
117-
}),
118-
119-
test({
120-
code: 'import type { x } from \'./foo\'; import type { y } from \'./bar\'; import type { z } from \'./baz\'',
121-
parser,
122-
options: [{
123-
max: 2,
124-
ignoreTypeImports: false,
125-
}],
126-
errors: [
127-
'Maximum number of dependencies (2) exceeded.',
128-
],
129-
}),
130-
],
92+
describe('TypeScript', () => {
93+
getTSParsers()
94+
// Type-only imports were added in TypeScript ESTree 2.23.0
95+
.filter((parser) => parser !== require.resolve('typescript-eslint-parser'))
96+
.forEach((parser) => {
97+
ruleTester.run(`max-dependencies (${parser.replace(process.cwd(), '.')})`, rule, {
98+
valid: [
99+
test({
100+
code: 'import type { x } from \'./foo\'; import { y } from \'./bar\';',
101+
parser,
102+
options: [{
103+
max: 1,
104+
ignoreTypeImports: true,
105+
}],
106+
}),
107+
],
108+
invalid: [
109+
test({
110+
code: 'import type { x } from \'./foo\'; import type { y } from \'./bar\'',
111+
parser,
112+
options: [{
113+
max: 1,
114+
}],
115+
errors: [
116+
'Maximum number of dependencies (1) exceeded.',
117+
],
118+
}),
119+
120+
test({
121+
code: 'import type { x } from \'./foo\'; import type { y } from \'./bar\'; import type { z } from \'./baz\'',
122+
parser,
123+
options: [{
124+
max: 2,
125+
ignoreTypeImports: false,
126+
}],
127+
errors: [
128+
'Maximum number of dependencies (2) exceeded.',
129+
],
130+
}),
131+
],
132+
});
131133
});
132-
});
133134
});

‎tests/src/rules/no-duplicates.js

+1
Original file line numberDiff line numberDiff line change
@@ -417,6 +417,7 @@ import {x,y} from './foo'
417417

418418
context('TypeScript', function () {
419419
getNonDefaultParsers()
420+
// Type-only imports were added in TypeScript ESTree 2.23.0
420421
.filter((parser) => parser !== require.resolve('typescript-eslint-parser'))
421422
.forEach((parser) => {
422423
const parserConfig = {

‎tests/src/rules/no-extraneous-dependencies.js

+29-53
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@ import { getTSParsers, test, testFilePath } from '../utils';
22
import typescriptConfig from '../../../config/typescript';
33
import path from 'path';
44
import fs from 'fs';
5-
import semver from 'semver';
6-
import eslintPkg from 'eslint/package.json';
75

86
import { RuleTester } from 'eslint';
97
import 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+
});

‎tests/src/rules/no-unresolved.js

+1
Original file line numberDiff line numberDiff line change
@@ -443,6 +443,7 @@ ruleTester.run('import() with built-in parser', rule, {
443443
});
444444

445445
context('TypeScript', () => {
446+
// Type-only imports were added in TypeScript ESTree 2.23.0
446447
getTSParsers().filter(x => x !== require.resolve('typescript-eslint-parser')).forEach((parser) => {
447448
ruleTester.run(`${parser}: no-unresolved ignore type-only`, rule, {
448449
valid: [

‎tests/src/rules/order.js

+1
Original file line numberDiff line numberDiff line change
@@ -2283,6 +2283,7 @@ ruleTester.run('order', rule, {
22832283

22842284
context('TypeScript', function () {
22852285
getNonDefaultParsers()
2286+
// Type-only imports were added in TypeScript ESTree 2.23.0
22862287
.filter((parser) => parser !== require.resolve('typescript-eslint-parser'))
22872288
.forEach((parser) => {
22882289
const parserConfig = {

0 commit comments

Comments
 (0)
Please sign in to comment.