Skip to content

Commit

Permalink
undo changes from bad rebase
Browse files Browse the repository at this point in the history
  • Loading branch information
snewcomer committed Dec 5, 2022
1 parent 13cb791 commit 0ffe3cb
Showing 1 changed file with 96 additions and 221 deletions.
317 changes: 96 additions & 221 deletions 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';
Expand Down Expand Up @@ -424,28 +424,28 @@ import {x,y} from './foo'
import {
BULK_ACTIONS_ENABLED
} from '../constants';
const TestComponent = () => {
return <div>
</div>;
}
export default TestComponent;
`,
output: `
import {
DEFAULT_FILTER_KEYS,
BULK_DISABLED,
BULK_ACTIONS_ENABLED
} from '../constants';
import React from 'react';
const TestComponent = () => {
return <div>
</div>;
}
export default TestComponent;
`,
errors: ["'../constants' imported multiple times.", "'../constants' imported multiple times."],
Expand All @@ -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.",
},
],
}),
],
});
});
});

0 comments on commit 0ffe3cb

Please sign in to comment.