From 6159ce9fb25c64526f89befa082d704e64796e68 Mon Sep 17 00:00:00 2001 From: Jordan Harband Date: Sat, 30 May 2020 20:00:10 -0700 Subject: [PATCH] [Tests] `no-extraneous-dependencies`: avoid hardcoded test cases for deps In particular, this removes test cases that only pass accidentally due to node_modules' structure, which should help fix tests on Windows. --- package.json | 1 + tests/src/rules/no-extraneous-dependencies.js | 28 +++++++++++-------- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index 90596b292..b9faf9e51 100644 --- a/package.json +++ b/package.json @@ -56,6 +56,7 @@ "@eslint/import-test-order-redirect-scoped": "file:./tests/files/order-redirect-scoped", "@test-scope/some-module": "file:./tests/files/symlinked-module", "@typescript-eslint/parser": "^2.23.0", + "array.prototype.flatmap": "^1.2.3", "babel-cli": "^6.26.0", "babel-core": "^6.26.3", "babel-eslint": "^8.2.6", diff --git a/tests/src/rules/no-extraneous-dependencies.js b/tests/src/rules/no-extraneous-dependencies.js index a9540e51e..97279d853 100644 --- a/tests/src/rules/no-extraneous-dependencies.js +++ b/tests/src/rules/no-extraneous-dependencies.js @@ -3,8 +3,10 @@ import * as path from 'path' import * as fs from 'fs' import { RuleTester } from 'eslint' +import flatMap from 'array.prototype.flatmap' + const ruleTester = new RuleTester() - , rule = require('rules/no-extraneous-dependencies') +const rule = require('rules/no-extraneous-dependencies') const packageDirWithSyntaxError = path.join(__dirname, '../../files/with-syntax-error') const packageFileWithSyntaxErrorMessage = (() => { @@ -22,21 +24,25 @@ const packageDirBundleDeps = path.join(__dirname, '../../files/bundled-dependenc const packageDirBundledDepsAsObject = path.join(__dirname, '../../files/bundled-dependencies/as-object') const packageDirBundledDepsRaceCondition = path.join(__dirname, '../../files/bundled-dependencies/race-condition') +const { + dependencies: deps, + devDependencies: devDeps, +} = require('../../files/package.json') + ruleTester.run('no-extraneous-dependencies', rule, { valid: [ - test({ code: 'import "lodash.cond"'}), - test({ code: 'import "pkg-up"'}), - test({ code: 'import foo, { bar } from "lodash.cond"'}), - test({ code: 'import foo, { bar } from "pkg-up"'}), + ...flatMap(Object.keys(deps).concat(Object.keys(devDeps)), (pkg) => [ + test({ code: `import "${pkg}"` }), + test({ code: `import foo, { bar } from "${pkg}"` }), + test({ code: `require("${pkg}")` }), + test({ code: `var foo = require("${pkg}")` }), + test({ code: `export { foo } from "${pkg}"` }), + test({ code: `export * from "${pkg}"` }), + ]), test({ code: 'import "eslint"'}), test({ code: 'import "eslint/lib/api"'}), - test({ code: 'require("lodash.cond")'}), - test({ code: 'require("pkg-up")'}), - test({ code: 'var foo = require("lodash.cond")'}), - test({ code: 'var foo = require("pkg-up")'}), test({ code: 'import "fs"'}), test({ code: 'import "./foo"'}), - test({ code: 'import "lodash.isarray"'}), test({ code: 'import "@org/package"'}), test({ code: 'import "electron"', settings: { 'import/core-modules': ['electron'] } }), @@ -113,8 +119,6 @@ ruleTester.run('no-extraneous-dependencies', rule, { code: 'import foo from "@generated/foo"', options: [{packageDir: packageDirBundledDepsRaceCondition}], }), - test({ code: 'export { foo } from "lodash.cond"' }), - test({ code: 'export * from "lodash.cond"' }), test({ code: 'export function getToken() {}' }), test({ code: 'export class Component extends React.Component {}' }), test({ code: 'export function Component() {}' }),