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 4a8b191
Show file tree
Hide file tree
Showing 7 changed files with 116 additions and 106 deletions.
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 4a8b191

Please sign in to comment.