From 000fd3f4a8a57311c5301d0de0fd6621f50fe607 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 6 Feb 2023 17:24:10 +0100 Subject: [PATCH] eslint-plugin: fix no-undeclared-imports test on windows Signed-off-by: Patrik Oldsberg --- .../src/no-undeclared-imports.test.ts | 142 ++++++++++++------ 1 file changed, 94 insertions(+), 48 deletions(-) diff --git a/packages/eslint-plugin/src/no-undeclared-imports.test.ts b/packages/eslint-plugin/src/no-undeclared-imports.test.ts index c156558e8d..1b5cbee853 100644 --- a/packages/eslint-plugin/src/no-undeclared-imports.test.ts +++ b/packages/eslint-plugin/src/no-undeclared-imports.test.ts @@ -15,11 +15,11 @@ */ import { RuleTester } from 'eslint'; -import path from 'path'; +import { join as joinPath } from 'path'; import rule from '../rules/no-undeclared-imports'; const RULE = 'no-undeclared-imports'; -const FIXTURE = path.resolve(__dirname, '__fixtures__/monorepo'); +const FIXTURE = joinPath(__dirname, '__fixtures__/monorepo'); const ERR_UNDECLARED = ( name: string, @@ -27,7 +27,10 @@ const ERR_UNDECLARED = ( path: string, flag?: string, ) => ({ - message: `${name} must be declared in ${field} of ${path}/package.json, run 'yarn --cwd ${path} add${ + message: `${name} must be declared in ${field} of ${joinPath( + path, + 'package.json', + )}, run 'yarn --cwd ${path} add${ flag ? ` ${flag}` : '' } ${name}' from the project root.`, }); @@ -37,7 +40,10 @@ const ERR_SWITCHED = ( field: string, path: string, ) => ({ - message: `${name} is declared in ${old}, but should be moved to ${field} in ${path}/package.json.`, + message: `${name} is declared in ${old}, but should be moved to ${field} in ${joinPath( + path, + 'package.json', + )}.`, }); process.chdir(FIXTURE); @@ -53,141 +59,181 @@ ruleTester.run(RULE, rule, { valid: [ { code: `import '@internal/foo'`, - filename: path.join(FIXTURE, 'packages/foo/src/index.ts'), + filename: joinPath(FIXTURE, 'packages/foo/src/index.ts'), }, { code: `import '@internal/bar'`, - filename: path.join(FIXTURE, 'packages/foo/src/index.ts'), + filename: joinPath(FIXTURE, 'packages/foo/src/index.ts'), }, { code: `import 'react'`, - filename: path.join(FIXTURE, 'packages/foo/src/index.ts'), + filename: joinPath(FIXTURE, 'packages/foo/src/index.ts'), }, { code: `import '@internal/foo'`, - filename: path.join(FIXTURE, 'packages/foo/src/index.test.ts'), + filename: joinPath(FIXTURE, 'packages/foo/src/index.test.ts'), }, { code: `import '@internal/bar'`, - filename: path.join(FIXTURE, 'packages/foo/src/index.test.ts'), + filename: joinPath(FIXTURE, 'packages/foo/src/index.test.ts'), }, { code: `import 'lodash'`, - filename: path.join(FIXTURE, 'packages/foo/src/index.test.ts'), + filename: joinPath(FIXTURE, 'packages/foo/src/index.test.ts'), }, { code: `import 'react'`, - filename: path.join(FIXTURE, 'packages/foo/src/index.test.ts'), + filename: joinPath(FIXTURE, 'packages/foo/src/index.test.ts'), }, { // We're only able to validate literals code: `require('lod' + 'ash')`, - filename: path.join(FIXTURE, 'packages/bar/src/index.ts'), + filename: joinPath(FIXTURE, 'packages/bar/src/index.ts'), }, ], invalid: [ { code: `import 'lodash'`, - filename: path.join(FIXTURE, 'packages/foo/src/index.ts'), + filename: joinPath(FIXTURE, 'packages/foo/src/index.ts'), errors: [ ERR_SWITCHED( 'lodash', 'devDependencies', 'dependencies', - 'packages/foo', + joinPath('packages', 'foo'), ), ], }, { code: `import 'react-router'`, - filename: path.join(FIXTURE, 'packages/bar/src/index.ts'), + filename: joinPath(FIXTURE, 'packages/bar/src/index.ts'), errors: [ ERR_SWITCHED( 'react-router', 'dependencies', 'peerDependencies', - 'packages/bar', + joinPath('packages', 'bar'), ), ], }, { code: `import 'react-router-dom'`, - filename: path.join(FIXTURE, 'packages/bar/src/index.ts'), + filename: joinPath(FIXTURE, 'packages/bar/src/index.ts'), errors: [ ERR_SWITCHED( 'react-router-dom', 'devDependencies', 'peerDependencies', - 'packages/bar', + joinPath('packages', 'bar'), ), ], }, { code: `import 'lodash'`, - filename: path.join(FIXTURE, 'packages/bar/src/index.ts'), - errors: [ERR_UNDECLARED('lodash', 'dependencies', 'packages/bar')], + filename: joinPath(FIXTURE, 'packages/bar/src/index.ts'), + errors: [ + ERR_UNDECLARED('lodash', 'dependencies', joinPath('packages', 'bar')), + ], }, { code: `import { debounce } from 'lodash'`, - filename: path.join(FIXTURE, 'packages/bar/src/index.ts'), - errors: [ERR_UNDECLARED('lodash', 'dependencies', 'packages/bar')], + filename: joinPath(FIXTURE, 'packages/bar/src/index.ts'), + errors: [ + ERR_UNDECLARED('lodash', 'dependencies', joinPath('packages', 'bar')), + ], }, { code: `import * as _ from 'lodash'`, - filename: path.join(FIXTURE, 'packages/bar/src/index.ts'), - errors: [ERR_UNDECLARED('lodash', 'dependencies', 'packages/bar')], + filename: joinPath(FIXTURE, 'packages/bar/src/index.ts'), + errors: [ + ERR_UNDECLARED('lodash', 'dependencies', joinPath('packages', 'bar')), + ], }, { code: `import _ from 'lodash'`, - filename: path.join(FIXTURE, 'packages/bar/src/index.ts'), - errors: [ERR_UNDECLARED('lodash', 'dependencies', 'packages/bar')], + filename: joinPath(FIXTURE, 'packages/bar/src/index.ts'), + errors: [ + ERR_UNDECLARED('lodash', 'dependencies', joinPath('packages', 'bar')), + ], }, { code: `import('lodash')`, - filename: path.join(FIXTURE, 'packages/bar/src/index.ts'), - errors: [ERR_UNDECLARED('lodash', 'dependencies', 'packages/bar')], + filename: joinPath(FIXTURE, 'packages/bar/src/index.ts'), + errors: [ + ERR_UNDECLARED('lodash', 'dependencies', joinPath('packages', 'bar')), + ], }, { code: `require('lodash')`, - filename: path.join(FIXTURE, 'packages/bar/src/index.ts'), - errors: [ERR_UNDECLARED('lodash', 'dependencies', 'packages/bar')], - }, - { - code: `import 'lodash'`, - filename: path.join(FIXTURE, 'packages/bar/src/index.ts'), - errors: [ERR_UNDECLARED('lodash', 'dependencies', 'packages/bar')], - }, - { - code: `import 'lodash'`, - filename: path.join(FIXTURE, 'packages/bar/src/index.test.ts'), + filename: joinPath(FIXTURE, 'packages/bar/src/index.ts'), errors: [ - ERR_UNDECLARED('lodash', 'devDependencies', 'packages/bar', '--dev'), + ERR_UNDECLARED('lodash', 'dependencies', joinPath('packages', 'bar')), + ], + }, + { + code: `import 'lodash'`, + filename: joinPath(FIXTURE, 'packages/bar/src/index.ts'), + errors: [ + ERR_UNDECLARED('lodash', 'dependencies', joinPath('packages', 'bar')), + ], + }, + { + code: `import 'lodash'`, + filename: joinPath(FIXTURE, 'packages/bar/src/index.test.ts'), + errors: [ + ERR_UNDECLARED( + 'lodash', + 'devDependencies', + joinPath('packages', 'bar'), + '--dev', + ), ], }, { code: `import 'react'`, - filename: path.join(FIXTURE, 'packages/bar/src/index.ts'), + filename: joinPath(FIXTURE, 'packages/bar/src/index.ts'), errors: [ - ERR_UNDECLARED('react', 'peerDependencies', 'packages/bar', '--peer'), + ERR_UNDECLARED( + 'react', + 'peerDependencies', + joinPath('packages', 'bar'), + '--peer', + ), ], }, { code: `import 'react'`, - filename: path.join(FIXTURE, 'packages/bar/src/index.test.ts'), + filename: joinPath(FIXTURE, 'packages/bar/src/index.test.ts'), errors: [ - ERR_UNDECLARED('react', 'peerDependencies', 'packages/bar', '--peer'), + ERR_UNDECLARED( + 'react', + 'peerDependencies', + joinPath('packages', 'bar'), + '--peer', + ), ], }, { code: `import 'react-dom'`, - filename: path.join(FIXTURE, 'packages/foo/src/index.ts'), - errors: [ERR_UNDECLARED('react-dom', 'dependencies', 'packages/foo')], + filename: joinPath(FIXTURE, 'packages/foo/src/index.ts'), + errors: [ + ERR_UNDECLARED( + 'react-dom', + 'dependencies', + joinPath('packages', 'foo'), + ), + ], }, { code: `import 'react-dom'`, - filename: path.join(FIXTURE, 'packages/foo/src/index.test.ts'), + filename: joinPath(FIXTURE, 'packages/foo/src/index.test.ts'), errors: [ - ERR_UNDECLARED('react-dom', 'devDependencies', 'packages/foo', '--dev'), + ERR_UNDECLARED( + 'react-dom', + 'devDependencies', + joinPath('packages', 'foo'), + '--dev', + ), ], }, ],