Skip to content

Commit

Permalink
[Tests] no-cycle: Restructure test files
Browse files Browse the repository at this point in the history
  • Loading branch information
soryy708 authored and ljharb committed Oct 24, 2019
1 parent b743a65 commit 429f3f6
Show file tree
Hide file tree
Showing 8 changed files with 122 additions and 109 deletions.
9 changes: 6 additions & 3 deletions CHANGELOG.md
Expand Up @@ -20,9 +20,10 @@ This change log adheres to standards from [Keep a CHANGELOG](http://keepachangel
- [`extensions`]/`importType`: fix isScoped treating @/abc as scoped module ([#2146], thanks [@rperello])

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

## [2.23.4] - 2021-05-29

Expand Down Expand Up @@ -909,6 +910,7 @@ for info on changes for earlier releases.
[#1526]: https://github.com/benmosher/eslint-plugin-import/pull/1526
[#1521]: https://github.com/benmosher/eslint-plugin-import/pull/1521
[#1519]: https://github.com/benmosher/eslint-plugin-import/pull/1519
[#1517]: https://github.com/benmosher/eslint-plugin-import/pull/1517
[#1507]: https://github.com/benmosher/eslint-plugin-import/pull/1507
[#1506]: https://github.com/benmosher/eslint-plugin-import/pull/1506
[#1496]: https://github.com/benmosher/eslint-plugin-import/pull/1496
Expand Down Expand Up @@ -1421,6 +1423,7 @@ for info on changes for earlier releases.
[@skozin]: https://github.com/skozin
[@skyrpex]: https://github.com/skyrpex
[@sompylasar]: https://github.com/sompylasar
[@soryy708]: https://github.com/soryy708
[@spalger]: https://github.com/spalger
[@st-sloth]: https://github.com/st-sloth
[@stekycz]: https://github.com/stekycz
Expand Down
2 changes: 0 additions & 2 deletions tests/files/cycles/depth-one.js

This file was deleted.

2 changes: 2 additions & 0 deletions tests/files/cycles/es6/depth-one.js
@@ -0,0 +1,2 @@
import foo from "../depth-zero"
export { foo }
File renamed without changes.
File renamed without changes.
File renamed without changes.
2 changes: 1 addition & 1 deletion tests/files/cycles/flow-types-depth-two.js
@@ -1 +1 @@
import { foo } from './depth-one'
import { foo } from './es6/depth-one'
216 changes: 113 additions & 103 deletions tests/src/rules/no-cycle.js
@@ -1,6 +1,7 @@
import { test as _test, testFilePath } from '../utils';

import { RuleTester } from 'eslint';
import flatMap from 'array.prototype.flatmap';

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

// describe.only("no-cycle", () => {
const testDialects = ['es6'];

ruleTester.run('no-cycle', rule, {
valid: [
valid: [].concat(
// this rule doesn't care if the cycle length is 0
test({ code: 'import foo from "./foo.js"' }),

Expand All @@ -32,14 +34,6 @@ ruleTester.run('no-cycle', rule, {
code: 'var bar = require("./bar")',
filename: '<text>',
}),
test({
code: 'import { foo } from "./depth-two"',
options: [{ maxDepth: 1 }],
}),
test({
code: 'import { foo, bar } from "./depth-two"',
options: [{ maxDepth: 1 }],
}),
test({
code: 'import { foo } from "cycles/external/depth-one"',
options: [{ ignoreExternal: true }],
Expand All @@ -56,19 +50,31 @@ ruleTester.run('no-cycle', rule, {
'import/external-module-folders': ['cycles/external'],
},
}),
test({
code: 'import("./depth-two").then(function({ foo }){})',
options: [{ maxDepth: 1 }],
parser: require.resolve('babel-eslint'),
}),
test({
code: 'import type { FooType } from "./depth-one"',
parser: require.resolve('babel-eslint'),
}),
test({
code: 'import type { FooType, BarType } from "./depth-one"',
parser: require.resolve('babel-eslint'),
}),

flatMap(testDialects, (testDialect) => [
test({
code: `import { foo } from "./${testDialect}/depth-two"`,
options: [{ maxDepth: 1 }],
}),
test({
code: `import { foo, bar } from "./${testDialect}/depth-two"`,
options: [{ maxDepth: 1 }],
}),
test({
code: `import("./${testDialect}/depth-two").then(function({ foo }){})`,
options: [{ maxDepth: 1 }],
parser: require.resolve('babel-eslint'),
}),
test({
code: `import type { FooType } from "./${testDialect}/depth-one"`,
parser: require.resolve('babel-eslint'),
}),
test({
code: `import type { FooType, BarType } from "./${testDialect}/depth-one"`,
parser: require.resolve('babel-eslint'),
}),
]),

test({
code: 'import { bar } from "./flow-types"',
parser: require.resolve('babel-eslint'),
Expand All @@ -81,12 +87,9 @@ ruleTester.run('no-cycle', rule, {
code: 'import { bar } from "./flow-types-only-importing-multiple-types"',
parser: require.resolve('babel-eslint'),
}),
],
invalid: [
test({
code: 'import { foo } from "./depth-one"',
errors: [error(`Dependency cycle detected.`)],
}),
),

invalid: [].concat(
test({
code: 'import { bar } from "./flow-types-some-type-imports"',
parser: require.resolve('babel-eslint'),
Expand All @@ -108,82 +111,89 @@ ruleTester.run('no-cycle', rule, {
'import/external-module-folders': ['cycles/external'],
},
}),
test({
code: 'import { foo } from "./depth-one"',
options: [{ maxDepth: 1 }],
errors: [error(`Dependency cycle detected.`)],
}),
test({
code: 'const { foo } = require("./depth-one")',
errors: [error(`Dependency cycle detected.`)],
options: [{ commonjs: true }],
}),
test({
code: 'require(["./depth-one"], d1 => {})',
errors: [error(`Dependency cycle detected.`)],
options: [{ amd: true }],
}),
test({
code: 'define(["./depth-one"], d1 => {})',
errors: [error(`Dependency cycle detected.`)],
options: [{ amd: true }],
}),
test({
code: 'import { foo } from "./depth-two"',
errors: [error(`Dependency cycle via ./depth-one:1`)],
}),
test({
code: 'import { foo } from "./depth-two"',
options: [{ maxDepth: 2 }],
errors: [error(`Dependency cycle via ./depth-one:1`)],
}),
test({
code: 'const { foo } = require("./depth-two")',
errors: [error(`Dependency cycle via ./depth-one:1`)],
options: [{ commonjs: true }],
}),
test({
code: 'import { two } from "./depth-three-star"',
errors: [error(`Dependency cycle via ./depth-two:1=>./depth-one:1`)],
}),
test({
code: 'import one, { two, three } from "./depth-three-star"',
errors: [error(`Dependency cycle via ./depth-two:1=>./depth-one:1`)],
}),
test({
code: 'import { bar } from "./depth-three-indirect"',
errors: [error(`Dependency cycle via ./depth-two:1=>./depth-one:1`)],
}),
test({
code: 'import { bar } from "./depth-three-indirect"',
errors: [error(`Dependency cycle via ./depth-two:1=>./depth-one:1`)],
parser: require.resolve('babel-eslint'),
}),
test({
code: 'import("./depth-three-star")',
errors: [error(`Dependency cycle via ./depth-two:1=>./depth-one:1`)],
parser: require.resolve('babel-eslint'),
}),
test({
code: 'import("./depth-three-indirect")',
errors: [error(`Dependency cycle via ./depth-two:1=>./depth-one:1`)],
parser: require.resolve('babel-eslint'),
}),

flatMap(testDialects, (testDialect) => [
test({
code: `import { foo } from "./${testDialect}/depth-one"`,
errors: [error(`Dependency cycle detected.`)],
}),
test({
code: `import { foo } from "./${testDialect}/depth-one"`,
options: [{ maxDepth: 1 }],
errors: [error(`Dependency cycle detected.`)],
}),
test({
code: `const { foo } = require("./${testDialect}/depth-one")`,
errors: [error(`Dependency cycle detected.`)],
options: [{ commonjs: true }],
}),
test({
code: `require(["./${testDialect}/depth-one"], d1 => {})`,
errors: [error(`Dependency cycle detected.`)],
options: [{ amd: true }],
}),
test({
code: `define(["./${testDialect}/depth-one"], d1 => {})`,
errors: [error(`Dependency cycle detected.`)],
options: [{ amd: true }],
}),
test({
code: `import { foo } from "./${testDialect}/depth-two"`,
errors: [error(`Dependency cycle via ./depth-one:1`)],
}),
test({
code: `import { foo } from "./${testDialect}/depth-two"`,
options: [{ maxDepth: 2 }],
errors: [error(`Dependency cycle via ./depth-one:1`)],
}),
test({
code: `const { foo } = require("./${testDialect}/depth-two")`,
errors: [error(`Dependency cycle via ./depth-one:1`)],
options: [{ commonjs: true }],
}),
test({
code: `import { two } from "./${testDialect}/depth-three-star"`,
errors: [error(`Dependency cycle via ./depth-two:1=>./depth-one:1`)],
}),
test({
code: `import one, { two, three } from "./${testDialect}/depth-three-star"`,
errors: [error(`Dependency cycle via ./depth-two:1=>./depth-one:1`)],
}),
test({
code: `import { bar } from "./${testDialect}/depth-three-indirect"`,
errors: [error(`Dependency cycle via ./depth-two:1=>./depth-one:1`)],
}),
test({
code: `import { bar } from "./${testDialect}/depth-three-indirect"`,
errors: [error(`Dependency cycle via ./depth-two:1=>./depth-one:1`)],
parser: require.resolve('babel-eslint'),
}),
test({
code: `import("./${testDialect}/depth-three-star")`,
errors: [error(`Dependency cycle via ./depth-two:1=>./depth-one:1`)],
parser: require.resolve('babel-eslint'),
}),
test({
code: `import("./${testDialect}/depth-three-indirect")`,
errors: [error(`Dependency cycle via ./depth-two:1=>./depth-one:1`)],
parser: require.resolve('babel-eslint'),
}),
test({
code: `import { foo } from "./${testDialect}/depth-two"`,
options: [{ maxDepth: Infinity }],
errors: [error(`Dependency cycle via ./depth-one:1`)],
}),
test({
code: `import { foo } from "./${testDialect}/depth-two"`,
options: [{ maxDepth: '∞' }],
errors: [error(`Dependency cycle via ./depth-one:1`)],
}),
]),

test({
code: 'import { bar } from "./flow-types-depth-one"',
parser: require.resolve('babel-eslint'),
errors: [error(`Dependency cycle via ./flow-types-depth-two:4=>./depth-one:1`)],
}),
test({
code: 'import { foo } from "./depth-two"',
options: [{ maxDepth: Infinity }],
errors: [error(`Dependency cycle via ./depth-one:1`)],
}),
test({
code: 'import { foo } from "./depth-two"',
options: [{ maxDepth: '∞' }],
errors: [error(`Dependency cycle via ./depth-one:1`)],
errors: [error(`Dependency cycle via ./flow-types-depth-two:4=>./es6/depth-one:1`)],
}),
],
),
});
// })

0 comments on commit 429f3f6

Please sign in to comment.