@@ -65,6 +65,16 @@ namespace ts {
65
65
"c:/dev/f.other"
66
66
] ) ;
67
67
68
+ const caseInsensitiveCommonFoldersHost = new Utils . MockParseConfigHost ( caseInsensitiveBasePath , /*useCaseSensitiveFileNames*/ false , [
69
+ "c:/dev/a.ts" ,
70
+ "c:/dev/a.d.ts" ,
71
+ "c:/dev/a.js" ,
72
+ "c:/dev/b.ts" ,
73
+ "c:/dev/node_modules/a.ts" ,
74
+ "c:/dev/bower_components/a.ts" ,
75
+ "c:/dev/jspm_packages/a.ts"
76
+ ] ) ;
77
+
68
78
describe ( "matchFiles" , ( ) => {
69
79
describe ( "with literal file list" , ( ) => {
70
80
it ( "without exclusions" , ( ) => {
@@ -297,6 +307,87 @@ namespace ts {
297
307
assert . deepEqual ( actual . wildcardDirectories , expected . wildcardDirectories ) ;
298
308
assert . deepEqual ( actual . errors , expected . errors ) ;
299
309
} ) ;
310
+ it ( "with common package folders and no exclusions" , ( ) => {
311
+ const json = {
312
+ include : [
313
+ "a.ts" ,
314
+ "b.ts" ,
315
+ "node_modules/a.ts" ,
316
+ "bower_components/a.ts" ,
317
+ "jspm_packages/a.ts"
318
+ ]
319
+ } ;
320
+ const expected : ts . ParsedCommandLine = {
321
+ options : { } ,
322
+ errors : [ ] ,
323
+ fileNames : [
324
+ "c:/dev/a.ts" ,
325
+ "c:/dev/b.ts"
326
+ ] ,
327
+ wildcardDirectories : { } ,
328
+ } ;
329
+ const actual = ts . parseJsonConfigFileContent ( json , caseInsensitiveCommonFoldersHost , caseInsensitiveBasePath ) ;
330
+ assert . deepEqual ( actual . fileNames , expected . fileNames ) ;
331
+ assert . deepEqual ( actual . wildcardDirectories , expected . wildcardDirectories ) ;
332
+ assert . deepEqual ( actual . errors , expected . errors ) ;
333
+ } ) ;
334
+ it ( "with common package folders and exclusions" , ( ) => {
335
+ const json = {
336
+ include : [
337
+ "a.ts" ,
338
+ "b.ts" ,
339
+ "node_modules/a.ts" ,
340
+ "bower_components/a.ts" ,
341
+ "jspm_packages/a.ts"
342
+ ] ,
343
+ exclude : [
344
+ "a.ts" ,
345
+ "b.ts"
346
+ ]
347
+ } ;
348
+ const expected : ts . ParsedCommandLine = {
349
+ options : { } ,
350
+ errors : [ ] ,
351
+ fileNames : [
352
+ "c:/dev/bower_components/a.ts" ,
353
+ "c:/dev/jspm_packages/a.ts" ,
354
+ "c:/dev/node_modules/a.ts"
355
+ ] ,
356
+ wildcardDirectories : { } ,
357
+ } ;
358
+ const actual = ts . parseJsonConfigFileContent ( json , caseInsensitiveCommonFoldersHost , caseInsensitiveBasePath ) ;
359
+ assert . deepEqual ( actual . fileNames , expected . fileNames ) ;
360
+ assert . deepEqual ( actual . wildcardDirectories , expected . wildcardDirectories ) ;
361
+ assert . deepEqual ( actual . errors , expected . errors ) ;
362
+ } ) ;
363
+ it ( "with common package folders and empty exclude" , ( ) => {
364
+ const json = {
365
+ include : [
366
+ "a.ts" ,
367
+ "b.ts" ,
368
+ "node_modules/a.ts" ,
369
+ "bower_components/a.ts" ,
370
+ "jspm_packages/a.ts"
371
+ ] ,
372
+ exclude : < string [ ] > [ ]
373
+ } ;
374
+ const expected : ts . ParsedCommandLine = {
375
+ options : { } ,
376
+ errors : [ ] ,
377
+ fileNames : [
378
+ "c:/dev/a.ts" ,
379
+ "c:/dev/b.ts" ,
380
+ "c:/dev/bower_components/a.ts" ,
381
+ "c:/dev/jspm_packages/a.ts" ,
382
+ "c:/dev/node_modules/a.ts"
383
+ ] ,
384
+ wildcardDirectories : { } ,
385
+ } ;
386
+ const actual = ts . parseJsonConfigFileContent ( json , caseInsensitiveCommonFoldersHost , caseInsensitiveBasePath ) ;
387
+ assert . deepEqual ( actual . fileNames , expected . fileNames ) ;
388
+ assert . deepEqual ( actual . wildcardDirectories , expected . wildcardDirectories ) ;
389
+ assert . deepEqual ( actual . errors , expected . errors ) ;
390
+ } ) ;
300
391
} ) ;
301
392
302
393
describe ( "with wildcard include list" , ( ) => {
@@ -392,6 +483,32 @@ namespace ts {
392
483
assert . deepEqual ( actual . wildcardDirectories , expected . wildcardDirectories ) ;
393
484
assert . deepEqual ( actual . errors , expected . errors ) ;
394
485
} ) ;
486
+ it ( "with multiple recursive directories" , ( ) => {
487
+ const json = {
488
+ include : [
489
+ "x/y/**/a.ts" ,
490
+ "x/**/a.ts" ,
491
+ "z/**/a.ts"
492
+ ]
493
+ } ;
494
+ const expected : ts . ParsedCommandLine = {
495
+ options : { } ,
496
+ errors : [ ] ,
497
+ fileNames : [
498
+ "c:/dev/x/a.ts" ,
499
+ "c:/dev/x/y/a.ts" ,
500
+ "c:/dev/z/a.ts"
501
+ ] ,
502
+ wildcardDirectories : {
503
+ "c:/dev/x" : ts . WatchDirectoryFlags . Recursive ,
504
+ "c:/dev/z" : ts . WatchDirectoryFlags . Recursive
505
+ } ,
506
+ } ;
507
+ const actual = ts . parseJsonConfigFileContent ( json , caseInsensitiveHost , caseInsensitiveBasePath ) ;
508
+ assert . deepEqual ( actual . fileNames , expected . fileNames ) ;
509
+ assert . deepEqual ( actual . wildcardDirectories , expected . wildcardDirectories ) ;
510
+ assert . deepEqual ( actual . errors , expected . errors ) ;
511
+ } ) ;
395
512
it ( "case sensitive" , ( ) => {
396
513
const json = {
397
514
include : [
@@ -486,6 +603,78 @@ namespace ts {
486
603
assert . deepEqual ( actual . wildcardDirectories , expected . wildcardDirectories ) ;
487
604
assert . deepEqual ( actual . errors , expected . errors ) ;
488
605
} ) ;
606
+ it ( "with common package folders and no exclusions" , ( ) => {
607
+ const json = {
608
+ include : [
609
+ "**/a.ts"
610
+ ]
611
+ } ;
612
+ const expected : ts . ParsedCommandLine = {
613
+ options : { } ,
614
+ errors : [ ] ,
615
+ fileNames : [
616
+ "c:/dev/a.ts"
617
+ ] ,
618
+ wildcardDirectories : {
619
+ "c:/dev" : ts . WatchDirectoryFlags . Recursive
620
+ } ,
621
+ } ;
622
+ const actual = ts . parseJsonConfigFileContent ( json , caseInsensitiveCommonFoldersHost , caseInsensitiveBasePath ) ;
623
+ assert . deepEqual ( actual . fileNames , expected . fileNames ) ;
624
+ assert . deepEqual ( actual . wildcardDirectories , expected . wildcardDirectories ) ;
625
+ assert . deepEqual ( actual . errors , expected . errors ) ;
626
+ } ) ;
627
+ it ( "with common package folders and exclusions" , ( ) => {
628
+ const json = {
629
+ include : [
630
+ "**/a.ts"
631
+ ] ,
632
+ exclude : [
633
+ "a.ts"
634
+ ]
635
+ } ;
636
+ const expected : ts . ParsedCommandLine = {
637
+ options : { } ,
638
+ errors : [ ] ,
639
+ fileNames : [
640
+ "c:/dev/bower_components/a.ts" ,
641
+ "c:/dev/jspm_packages/a.ts" ,
642
+ "c:/dev/node_modules/a.ts"
643
+ ] ,
644
+ wildcardDirectories : {
645
+ "c:/dev" : ts . WatchDirectoryFlags . Recursive
646
+ } ,
647
+ } ;
648
+ const actual = ts . parseJsonConfigFileContent ( json , caseInsensitiveCommonFoldersHost , caseInsensitiveBasePath ) ;
649
+ assert . deepEqual ( actual . fileNames , expected . fileNames ) ;
650
+ assert . deepEqual ( actual . wildcardDirectories , expected . wildcardDirectories ) ;
651
+ assert . deepEqual ( actual . errors , expected . errors ) ;
652
+ } ) ;
653
+ it ( "with common package folders and empty exclude" , ( ) => {
654
+ const json = {
655
+ include : [
656
+ "**/a.ts"
657
+ ] ,
658
+ exclude : < string [ ] > [ ]
659
+ } ;
660
+ const expected : ts . ParsedCommandLine = {
661
+ options : { } ,
662
+ errors : [ ] ,
663
+ fileNames : [
664
+ "c:/dev/a.ts" ,
665
+ "c:/dev/bower_components/a.ts" ,
666
+ "c:/dev/jspm_packages/a.ts" ,
667
+ "c:/dev/node_modules/a.ts"
668
+ ] ,
669
+ wildcardDirectories : {
670
+ "c:/dev" : ts . WatchDirectoryFlags . Recursive
671
+ } ,
672
+ } ;
673
+ const actual = ts . parseJsonConfigFileContent ( json , caseInsensitiveCommonFoldersHost , caseInsensitiveBasePath ) ;
674
+ assert . deepEqual ( actual . fileNames , expected . fileNames ) ;
675
+ assert . deepEqual ( actual . wildcardDirectories , expected . wildcardDirectories ) ;
676
+ assert . deepEqual ( actual . errors , expected . errors ) ;
677
+ } ) ;
489
678
it ( "exclude .js files when allowJs=false" , ( ) => {
490
679
const json = {
491
680
compilerOptions : {
0 commit comments