diff --git a/packages/utils/src/eslint-utils/rule-tester/RuleTester.ts b/packages/utils/src/eslint-utils/rule-tester/RuleTester.ts index 38a412448567..7d21d51d92fc 100644 --- a/packages/utils/src/eslint-utils/rule-tester/RuleTester.ts +++ b/packages/utils/src/eslint-utils/rule-tester/RuleTester.ts @@ -4,6 +4,7 @@ import * as path from 'path'; import * as semver from 'semver'; import * as TSESLint from '../../ts-eslint'; +import { deepMerge } from '../deepMerge'; import type { DependencyConstraint } from './dependencyConstraints'; import { satisfiesAllDependencyConstraints } from './dependencyConstraints'; @@ -84,18 +85,19 @@ class RuleTester extends TSESLint.RuleTester { }); } private getFilename(testOptions?: TSESLint.ParserOptions): string { - const filename = `file.ts${testOptions?.ecmaFeatures?.jsx ? 'x' : ''}`; - if (testOptions?.project) { + const resolvedOptions = deepMerge( + this.#baseOptions.parserOptions, + testOptions, + ) as TSESLint.ParserOptions; + const filename = `file.ts${resolvedOptions.ecmaFeatures?.jsx ? 'x' : ''}`; + if (resolvedOptions.project) { return path.join( - testOptions.tsconfigRootDir != null - ? testOptions.tsconfigRootDir + resolvedOptions.tsconfigRootDir != null + ? resolvedOptions.tsconfigRootDir : process.cwd(), filename, ); - } else if (this.#baseOptions.parserOptions?.project) { - return this.getFilename(this.#baseOptions.parserOptions); } - return filename; }