@@ -23,6 +23,8 @@ namespace ts {
23
23
"c:/dev/x/y/b.ts" ,
24
24
"c:/dev/js/a.js" ,
25
25
"c:/dev/js/b.js" ,
26
+ "c:/dev/js/d.min.js" ,
27
+ "c:/dev/js/ab.min.js" ,
26
28
"c:/ext/ext.ts" ,
27
29
"c:/ext/b/a..b.ts"
28
30
] ) ;
@@ -75,6 +77,17 @@ namespace ts {
75
77
"c:/dev/jspm_packages/a.ts"
76
78
] ) ;
77
79
80
+ const caseInsensitiveDottedFoldersHost = new Utils . MockParseConfigHost ( caseInsensitiveBasePath , /*useCaseSensitiveFileNames*/ false , [
81
+ "c:/dev/x/d.ts" ,
82
+ "c:/dev/x/y/d.ts" ,
83
+ "c:/dev/x/y/.e.ts" ,
84
+ "c:/dev/x/.y/a.ts" ,
85
+ "c:/dev/.z/.b.ts" ,
86
+ "c:/dev/.z/c.ts" ,
87
+ "c:/dev/w/.u/e.ts" ,
88
+ "c:/dev/g.min.js/.g/g.ts"
89
+ ] ) ;
90
+
78
91
describe ( "matchFiles" , ( ) => {
79
92
describe ( "with literal file list" , ( ) => {
80
93
it ( "without exclusions" , ( ) => {
@@ -726,6 +739,33 @@ namespace ts {
726
739
assert . deepEqual ( actual . wildcardDirectories , expected . wildcardDirectories ) ;
727
740
assert . deepEqual ( actual . errors , expected . errors ) ;
728
741
} ) ;
742
+ it ( "include explicitly listed .min.js files when allowJs=true" , ( ) => {
743
+ const json = {
744
+ compilerOptions : {
745
+ allowJs : true
746
+ } ,
747
+ include : [
748
+ "js/*.min.js"
749
+ ]
750
+ } ;
751
+ const expected : ts . ParsedCommandLine = {
752
+ options : {
753
+ allowJs : true
754
+ } ,
755
+ errors : [ ] ,
756
+ fileNames : [
757
+ "c:/dev/js/ab.min.js" ,
758
+ "c:/dev/js/d.min.js"
759
+ ] ,
760
+ wildcardDirectories : {
761
+ "c:/dev/js" : ts . WatchDirectoryFlags . None
762
+ }
763
+ } ;
764
+ const actual = ts . parseJsonConfigFileContent ( json , caseInsensitiveHost , caseInsensitiveBasePath ) ;
765
+ assert . deepEqual ( actual . fileNames , expected . fileNames ) ;
766
+ assert . deepEqual ( actual . wildcardDirectories , expected . wildcardDirectories ) ;
767
+ assert . deepEqual ( actual . errors , expected . errors ) ;
768
+ } ) ;
729
769
it ( "include paths outside of the project" , ( ) => {
730
770
const json = {
731
771
include : [
@@ -951,6 +991,35 @@ namespace ts {
951
991
assert . deepEqual ( actual . wildcardDirectories , expected . wildcardDirectories ) ;
952
992
assert . deepEqual ( actual . errors , expected . errors ) ;
953
993
} ) ;
994
+ it ( "exclude .min.js files using wildcards" , ( ) => {
995
+ const json = {
996
+ compilerOptions : {
997
+ allowJs : true
998
+ } ,
999
+ include : [
1000
+ "js/*.min.js"
1001
+ ] ,
1002
+ exclude : [
1003
+ "js/a*"
1004
+ ]
1005
+ } ;
1006
+ const expected : ts . ParsedCommandLine = {
1007
+ options : {
1008
+ allowJs : true
1009
+ } ,
1010
+ errors : [ ] ,
1011
+ fileNames : [
1012
+ "c:/dev/js/d.min.js"
1013
+ ] ,
1014
+ wildcardDirectories : {
1015
+ "c:/dev/js" : ts . WatchDirectoryFlags . None
1016
+ }
1017
+ } ;
1018
+ const actual = ts . parseJsonConfigFileContent ( json , caseInsensitiveHost , caseInsensitiveBasePath ) ;
1019
+ assert . deepEqual ( actual . fileNames , expected . fileNames ) ;
1020
+ assert . deepEqual ( actual . wildcardDirectories , expected . wildcardDirectories ) ;
1021
+ assert . deepEqual ( actual . errors , expected . errors ) ;
1022
+ } ) ;
954
1023
describe ( "with trailing recursive directory" , ( ) => {
955
1024
it ( "in includes" , ( ) => {
956
1025
const json = {
@@ -1145,5 +1214,122 @@ namespace ts {
1145
1214
} ) ;
1146
1215
} ) ;
1147
1216
} ) ;
1217
+ describe ( "with files or folders that begin with a ." , ( ) => {
1218
+ it ( "that are not explicitly included" , ( ) => {
1219
+ const json = {
1220
+ include : [
1221
+ "x/**/*" ,
1222
+ "w/*/*"
1223
+ ]
1224
+ } ;
1225
+ const expected : ts . ParsedCommandLine = {
1226
+ options : { } ,
1227
+ errors : [ ] ,
1228
+ fileNames : [
1229
+ "c:/dev/x/d.ts" ,
1230
+ "c:/dev/x/y/d.ts" ,
1231
+ ] ,
1232
+ wildcardDirectories : {
1233
+ "c:/dev/x" : ts . WatchDirectoryFlags . Recursive ,
1234
+ "c:/dev/w" : ts . WatchDirectoryFlags . Recursive
1235
+ }
1236
+ } ;
1237
+ const actual = ts . parseJsonConfigFileContent ( json , caseInsensitiveDottedFoldersHost , caseInsensitiveBasePath ) ;
1238
+ assert . deepEqual ( actual . fileNames , expected . fileNames ) ;
1239
+ assert . deepEqual ( actual . wildcardDirectories , expected . wildcardDirectories ) ;
1240
+ assert . deepEqual ( actual . errors , expected . errors ) ;
1241
+ } ) ;
1242
+ describe ( "that are explicitly included" , ( ) => {
1243
+ it ( "without wildcards" , ( ) => {
1244
+ const json = {
1245
+ include : [
1246
+ "x/.y/a.ts" ,
1247
+ "c:/dev/.z/.b.ts"
1248
+ ]
1249
+ } ;
1250
+ const expected : ts . ParsedCommandLine = {
1251
+ options : { } ,
1252
+ errors : [ ] ,
1253
+ fileNames : [
1254
+ "c:/dev/.z/.b.ts" ,
1255
+ "c:/dev/x/.y/a.ts"
1256
+ ] ,
1257
+ wildcardDirectories : { }
1258
+ } ;
1259
+ const actual = ts . parseJsonConfigFileContent ( json , caseInsensitiveDottedFoldersHost , caseInsensitiveBasePath ) ;
1260
+ assert . deepEqual ( actual . fileNames , expected . fileNames ) ;
1261
+ assert . deepEqual ( actual . wildcardDirectories , expected . wildcardDirectories ) ;
1262
+ assert . deepEqual ( actual . errors , expected . errors ) ;
1263
+ } ) ;
1264
+ it ( "with recursive wildcards that match directories" , ( ) => {
1265
+ const json = {
1266
+ include : [
1267
+ "**/.*/*"
1268
+ ]
1269
+ } ;
1270
+ const expected : ts . ParsedCommandLine = {
1271
+ options : { } ,
1272
+ errors : [ ] ,
1273
+ fileNames : [
1274
+ "c:/dev/.z/c.ts" ,
1275
+ "c:/dev/g.min.js/.g/g.ts" ,
1276
+ "c:/dev/w/.u/e.ts" ,
1277
+ "c:/dev/x/.y/a.ts"
1278
+ ] ,
1279
+ wildcardDirectories : {
1280
+ "c:/dev" : ts . WatchDirectoryFlags . Recursive
1281
+ }
1282
+ } ;
1283
+ const actual = ts . parseJsonConfigFileContent ( json , caseInsensitiveDottedFoldersHost , caseInsensitiveBasePath ) ;
1284
+ assert . deepEqual ( actual . fileNames , expected . fileNames ) ;
1285
+ assert . deepEqual ( actual . wildcardDirectories , expected . wildcardDirectories ) ;
1286
+ assert . deepEqual ( actual . errors , expected . errors ) ;
1287
+ } ) ;
1288
+ it ( "with recursive wildcards that match nothing" , ( ) => {
1289
+ const json = {
1290
+ include : [
1291
+ "x/**/.y/*" ,
1292
+ ".z/**/.*"
1293
+ ]
1294
+ } ;
1295
+ const expected : ts . ParsedCommandLine = {
1296
+ options : { } ,
1297
+ errors : [ ] ,
1298
+ fileNames : [
1299
+ "c:/dev/.z/.b.ts" ,
1300
+ "c:/dev/x/.y/a.ts"
1301
+ ] ,
1302
+ wildcardDirectories : {
1303
+ "c:/dev/.z" : ts . WatchDirectoryFlags . Recursive ,
1304
+ "c:/dev/x" : ts . WatchDirectoryFlags . Recursive
1305
+ }
1306
+ } ;
1307
+ const actual = ts . parseJsonConfigFileContent ( json , caseInsensitiveDottedFoldersHost , caseInsensitiveBasePath ) ;
1308
+ assert . deepEqual ( actual . fileNames , expected . fileNames ) ;
1309
+ assert . deepEqual ( actual . wildcardDirectories , expected . wildcardDirectories ) ;
1310
+ assert . deepEqual ( actual . errors , expected . errors ) ;
1311
+ } ) ;
1312
+ it ( "with wildcard excludes that implicitly exclude dotted files" , ( ) => {
1313
+ const json = {
1314
+ include : [
1315
+ "**/.*/*"
1316
+ ] ,
1317
+ exclude : [
1318
+ "**/*"
1319
+ ]
1320
+ } ;
1321
+ const expected : ts . ParsedCommandLine = {
1322
+ options : { } ,
1323
+ errors : [ ] ,
1324
+ fileNames : [ ] ,
1325
+ wildcardDirectories : { }
1326
+ } ;
1327
+ const actual = ts . parseJsonConfigFileContent ( json , caseInsensitiveDottedFoldersHost , caseInsensitiveBasePath ) ;
1328
+ assert . deepEqual ( actual . fileNames , expected . fileNames ) ;
1329
+ assert . deepEqual ( actual . wildcardDirectories , expected . wildcardDirectories ) ;
1330
+ assert . deepEqual ( actual . errors , expected . errors ) ;
1331
+ } ) ;
1332
+ } ) ;
1333
+ } ) ;
1148
1334
} ) ;
1149
1335
}
0 commit comments