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