Path: blob/main/tests/src/rules/max-dependencies.js
829 views
import { test, getTSParsers } from '../utils';12import { RuleTester } from 'eslint';34const ruleTester = new RuleTester();5const rule = require('rules/max-dependencies');67ruleTester.run('max-dependencies', rule, {8valid: [9test({ code: 'import "./foo.js"' }),1011test({ code: 'import "./foo.js"; import "./bar.js";',12options: [{13max: 2,14}],15}),1617test({ code: 'import "./foo.js"; import "./bar.js"; const a = require("./foo.js"); const b = require("./bar.js");',18options: [{19max: 2,20}],21}),2223test({ code: 'import {x, y, z} from "./foo"' }),24],25invalid: [26test({27code: 'import { x } from \'./foo\'; import { y } from \'./foo\'; import {z} from \'./bar\';',28options: [{29max: 1,30}],31errors: [32'Maximum number of dependencies (1) exceeded.',33],34}),3536test({37code: 'import { x } from \'./foo\'; import { y } from \'./bar\'; import { z } from \'./baz\';',38options: [{39max: 2,40}],41errors: [42'Maximum number of dependencies (2) exceeded.',43],44}),4546test({47code: 'import { x } from \'./foo\'; require("./bar"); import { z } from \'./baz\';',48options: [{49max: 2,50}],51errors: [52'Maximum number of dependencies (2) exceeded.',53],54}),5556test({57code: 'import { x } from \'./foo\'; import { z } from \'./foo\'; require("./bar"); const path = require("path");',58options: [{59max: 2,60}],61errors: [62'Maximum number of dependencies (2) exceeded.',63],64}),6566test({67code: 'import type { x } from \'./foo\'; import type { y } from \'./bar\'',68parser: require.resolve('babel-eslint'),69options: [{70max: 1,71}],72errors: [73'Maximum number of dependencies (1) exceeded.',74],75}),7677test({78code: 'import type { x } from \'./foo\'; import type { y } from \'./bar\'; import type { z } from \'./baz\'',79parser: require.resolve('babel-eslint'),80options: [{81max: 2,82ignoreTypeImports: false,83}],84errors: [85'Maximum number of dependencies (2) exceeded.',86],87}),88],89});9091describe('TypeScript', () => {92getTSParsers()93// Type-only imports were added in TypeScript ESTree 2.23.094.filter((parser) => parser !== require.resolve('typescript-eslint-parser'))95.forEach((parser) => {96ruleTester.run(`max-dependencies (${parser.replace(process.cwd(), '.')})`, rule, {97valid: [98test({99code: 'import type { x } from \'./foo\'; import { y } from \'./bar\';',100parser,101options: [{102max: 1,103ignoreTypeImports: true,104}],105}),106],107invalid: [108test({109code: 'import type { x } from \'./foo\'; import type { y } from \'./bar\'',110parser,111options: [{112max: 1,113}],114errors: [115'Maximum number of dependencies (1) exceeded.',116],117}),118119test({120code: 'import type { x } from \'./foo\'; import type { y } from \'./bar\'; import type { z } from \'./baz\'',121parser,122options: [{123max: 2,124ignoreTypeImports: false,125}],126errors: [127'Maximum number of dependencies (2) exceeded.',128],129}),130],131});132});133});134135136