Skip to content

Commit 429f3f6

Browse files
soryy708ljharb
authored andcommittedOct 24, 2019
[Tests] no-cycle: Restructure test files
1 parent b743a65 commit 429f3f6

8 files changed

+122
-109
lines changed
 

‎CHANGELOG.md

+6-3
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,10 @@ This change log adheres to standards from [Keep a CHANGELOG](http://keepachangel
2020
- [`extensions`]/`importType`: fix isScoped treating @/abc as scoped module ([#2146], thanks [@rperello])
2121

2222
### Changed
23-
- [Docs] `extensions`: removed incorrect cases ([#2138], thanks [@wenfangdu])
24-
- [Tests] `order`: add tests for `pathGroupsExcludedImportTypes: ['type']` ([#2158], thanks [@atav32])
25-
- [Docs] `order`: improve the documentation for the `pathGroupsExcludedImportTypes` option ([#2156], thanks [@liby])
23+
- [Docs] [`extensions`]: removed incorrect cases ([#2138], thanks [@wenfangdu])
24+
- [Tests] [`order`]: add tests for `pathGroupsExcludedImportTypes: ['type']` ([#2158], thanks [@atav32])
25+
- [Docs] [`order`]: improve the documentation for the `pathGroupsExcludedImportTypes` option ([#2156], thanks [@liby])
26+
- [Tests] [`no-cycle`]: Restructure test files ([#1517], thanks [@soryy708])
2627

2728
## [2.23.4] - 2021-05-29
2829

@@ -909,6 +910,7 @@ for info on changes for earlier releases.
909910
[#1526]: https://github.com/benmosher/eslint-plugin-import/pull/1526
910911
[#1521]: https://github.com/benmosher/eslint-plugin-import/pull/1521
911912
[#1519]: https://github.com/benmosher/eslint-plugin-import/pull/1519
913+
[#1517]: https://github.com/benmosher/eslint-plugin-import/pull/1517
912914
[#1507]: https://github.com/benmosher/eslint-plugin-import/pull/1507
913915
[#1506]: https://github.com/benmosher/eslint-plugin-import/pull/1506
914916
[#1496]: https://github.com/benmosher/eslint-plugin-import/pull/1496
@@ -1421,6 +1423,7 @@ for info on changes for earlier releases.
14211423
[@skozin]: https://github.com/skozin
14221424
[@skyrpex]: https://github.com/skyrpex
14231425
[@sompylasar]: https://github.com/sompylasar
1426+
[@soryy708]: https://github.com/soryy708
14241427
[@spalger]: https://github.com/spalger
14251428
[@st-sloth]: https://github.com/st-sloth
14261429
[@stekycz]: https://github.com/stekycz

‎tests/files/cycles/depth-one.js

-2
This file was deleted.

‎tests/files/cycles/es6/depth-one.js

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
import foo from "../depth-zero"
2+
export { foo }
File renamed without changes.
+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
import { foo } from './depth-one'
1+
import { foo } from './es6/depth-one'

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

+113-103
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { test as _test, testFilePath } from '../utils';
22

33
import { RuleTester } from 'eslint';
4+
import flatMap from 'array.prototype.flatmap';
45

56
const ruleTester = new RuleTester();
67
const rule = require('rules/no-cycle');
@@ -11,9 +12,10 @@ const test = def => _test(Object.assign(def, {
1112
filename: testFilePath('./cycles/depth-zero.js'),
1213
}));
1314

14-
// describe.only("no-cycle", () => {
15+
const testDialects = ['es6'];
16+
1517
ruleTester.run('no-cycle', rule, {
16-
valid: [
18+
valid: [].concat(
1719
// this rule doesn't care if the cycle length is 0
1820
test({ code: 'import foo from "./foo.js"' }),
1921

@@ -32,14 +34,6 @@ ruleTester.run('no-cycle', rule, {
3234
code: 'var bar = require("./bar")',
3335
filename: '<text>',
3436
}),
35-
test({
36-
code: 'import { foo } from "./depth-two"',
37-
options: [{ maxDepth: 1 }],
38-
}),
39-
test({
40-
code: 'import { foo, bar } from "./depth-two"',
41-
options: [{ maxDepth: 1 }],
42-
}),
4337
test({
4438
code: 'import { foo } from "cycles/external/depth-one"',
4539
options: [{ ignoreExternal: true }],
@@ -56,19 +50,31 @@ ruleTester.run('no-cycle', rule, {
5650
'import/external-module-folders': ['cycles/external'],
5751
},
5852
}),
59-
test({
60-
code: 'import("./depth-two").then(function({ foo }){})',
61-
options: [{ maxDepth: 1 }],
62-
parser: require.resolve('babel-eslint'),
63-
}),
64-
test({
65-
code: 'import type { FooType } from "./depth-one"',
66-
parser: require.resolve('babel-eslint'),
67-
}),
68-
test({
69-
code: 'import type { FooType, BarType } from "./depth-one"',
70-
parser: require.resolve('babel-eslint'),
71-
}),
53+
54+
flatMap(testDialects, (testDialect) => [
55+
test({
56+
code: `import { foo } from "./${testDialect}/depth-two"`,
57+
options: [{ maxDepth: 1 }],
58+
}),
59+
test({
60+
code: `import { foo, bar } from "./${testDialect}/depth-two"`,
61+
options: [{ maxDepth: 1 }],
62+
}),
63+
test({
64+
code: `import("./${testDialect}/depth-two").then(function({ foo }){})`,
65+
options: [{ maxDepth: 1 }],
66+
parser: require.resolve('babel-eslint'),
67+
}),
68+
test({
69+
code: `import type { FooType } from "./${testDialect}/depth-one"`,
70+
parser: require.resolve('babel-eslint'),
71+
}),
72+
test({
73+
code: `import type { FooType, BarType } from "./${testDialect}/depth-one"`,
74+
parser: require.resolve('babel-eslint'),
75+
}),
76+
]),
77+
7278
test({
7379
code: 'import { bar } from "./flow-types"',
7480
parser: require.resolve('babel-eslint'),
@@ -81,12 +87,9 @@ ruleTester.run('no-cycle', rule, {
8187
code: 'import { bar } from "./flow-types-only-importing-multiple-types"',
8288
parser: require.resolve('babel-eslint'),
8389
}),
84-
],
85-
invalid: [
86-
test({
87-
code: 'import { foo } from "./depth-one"',
88-
errors: [error(`Dependency cycle detected.`)],
89-
}),
90+
),
91+
92+
invalid: [].concat(
9093
test({
9194
code: 'import { bar } from "./flow-types-some-type-imports"',
9295
parser: require.resolve('babel-eslint'),
@@ -108,82 +111,89 @@ ruleTester.run('no-cycle', rule, {
108111
'import/external-module-folders': ['cycles/external'],
109112
},
110113
}),
111-
test({
112-
code: 'import { foo } from "./depth-one"',
113-
options: [{ maxDepth: 1 }],
114-
errors: [error(`Dependency cycle detected.`)],
115-
}),
116-
test({
117-
code: 'const { foo } = require("./depth-one")',
118-
errors: [error(`Dependency cycle detected.`)],
119-
options: [{ commonjs: true }],
120-
}),
121-
test({
122-
code: 'require(["./depth-one"], d1 => {})',
123-
errors: [error(`Dependency cycle detected.`)],
124-
options: [{ amd: true }],
125-
}),
126-
test({
127-
code: 'define(["./depth-one"], d1 => {})',
128-
errors: [error(`Dependency cycle detected.`)],
129-
options: [{ amd: true }],
130-
}),
131-
test({
132-
code: 'import { foo } from "./depth-two"',
133-
errors: [error(`Dependency cycle via ./depth-one:1`)],
134-
}),
135-
test({
136-
code: 'import { foo } from "./depth-two"',
137-
options: [{ maxDepth: 2 }],
138-
errors: [error(`Dependency cycle via ./depth-one:1`)],
139-
}),
140-
test({
141-
code: 'const { foo } = require("./depth-two")',
142-
errors: [error(`Dependency cycle via ./depth-one:1`)],
143-
options: [{ commonjs: true }],
144-
}),
145-
test({
146-
code: 'import { two } from "./depth-three-star"',
147-
errors: [error(`Dependency cycle via ./depth-two:1=>./depth-one:1`)],
148-
}),
149-
test({
150-
code: 'import one, { two, three } from "./depth-three-star"',
151-
errors: [error(`Dependency cycle via ./depth-two:1=>./depth-one:1`)],
152-
}),
153-
test({
154-
code: 'import { bar } from "./depth-three-indirect"',
155-
errors: [error(`Dependency cycle via ./depth-two:1=>./depth-one:1`)],
156-
}),
157-
test({
158-
code: 'import { bar } from "./depth-three-indirect"',
159-
errors: [error(`Dependency cycle via ./depth-two:1=>./depth-one:1`)],
160-
parser: require.resolve('babel-eslint'),
161-
}),
162-
test({
163-
code: 'import("./depth-three-star")',
164-
errors: [error(`Dependency cycle via ./depth-two:1=>./depth-one:1`)],
165-
parser: require.resolve('babel-eslint'),
166-
}),
167-
test({
168-
code: 'import("./depth-three-indirect")',
169-
errors: [error(`Dependency cycle via ./depth-two:1=>./depth-one:1`)],
170-
parser: require.resolve('babel-eslint'),
171-
}),
114+
115+
flatMap(testDialects, (testDialect) => [
116+
test({
117+
code: `import { foo } from "./${testDialect}/depth-one"`,
118+
errors: [error(`Dependency cycle detected.`)],
119+
}),
120+
test({
121+
code: `import { foo } from "./${testDialect}/depth-one"`,
122+
options: [{ maxDepth: 1 }],
123+
errors: [error(`Dependency cycle detected.`)],
124+
}),
125+
test({
126+
code: `const { foo } = require("./${testDialect}/depth-one")`,
127+
errors: [error(`Dependency cycle detected.`)],
128+
options: [{ commonjs: true }],
129+
}),
130+
test({
131+
code: `require(["./${testDialect}/depth-one"], d1 => {})`,
132+
errors: [error(`Dependency cycle detected.`)],
133+
options: [{ amd: true }],
134+
}),
135+
test({
136+
code: `define(["./${testDialect}/depth-one"], d1 => {})`,
137+
errors: [error(`Dependency cycle detected.`)],
138+
options: [{ amd: true }],
139+
}),
140+
test({
141+
code: `import { foo } from "./${testDialect}/depth-two"`,
142+
errors: [error(`Dependency cycle via ./depth-one:1`)],
143+
}),
144+
test({
145+
code: `import { foo } from "./${testDialect}/depth-two"`,
146+
options: [{ maxDepth: 2 }],
147+
errors: [error(`Dependency cycle via ./depth-one:1`)],
148+
}),
149+
test({
150+
code: `const { foo } = require("./${testDialect}/depth-two")`,
151+
errors: [error(`Dependency cycle via ./depth-one:1`)],
152+
options: [{ commonjs: true }],
153+
}),
154+
test({
155+
code: `import { two } from "./${testDialect}/depth-three-star"`,
156+
errors: [error(`Dependency cycle via ./depth-two:1=>./depth-one:1`)],
157+
}),
158+
test({
159+
code: `import one, { two, three } from "./${testDialect}/depth-three-star"`,
160+
errors: [error(`Dependency cycle via ./depth-two:1=>./depth-one:1`)],
161+
}),
162+
test({
163+
code: `import { bar } from "./${testDialect}/depth-three-indirect"`,
164+
errors: [error(`Dependency cycle via ./depth-two:1=>./depth-one:1`)],
165+
}),
166+
test({
167+
code: `import { bar } from "./${testDialect}/depth-three-indirect"`,
168+
errors: [error(`Dependency cycle via ./depth-two:1=>./depth-one:1`)],
169+
parser: require.resolve('babel-eslint'),
170+
}),
171+
test({
172+
code: `import("./${testDialect}/depth-three-star")`,
173+
errors: [error(`Dependency cycle via ./depth-two:1=>./depth-one:1`)],
174+
parser: require.resolve('babel-eslint'),
175+
}),
176+
test({
177+
code: `import("./${testDialect}/depth-three-indirect")`,
178+
errors: [error(`Dependency cycle via ./depth-two:1=>./depth-one:1`)],
179+
parser: require.resolve('babel-eslint'),
180+
}),
181+
test({
182+
code: `import { foo } from "./${testDialect}/depth-two"`,
183+
options: [{ maxDepth: Infinity }],
184+
errors: [error(`Dependency cycle via ./depth-one:1`)],
185+
}),
186+
test({
187+
code: `import { foo } from "./${testDialect}/depth-two"`,
188+
options: [{ maxDepth: '∞' }],
189+
errors: [error(`Dependency cycle via ./depth-one:1`)],
190+
}),
191+
]),
192+
172193
test({
173194
code: 'import { bar } from "./flow-types-depth-one"',
174195
parser: require.resolve('babel-eslint'),
175-
errors: [error(`Dependency cycle via ./flow-types-depth-two:4=>./depth-one:1`)],
176-
}),
177-
test({
178-
code: 'import { foo } from "./depth-two"',
179-
options: [{ maxDepth: Infinity }],
180-
errors: [error(`Dependency cycle via ./depth-one:1`)],
181-
}),
182-
test({
183-
code: 'import { foo } from "./depth-two"',
184-
options: [{ maxDepth: '∞' }],
185-
errors: [error(`Dependency cycle via ./depth-one:1`)],
196+
errors: [error(`Dependency cycle via ./flow-types-depth-two:4=>./es6/depth-one:1`)],
186197
}),
187-
],
198+
),
188199
});
189-
// })

0 commit comments

Comments
 (0)
Please sign in to comment.