@@ -3,6 +3,8 @@ import { type MapDeclarationOption, type NumberDeclarationOption, Option } from
3
3
import { deepStrictEqual as equal , throws } from "assert" ;
4
4
import type { DeclarationOption , EmitStrategy } from "../../../lib/utils/options/index.js" ;
5
5
import { LogLevel } from "#utils" ;
6
+ import { TestLogger } from "../../TestLogger.js" ;
7
+ import ts from "typescript" ;
6
8
7
9
describe ( "Options" , ( ) => {
8
10
let options : Options & {
@@ -180,6 +182,32 @@ describe("Options", () => {
180
182
181
183
throws ( ( ) => options . reset ( "thisOptionDoesNotExist" as never ) ) ;
182
184
} ) ;
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
+ } ) ;
183
211
} ) ;
184
212
185
213
describe ( "Option" , ( ) => {
0 commit comments