@@ -3,6 +3,8 @@ import { type MapDeclarationOption, type NumberDeclarationOption, Option } from
33import { deepStrictEqual as equal , throws } from "assert" ;
44import type { DeclarationOption , EmitStrategy } from "../../../lib/utils/options/index.js" ;
55import { LogLevel } from "#utils" ;
6+ import { TestLogger } from "../../TestLogger.js" ;
7+ import ts from "typescript" ;
68
79describe ( "Options" , ( ) => {
810 let options : Options & {
@@ -180,6 +182,32 @@ describe("Options", () => {
180182
181183 throws ( ( ) => options . reset ( "thisOptionDoesNotExist" as never ) ) ;
182184 } ) ;
185+
186+ it ( "Handles tsconfig overrides which aren't strings, #3000" , ( ) => {
187+ const logger = new TestLogger ( ) ;
188+ const options = new Options ( ) ;
189+
190+ options . setValue ( "compilerOptions" , {
191+ moduleResolution : "bundler" ,
192+ } ) ;
193+
194+ const compilerOptions = options . getCompilerOptions ( logger ) ;
195+ equal ( compilerOptions . moduleResolution , ts . ModuleResolutionKind . Bundler ) ;
196+ } ) ;
197+
198+ it ( "Handles tsconfig overrides which are invalid, #3000" , ( ) => {
199+ const logger = new TestLogger ( ) ;
200+ const options = new Options ( ) ;
201+
202+ options . setValue ( "compilerOptions" , {
203+ moduleResolution : "bad" ,
204+ } ) ;
205+
206+ const compilerOptions = options . getCompilerOptions ( logger ) ;
207+ equal ( compilerOptions . moduleResolution , undefined ) ;
208+
209+ logger . expectMessage ( "error: Failed to apply compilerOptions overrides: *" ) ;
210+ } ) ;
183211} ) ;
184212
185213describe ( "Option" , ( ) => {
0 commit comments