@@ -99,85 +99,71 @@ suite('packageChanges', () => {
9999
100100 suite ( 'updatePackagesAndNotify' , ( ) => {
101101 let environment : PythonEnvironment ;
102- let cache : Package [ ] | undefined ;
103102 let getPackagesStub : sinon . SinonStub ;
104103 let packageManager : PackageManager ;
105104
106105 setup ( ( ) => {
107106 environment = { } as PythonEnvironment ;
108- cache = undefined ;
109107 getPackagesStub = sinon . stub ( ) ;
110-
111108 packageManager = {
112109 name : 'test' ,
113110 manage : sinon . stub ( ) ,
114111 refresh : sinon . stub ( ) ,
115112 getPackages : getPackagesStub ,
116- setPackages : sinon . stub ( ) . callsFake ( ( _env : PythonEnvironment , pkgs : Package [ ] ) => {
117- cache = pkgs ;
118- } ) ,
119113 } as unknown as PackageManager ;
120114 } ) ;
121115
122- test ( 'updates cache and reports adds on first load' , async ( ) => {
116+ test ( 'reports adds on first load' , async ( ) => {
123117 const fetched = [ { name : 'requests' , version : '2.31.0' } as Package ] ;
124118 getPackagesStub . resolves ( fetched ) ;
119+ const onChanges = sinon . stub ( ) ;
125120
126- await updatePackagesAndNotify ( packageManager , environment , cache ) ;
121+ await updatePackagesAndNotify ( packageManager , environment , undefined , onChanges ) ;
127122
128- const setPackages = packageManager . setPackages as sinon . SinonStub ;
129- assert . ok ( setPackages . calledOnce ) ;
130- const [ env , pkgs , changes ] = setPackages . firstCall . args ;
131- assert . strictEqual ( env , environment ) ;
132- assert . deepStrictEqual ( pkgs , fetched ) ;
123+ assert . ok ( onChanges . calledOnce ) ;
124+ const [ changes ] = onChanges . firstCall . args ;
133125 assert . strictEqual ( changes . length , 1 ) ;
134126 assert . strictEqual ( changes [ 0 ] . kind , PackageChangeKind . add ) ;
135- assert . deepStrictEqual ( cache , fetched ) ;
136127 } ) ;
137128
138- test ( 'updates cache with empty changes when nothing changed' , async ( ) => {
129+ test ( 'does not fire callback when nothing changed' , async ( ) => {
139130 const pkgs = [ { name : 'requests' , version : '2.31.0' } as Package ] ;
140- cache = pkgs ;
141131 getPackagesStub . resolves ( pkgs ) ;
132+ const onChanges = sinon . stub ( ) ;
142133
143- await updatePackagesAndNotify ( packageManager , environment , cache ) ;
134+ await updatePackagesAndNotify ( packageManager , environment , pkgs , onChanges ) ;
144135
145- const setPackages = packageManager . setPackages as sinon . SinonStub ;
146- assert . ok ( setPackages . calledOnce ) ;
147- const [ , , changes ] = setPackages . firstCall . args ;
148- assert . strictEqual ( changes . length , 0 ) ;
136+ assert . ok ( onChanges . notCalled ) ;
149137 } ) ;
150138
151139 test ( 'detects removals correctly' , async ( ) => {
152140 const before = [
153141 { name : 'requests' , version : '2.31.0' } as Package ,
154142 { name : 'flask' , version : '3.0.0' } as Package ,
155143 ] ;
156- cache = before ;
157144 const after = [ { name : 'requests' , version : '2.31.0' } as Package ] ;
158145 getPackagesStub . resolves ( after ) ;
146+ const onChanges = sinon . stub ( ) ;
159147
160- await updatePackagesAndNotify ( packageManager , environment , cache ) ;
148+ await updatePackagesAndNotify ( packageManager , environment , before , onChanges ) ;
161149
162- const setPackages = packageManager . setPackages as sinon . SinonStub ;
163- assert . ok ( setPackages . calledOnce ) ;
164- const [ , pkgs , changes ] = setPackages . firstCall . args ;
165- assert . deepStrictEqual ( pkgs , after ) ;
150+ assert . ok ( onChanges . calledOnce ) ;
151+ const [ changes ] = onChanges . firstCall . args ;
166152 assert . strictEqual ( changes . length , 1 ) ;
167153 assert . strictEqual ( changes [ 0 ] . kind , PackageChangeKind . remove ) ;
168154 assert . strictEqual ( changes [ 0 ] . pkg . name , 'flask' ) ;
169155 } ) ;
170156
171157 test ( 'detects mixed adds and removals' , async ( ) => {
172- cache = [ { name : 'flask' , version : '3.0.0' } as Package ] ;
158+ const before = [ { name : 'flask' , version : '3.0.0' } as Package ] ;
173159 const after = [ { name : 'django' , version : '5.0.0' } as Package ] ;
174160 getPackagesStub . resolves ( after ) ;
161+ const onChanges = sinon . stub ( ) ;
175162
176- await updatePackagesAndNotify ( packageManager , environment , cache ) ;
163+ await updatePackagesAndNotify ( packageManager , environment , before , onChanges ) ;
177164
178- const setPackages = packageManager . setPackages as sinon . SinonStub ;
179- assert . ok ( setPackages . calledOnce ) ;
180- const [ , , changes ] = setPackages . firstCall . args ;
165+ assert . ok ( onChanges . calledOnce ) ;
166+ const [ changes ] = onChanges . firstCall . args ;
181167 assert . strictEqual ( changes . length , 2 ) ;
182168 assert . ok ( changes . some ( ( c : { kind : PackageChangeKind } ) => c . kind === PackageChangeKind . add ) ) ;
183169 assert . ok ( changes . some ( ( c : { kind : PackageChangeKind } ) => c . kind === PackageChangeKind . remove ) ) ;
0 commit comments