@@ -65,6 +65,16 @@ namespace ts {
6565 "c:/dev/f.other"
6666 ] ) ;
6767
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+
6878 describe ( "matchFiles" , ( ) => {
6979 describe ( "with literal file list" , ( ) => {
7080 it ( "without exclusions" , ( ) => {
@@ -297,6 +307,87 @@ namespace ts {
297307 assert . deepEqual ( actual . wildcardDirectories , expected . wildcardDirectories ) ;
298308 assert . deepEqual ( actual . errors , expected . errors ) ;
299309 } ) ;
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+ } ) ;
300391 } ) ;
301392
302393 describe ( "with wildcard include list" , ( ) => {
@@ -392,6 +483,32 @@ namespace ts {
392483 assert . deepEqual ( actual . wildcardDirectories , expected . wildcardDirectories ) ;
393484 assert . deepEqual ( actual . errors , expected . errors ) ;
394485 } ) ;
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+ } ) ;
395512 it ( "case sensitive" , ( ) => {
396513 const json = {
397514 include : [
@@ -486,6 +603,78 @@ namespace ts {
486603 assert . deepEqual ( actual . wildcardDirectories , expected . wildcardDirectories ) ;
487604 assert . deepEqual ( actual . errors , expected . errors ) ;
488605 } ) ;
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+ } ) ;
489678 it ( "exclude .js files when allowJs=false" , ( ) => {
490679 const json = {
491680 compilerOptions : {
0 commit comments