diff --git a/tests/src/rules/no-duplicates.js b/tests/src/rules/no-duplicates.js
index bd7ebaea18..14a9f20091 100644
--- a/tests/src/rules/no-duplicates.js
+++ b/tests/src/rules/no-duplicates.js
@@ -1,6 +1,6 @@
import * as path from 'path';
+import { test as testUtil, getNonDefaultParsers, parsers } from '../utils';
import jsxConfig from '../../../config/react';
-import { test as testUtil, getNonDefaultParsers, parsers, tsVersionSatisfies, typescriptEslintParserSatisfies } from '../utils';
import { RuleTester } from 'eslint';
import eslintPkg from 'eslint/package.json';
@@ -424,28 +424,28 @@ import {x,y} from './foo'
import {
BULK_ACTIONS_ENABLED
} from '../constants';
-
+
const TestComponent = () => {
return
;
}
-
+
export default TestComponent;
`,
output: `
import {
DEFAULT_FILTER_KEYS,
BULK_DISABLED,
-
+
BULK_ACTIONS_ENABLED
} from '../constants';
import React from 'react';
-
+
const TestComponent = () => {
return
;
}
-
+
export default TestComponent;
`,
errors: ["'../constants' imported multiple times.", "'../constants' imported multiple times."],
@@ -467,224 +467,99 @@ context('TypeScript', function () {
},
};
- const valid = [
+ 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'",
- ...parserConfig,
- }),
- test({
- code: "import type x from './foo'; import type y from './bar'",
- ...parserConfig,
- }),
- test({
- code: "import type {x} from './foo'; import type {y} from './bar'",
- ...parserConfig,
- }),
- test({
- code: "import type x from './foo'; import type {y} from './foo'",
- ...parserConfig,
- }),
- test({
- code: `
- import type {} from './module';
- import {} from './module2';
- `,
- ...parserConfig,
- }),
- test({
- code: `
- import type { Identifier } from 'module';
-
- declare module 'module2' {
- import type { Identifier } from 'module';
- }
-
- declare module 'module3' {
+ test({
+ code: "import type { x } from './foo'; import y from './foo'",
+ ...parserConfig,
+ }),
+ test({
+ code: "import type x from './foo'; import type y from './bar'",
+ ...parserConfig,
+ }),
+ test({
+ code: "import type {x} from './foo'; import type {y} from './bar'",
+ ...parserConfig,
+ }),
+ test({
+ code: "import type x from './foo'; import type {y} from './foo'",
+ ...parserConfig,
+ }),
+ test({
+ code: `
+ import type {} from './module';
+ import {} from './module2';
+ `,
+ ...parserConfig,
+ }),
+ test({
+ code: `
import type { Identifier } from 'module';
- }
- `,
- ...parserConfig,
- }),
- ].concat(!tsVersionSatisfies('>= 4.5') || !typescriptEslintParserSatisfies('>= 5.7.0') ? [] : [
- // #2470: ignore duplicate if is a typescript inline type import
- test({
- code: "import { type x } from './foo'; import y from './foo'",
- ...parserConfig,
- }),
- test({
- code: "import { type x } from './foo'; import { y } from './foo'",
- ...parserConfig,
- }),
- test({
- code: "import { type x } from './foo'; import type y from 'foo'",
- ...parserConfig,
- }),
- ]);
-
- const invalid = [
- test({
- code: "import type x from './foo'; import type y from './foo'",
- output: "import type x from './foo'; import type y from './foo'",
- ...parserConfig,
- errors: [
- {
- line: 1,
- column: 20,
- message: "'./foo' imported multiple times.",
- },
- {
- line: 1,
- column: 48,
- message: "'./foo' imported multiple times.",
- },
- ],
- }),
- test({
- code: "import type x from './foo'; import type x from './foo'",
- output: "import type x from './foo'; ",
- ...parserConfig,
- errors: [
- {
- line: 1,
- column: 20,
- message: "'./foo' imported multiple times.",
- },
- {
- line: 1,
- column: 48,
- message: "'./foo' imported multiple times.",
- },
- ],
- }),
- test({
- code: "import type {x} from './foo'; import type {y} from './foo'",
- ...parserConfig,
- output: `import type {x,y} from './foo'; `,
- errors: [
- {
- line: 1,
- column: 22,
- message: "'./foo' imported multiple times.",
- },
- {
- line: 1,
- column: 52,
- message: "'./foo' imported multiple times.",
- },
- ],
- }),
- ].concat(!tsVersionSatisfies('>= 4.5') || !typescriptEslintParserSatisfies('>= 5.7.0') ? [] : [
- test({
- code: "import {type x} from './foo'; import type {y} from './foo'",
- ...parserConfig,
- options: [{ 'prefer-inline': false }],
- output: `import {type x,y} from './foo'; `,
- errors: [
- {
- line: 1,
- column: 22,
- message: "'./foo' imported multiple times.",
- },
- {
- line: 1,
- column: 52,
- message: "'./foo' imported multiple times.",
- },
- ],
- }),
- test({
- code: "import {type x} from 'foo'; import type {y} from 'foo'",
- ...parserConfig,
- options: [{ 'prefer-inline': true }],
- output: `import {type x,type y} from 'foo'; `,
- errors: [
- {
- line: 1,
- column: 22,
- message: "'foo' imported multiple times.",
- },
- {
- line: 1,
- column: 50,
- message: "'foo' imported multiple times.",
- },
- ],
- }),
- test({
- code: "import {type x} from 'foo'; import type {y} from 'foo'",
- ...parserConfig,
- output: `import {type x,y} from 'foo'; `,
- errors: [
- {
- line: 1,
- column: 22,
- message: "'foo' imported multiple times.",
- },
- {
- line: 1,
- column: 50,
- message: "'foo' imported multiple times.",
- },
- ],
- }),
- test({
- code: "import {type x} from './foo'; import {type y} from './foo'",
- ...parserConfig,
- options: [{ 'prefer-inline': true }],
- output: `import {type x,type y} from './foo'; `,
- errors: [
- {
- line: 1,
- column: 22,
- message: "'./foo' imported multiple times.",
- },
- {
- line: 1,
- column: 52,
- message: "'./foo' imported multiple times.",
- },
- ],
- }),
- test({
- code: "import {type x} from './foo'; import {type y} from './foo'",
- ...parserConfig,
- output: `import {type x,type y} from './foo'; `,
- errors: [
- {
- line: 1,
- column: 22,
- message: "'./foo' imported multiple times.",
- },
- {
- line: 1,
- column: 52,
- message: "'./foo' imported multiple times.",
- },
- ],
- }),
- test({
- code: "import {AValue, type x, BValue} from './foo'; import {type y} from './foo'",
- ...parserConfig,
- output: `import {AValue, type x, BValue,type y} from './foo'; `,
- errors: [
- {
- line: 1,
- column: 38,
- message: "'./foo' imported multiple times.",
- },
- {
- line: 1,
- column: 68,
- message: "'./foo' imported multiple times.",
- },
- ],
- }),
- ]);
- ruleTester.run('no-duplicates', rule, {
- valid,
- invalid,
+ declare module 'module2' {
+ import type { Identifier } from 'module';
+ }
+
+ declare module 'module3' {
+ import type { Identifier } from 'module';
+ }
+ `,
+ ...parserConfig,
+ }),
+ ],
+ invalid: [
+ test({
+ code: "import type x from './foo'; import type y from './foo'",
+ ...parserConfig,
+ errors: [
+ {
+ line: 1,
+ column: 20,
+ message: "'./foo' imported multiple times.",
+ },
+ {
+ line: 1,
+ column: 48,
+ message: "'./foo' imported multiple times.",
+ },
+ ],
+ }),
+ test({
+ code: "import type x from './foo'; import type x from './foo'",
+ output: "import type x from './foo'; ",
+ ...parserConfig,
+ errors: [
+ {
+ line: 1,
+ column: 20,
+ message: "'./foo' imported multiple times.",
+ },
+ {
+ line: 1,
+ column: 48,
+ message: "'./foo' imported multiple times.",
+ },
+ ],
+ }),
+ test({
+ code: "import type {x} from './foo'; import type {y} from './foo'",
+ ...parserConfig,
+ output: `import type {x,y} from './foo'; `,
+ errors: [
+ {
+ line: 1,
+ column: 22,
+ message: "'./foo' imported multiple times.",
+ },
+ {
+ line: 1,
+ column: 52,
+ message: "'./foo' imported multiple times.",
+ },
+ ],
+ }),
+ ],
});
});
});