@@ -1372,6 +1372,113 @@ describe("unittests:: tsserver:: typingsInstaller:: General functionality", () =
1372
1372
host . runPendingInstalls ( ) ;
1373
1373
baselineTsserverLogs ( "typingsInstaller" , "non expired cache entry" , session ) ;
1374
1374
} ) ;
1375
+
1376
+ it ( "expired cache entry (inferred project, should install typings) lockFile3" , ( ) => {
1377
+ const file1 = {
1378
+ path :"/home/src/projects/project/app.js" ,
1379
+ content :"" ,
1380
+ } ;
1381
+ const packageJson = {
1382
+ path :"/home/src/projects/project/package.json" ,
1383
+ content :jsonToReadableText ( {
1384
+ name :"test" ,
1385
+ dependencies :{
1386
+ jquery :"^3.1.0" ,
1387
+ } ,
1388
+ } ) ,
1389
+ } ;
1390
+ const jquery = {
1391
+ path :getPathForTypeScriptTypingInstallerCacheTest ( "node_modules/@types/jquery/index.d.ts" ) ,
1392
+ content :"declare const $: { x: number }" ,
1393
+ } ;
1394
+ const cacheConfig = {
1395
+ path :getPathForTypeScriptTypingInstallerCacheTest ( "package.json" ) ,
1396
+ content :jsonToReadableText ( {
1397
+ dependencies :{
1398
+ "types-registry" :"^0.1.317" ,
1399
+ } ,
1400
+ devDependencies :{
1401
+ "@types/jquery" :"^1.0.0" ,
1402
+ } ,
1403
+ } ) ,
1404
+ } ;
1405
+ const cacheLockConfig = {
1406
+ path :getPathForTypeScriptTypingInstallerCacheTest ( "package-lock.json" ) ,
1407
+ content :jsonToReadableText ( {
1408
+ packages :{
1409
+ "node_modules/@types/jquery" :{
1410
+ version :"1.0.0" ,
1411
+ } ,
1412
+ } ,
1413
+ } ) ,
1414
+ } ;
1415
+ const host = TestServerHost . createServerHost (
1416
+ [ file1 , packageJson , jquery , cacheConfig , cacheLockConfig ] ,
1417
+ { typingsInstallerTypesRegistry :"jquery" } ,
1418
+ ) ;
1419
+ const session = new TestSession ( {
1420
+ host,
1421
+ useSingleInferredProject :true ,
1422
+ installAction :[ jquery ] ,
1423
+ } ) ;
1424
+ openFilesForSession ( [ file1 ] , session ) ;
1425
+ host . runPendingInstalls ( ) ;
1426
+ host . runQueuedTimeoutCallbacks ( ) ;
1427
+ baselineTsserverLogs ( "typingsInstaller" , "expired cache entry lockFile3" , session ) ;
1428
+ } ) ;
1429
+
1430
+ it ( "non-expired cache entry (inferred project, should not install typings) lockFile3" , ( ) => {
1431
+ const file1 = {
1432
+ path :"/home/src/projects/project/app.js" ,
1433
+ content :"" ,
1434
+ } ;
1435
+ const packageJson = {
1436
+ path :"/home/src/projects/project/package.json" ,
1437
+ content :jsonToReadableText ( {
1438
+ name :"test" ,
1439
+ dependencies :{
1440
+ jquery :"^3.1.0" ,
1441
+ } ,
1442
+ } ) ,
1443
+ } ;
1444
+ const cacheConfig = {
1445
+ path :getPathForTypeScriptTypingInstallerCacheTest ( "package.json" ) ,
1446
+ content :jsonToReadableText ( {
1447
+ dependencies :{
1448
+ "types-registry" :"^0.1.317" ,
1449
+ } ,
1450
+ devDependencies :{
1451
+ "@types/jquery" :"^1.3.0" ,
1452
+ } ,
1453
+ } ) ,
1454
+ } ;
1455
+ const cacheLockConfig = {
1456
+ path :getPathForTypeScriptTypingInstallerCacheTest ( "package-lock.json" ) ,
1457
+ content :jsonToReadableText ( {
1458
+ packages :{
1459
+ "node_modules/@types/jquery" :{
1460
+ version :"1.3.0" ,
1461
+ } ,
1462
+ } ,
1463
+ } ) ,
1464
+ } ;
1465
+ const jquery = {
1466
+ path :getPathForTypeScriptTypingInstallerCacheTest ( "node_modules/@types/jquery/index.d.ts" ) ,
1467
+ content :"declare const $: { x: number }" ,
1468
+ } ;
1469
+ const host = TestServerHost . createServerHost (
1470
+ [ file1 , packageJson , cacheConfig , cacheLockConfig , jquery ] ,
1471
+ { typingsInstallerTypesRegistry :"jquery" } ,
1472
+ ) ;
1473
+ const session = new TestSession ( {
1474
+ host,
1475
+ useSingleInferredProject :true ,
1476
+ installAction :true ,
1477
+ } ) ;
1478
+ openFilesForSession ( [ file1 ] , session ) ;
1479
+ host . runPendingInstalls ( ) ;
1480
+ baselineTsserverLogs ( "typingsInstaller" , "non expired cache entry lockFile3" , session ) ;
1481
+ } ) ;
1375
1482
} ) ;
1376
1483
1377
1484
describe ( "unittests:: tsserver:: typingsInstaller:: Validate package name:" , ( ) => {