From 162c0e19eaf4fe54aef0eaafc87fe15d0c861339 Mon Sep 17 00:00:00 2001 From: Kevin Mui Date: Tue, 3 Mar 2020 22:58:03 -0600 Subject: [PATCH] [Fix] `no-duplicates`: Handle TS import type --- package.json | 6 +++--- tests/src/rules/no-duplicates.js | 29 ++++++++++++++++++++++++++++- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 28e45eeb56..595c03bdb4 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "devDependencies": { "@eslint/import-test-order-redirect-scoped": "file:./tests/files/order-redirect-scoped", "@test-scope/some-module": "file:./tests/files/symlinked-module", - "@typescript-eslint/parser": "1.10.3-alpha.13", + "@typescript-eslint/parser": "^2.22.0", "babel-cli": "^6.26.0", "babel-core": "^6.26.3", "babel-eslint": "^8.2.6", @@ -68,7 +68,7 @@ "cross-env": "^4.0.0", "eslint": "2.x - 6.x", "eslint-import-resolver-node": "file:./resolvers/node", - "eslint-import-resolver-typescript": "^1.0.2", + "eslint-import-resolver-typescript": "^2.0.0", "eslint-import-resolver-webpack": "file:./resolvers/webpack", "eslint-import-test-order-redirect": "file:./tests/files/order-redirect", "eslint-module-utils": "file:./utils", @@ -82,7 +82,7 @@ "rimraf": "^2.7.1", "semver": "^6.3.0", "sinon": "^2.4.1", - "typescript": "~3.2.2", + "typescript": "^3.8.3", "typescript-eslint-parser": "^22.0.0" }, "peerDependencies": { diff --git a/tests/src/rules/no-duplicates.js b/tests/src/rules/no-duplicates.js index 468c7ab982..a3f0b8c398 100644 --- a/tests/src/rules/no-duplicates.js +++ b/tests/src/rules/no-duplicates.js @@ -1,5 +1,5 @@ import * as path from 'path' -import { test as testUtil } from '../utils' +import { test as testUtil, getNonDefaultParsers } from '../utils' import { RuleTester } from 'eslint' @@ -393,3 +393,30 @@ ruleTester.run('no-duplicates', rule, { }), ], }) + +context('TypeScript', function() { + getNonDefaultParsers().forEach((parser) => { + const parserConfig = { + parser: parser, + settings: { + 'import/parsers': { [parser]: ['.ts'] }, + 'import/resolver': { 'eslint-import-resolver-typescript': true }, + }, + } + + ruleTester.run('no-duplicates', rule, { + valid: [ + // #1667: ignore duplicate if is a typescript type import + test( + { + code: "import type { x } from './foo'; import y from './foo'", + parser, + }, + parserConfig, + ), + ], + invalid: [], + }) + }) +}) +