From a069dd8d0913062ccbe73d9f863140560991b8a1 Mon Sep 17 00:00:00 2001 From: Brad Zacher Date: Thu, 6 Oct 2022 19:10:56 +1030 Subject: [PATCH] fix option merging --- .../src/eslint-utils/rule-tester/RuleTester.ts | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) 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; }