@@ -24,6 +24,8 @@ namespace ts {
2424 "c:/dev/x/y/b.ts" ,
2525 "c:/dev/js/a.js" ,
2626 "c:/dev/js/b.js" ,
27+ "c:/dev/js/d.min.js" ,
28+ "c:/dev/js/ab.min.js" ,
2729 "c:/ext/ext.ts" ,
2830 "c:/ext/b/a..b.ts"
2931 ] ) ;
@@ -76,6 +78,17 @@ namespace ts {
7678 "c:/dev/jspm_packages/a.ts"
7779 ] ) ;
7880
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+
7992 describe ( "matchFiles" , ( ) => {
8093 describe ( "with literal file list" , ( ) => {
8194 it ( "without exclusions" , ( ) => {
@@ -727,6 +740,33 @@ namespace ts {
727740 assert . deepEqual ( actual . wildcardDirectories , expected . wildcardDirectories ) ;
728741 assert . deepEqual ( actual . errors , expected . errors ) ;
729742 } ) ;
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+ } ) ;
730770 it ( "include paths outside of the project" , ( ) => {
731771 const json = {
732772 include : [
@@ -952,6 +992,35 @@ namespace ts {
952992 assert . deepEqual ( actual . wildcardDirectories , expected . wildcardDirectories ) ;
953993 assert . deepEqual ( actual . errors , expected . errors ) ;
954994 } ) ;
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+ } ) ;
9551024 describe ( "with trailing recursive directory" , ( ) => {
9561025 it ( "in includes" , ( ) => {
9571026 const json = {
@@ -1146,5 +1215,122 @@ namespace ts {
11461215 } ) ;
11471216 } ) ;
11481217 } ) ;
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+ } ) ;
11491335 } ) ;
11501336}
0 commit comments