1+ /*---------------------------------------------------------------------------------------------
2+ * Copyright (c) Microsoft Corporation. All rights reserved.
3+ * Licensed under the MIT License. See License.txt in the project root for license information.
4+ *--------------------------------------------------------------------------------------------*/
5+
6+
7+ import { installRuntimeDependencies } from "../../src/InstallRuntimeDependencies" ;
8+ import IInstallDependencies from "../../src/packageManager/IInstallDependencies" ;
9+ import { EventStream } from "../../src/EventStream" ;
10+ import { PlatformInformation } from "../../src/platform" ;
11+ import * as chai from "chai" ;
12+ import TestEventBus from "./testAssets/TestEventBus" ;
13+ import { AbsolutePathPackage } from "../../src/packageManager/AbsolutePathPackage" ;
14+ import { Package } from "../../src/packageManager/Package" ;
15+
16+ const expect = chai . expect ;
17+
18+ suite ( `${ installRuntimeDependencies . name } ` , ( ) => {
19+ let packageJSON = {
20+ runtimeDependencies : { }
21+ } ;
22+
23+ let extensionPath = "/ExtensionPath" ;
24+ let installDependencies : IInstallDependencies ;
25+ let eventStream : EventStream ;
26+ let eventBus : TestEventBus ;
27+ let platformInfo = new PlatformInformation ( "platform1" , "architecture1" ) ;
28+
29+ setup ( ( ) => {
30+ eventStream = new EventStream ( ) ;
31+ eventBus = new TestEventBus ( eventStream ) ;
32+ installDependencies = ( ) => Promise . resolve ( ) ;
33+ } ) ;
34+
35+ suite ( "When all the dependencies already exist" , ( ) => {
36+ suiteSetup ( ( ) => {
37+ packageJSON = {
38+ runtimeDependencies : { }
39+ } ;
40+ } ) ;
41+
42+ test ( "True is returned" , async ( ) => {
43+ let installed = await installRuntimeDependencies ( packageJSON , extensionPath , installDependencies , eventStream , platformInfo ) ;
44+ expect ( installed ) . to . be . true ;
45+ } ) ;
46+
47+ test ( "Doesn't log anything to the eventStream" , async ( ) => {
48+ let packageJSON = {
49+ runtimeDependencies : { }
50+ } ;
51+
52+ await installRuntimeDependencies ( packageJSON , extensionPath , installDependencies , eventStream , platformInfo ) ;
53+ expect ( eventBus . getEvents ( ) ) . to . be . empty ;
54+ } ) ;
55+ } ) ;
56+
57+ suite ( "When there is a dependency to install" , ( ) => {
58+ let packageToInstall : Package = {
59+ id :"myPackage" ,
60+ description : "somePackage" ,
61+ installPath : "installPath" ,
62+ binaries : [ ] ,
63+ url : "myUrl" ,
64+ platforms : [ platformInfo . platform ] ,
65+ architectures : [ platformInfo . architecture ]
66+ } ;
67+
68+ setup ( ( ) => {
69+ packageJSON = {
70+ runtimeDependencies : [ packageToInstall ]
71+ } ;
72+ } ) ;
73+
74+ test ( "Calls installDependencies with the absolute path package and returns true after successful installation" , async ( ) => {
75+ let inputPackage : AbsolutePathPackage [ ] ;
76+ installDependencies = ( packages ) => {
77+ inputPackage = packages ;
78+ return Promise . resolve ( ) ;
79+ } ;
80+
81+ let installed = await installRuntimeDependencies ( packageJSON , extensionPath , installDependencies , eventStream , platformInfo ) ;
82+ expect ( installed ) . to . be . true ;
83+ expect ( inputPackage ) . to . have . length ( 1 ) ;
84+ expect ( inputPackage [ 0 ] ) . to . be . deep . equal ( AbsolutePathPackage . getAbsolutePathPackage ( packageToInstall , extensionPath ) ) ;
85+ } ) ;
86+
87+ test ( "Returns false when installDependencies throws exception" , async ( ) => {
88+ installDependencies = ( ) => Promise . reject ( "some reason" ) ;
89+ let installed = await installRuntimeDependencies ( packageJSON , extensionPath , installDependencies , eventStream , platformInfo ) ;
90+ expect ( installed ) . to . be . false ;
91+ } ) ;
92+ } ) ;
93+ } ) ;
0 commit comments