Skip to content

Commit

Permalink
Test legacy TypeScript resolver
Browse files Browse the repository at this point in the history
  • Loading branch information
jablko committed Sep 22, 2021
1 parent 57cb13f commit 6faf7d8
Showing 1 changed file with 67 additions and 34 deletions.
101 changes: 67 additions & 34 deletions tests/src/rules/no-extraneous-dependencies.js
Original file line number Diff line number Diff line change
Expand Up @@ -380,42 +380,75 @@ ruleTester.run('no-extraneous-dependencies', rule, {
],
});

(semver.satisfies(typescriptResolverPkg.version, '>=2.1.0')
? describe
: describe.skip)('TypeScript', () => {
getTSParsers()
// Type-only imports were added in TypeScript ESTree 2.23.0
.filter((parser) => parser !== require.resolve('typescript-eslint-parser'))
.forEach((parser) => {
const parserConfig = {
parser,
settings: {
'import/parsers': { [parser]: ['.ts'] },
'import/resolver': ['node', 'typescript'],
},
};
if (semver.satisfies(typescriptResolverPkg.version, '>=2.1.0')) {
describe('TypeScript', () => {
getTSParsers()
// Type-only imports were added in TypeScript ESTree 2.23.0
.filter((parser) => parser !== require.resolve('typescript-eslint-parser'))
.forEach((parser) => {
const parserConfig = {
parser,
settings: {
'import/parsers': { [parser]: ['.ts'] },
'import/resolver': ['node', 'typescript'],
},
};

ruleTester.run('no-extraneous-dependencies', rule, {
valid: [],
invalid: [
test(Object.assign({
code: 'import T from "a";',
options: [{ packageDir: packageDirWithTypescriptDevDependencies, devDependencies: false }],
errors: [{
message: "'a' should be listed in the project's dependencies, not devDependencies.",
}],
}, parserConfig)),
test(Object.assign({
code: 'import type T from "a";',
options: [{ packageDir: packageDirWithTypescriptDevDependencies, devDependencies: false }],
errors: [{
message: "'@types/a' should be listed in the project's dependencies. Run 'npm i -S @types/a' to add it",
}],
}, parserConfig)),
],
ruleTester.run('no-extraneous-dependencies', rule, {
valid: [],
invalid: [
test(Object.assign({
code: 'import T from "a";',
options: [{ packageDir: packageDirWithTypescriptDevDependencies, devDependencies: false }],
errors: [{
message: "'a' should be listed in the project's dependencies, not devDependencies.",
}],
}, parserConfig)),
test(Object.assign({
code: 'import type T from "a";',
options: [{ packageDir: packageDirWithTypescriptDevDependencies, devDependencies: false }],
errors: [{
message: "'@types/a' should be listed in the project's dependencies. Run 'npm i -S @types/a' to add it",
}],
}, parserConfig)),
],
});
});
});
});
});
} else {
describe('Legacy TypeScript resolver', () => {
getTSParsers()
// Type-only imports were added in TypeScript ESTree 2.23.0
.filter((parser) => parser !== require.resolve('typescript-eslint-parser'))
.forEach((parser) => {
const parserConfig = {
parser,
settings: {
'import/parsers': { [parser]: ['.ts'] },
'import/resolver': ['node', 'typescript'],
},
};

ruleTester.run('no-extraneous-dependencies', rule, {
valid: [
test(Object.assign({
code: 'import type T from "a";',
options: [{ packageDir: packageDirWithTypescriptDevDependencies, devDependencies: false }],
}, parserConfig)),
],
invalid: [
test(Object.assign({
code: 'import T from "a";',
options: [{ packageDir: packageDirWithTypescriptDevDependencies, devDependencies: false }],
errors: [{
message: "'a' should be listed in the project's dependencies, not devDependencies.",
}],
}, parserConfig)),
],
});
});
});
}

typescriptRuleTester.run('no-extraneous-dependencies typescript type imports', rule, {
valid: [
Expand Down

0 comments on commit 6faf7d8

Please sign in to comment.