@@ -22,15 +22,15 @@ import { beforeEach } from 'node:test';
22
22
23
23
import type { Octokit } from '@octokit/rest' ;
24
24
import type * as extensionApi from '@podman-desktop/api' ;
25
- import { env } from '@podman-desktop/api' ;
25
+ import { env , process as processCore } from '@podman-desktop/api' ;
26
26
import { afterEach , describe , expect , test , vi } from 'vitest' ;
27
27
28
28
import type { MinikubeGithubReleaseArtifactMetadata } from './download' ;
29
29
import { MinikubeDownload } from './download' ;
30
30
31
31
// Create the OS class as well as fake extensionContext
32
32
const extensionContext : extensionApi . ExtensionContext = {
33
- storagePath : '/fake/path ' ,
33
+ storagePath : '/extension-folder/ ' ,
34
34
subscriptions : [ ] ,
35
35
} as unknown as extensionApi . ExtensionContext ;
36
36
@@ -56,6 +56,9 @@ vi.mock('@podman-desktop/api', () => ({
56
56
isLinux : false ,
57
57
isMac : false ,
58
58
} ,
59
+ process : {
60
+ exec : vi . fn ( ) ,
61
+ } ,
59
62
} ) ) ;
60
63
61
64
const listReleaseAssetsMock = vi . fn ( ) ;
@@ -157,3 +160,44 @@ describe('getMinikubeExtensionPath', () => {
157
160
expect ( minikubeDownload . getMinikubeExtensionPath ( ) ) . toStrictEqual ( expect . stringMatching ( '.*\\minikube$' ) ) ;
158
161
} ) ;
159
162
} ) ;
163
+
164
+ describe ( 'findMinikube' , ( ) => {
165
+ test ( 'should use system wide first' , async ( ) => {
166
+ ( env . isWindows as boolean ) = true ;
167
+
168
+ const minikubeDownload = new MinikubeDownload ( extensionContext , octokitMock ) ;
169
+
170
+ vi . mocked ( processCore . exec ) . mockResolvedValue ( {
171
+ stdout : '/dummy/tmp/minikube' ,
172
+ stderr : '' ,
173
+ command : '' ,
174
+ } ) ;
175
+
176
+ const result = await minikubeDownload . findMinikube ( ) ;
177
+ expect ( result ) . toBe ( '/dummy/tmp/minikube' ) ;
178
+ } ) ;
179
+
180
+ test ( 'system wide missing should fallback to local extension folder' , async ( ) => {
181
+ ( env . isWindows as boolean ) = false ;
182
+ vi . mocked ( processCore . exec ) . mockRejectedValue ( new Error ( 'dummy error' ) ) ;
183
+
184
+ const minikubeDownload = new MinikubeDownload ( extensionContext , octokitMock ) ;
185
+
186
+ vi . mocked ( fs . existsSync ) . mockReturnValue ( true ) ;
187
+
188
+ const result = await minikubeDownload . findMinikube ( ) ;
189
+ expect ( result ) . toStrictEqual ( expect . stringContaining ( 'extension-folder' ) ) ;
190
+ } ) ;
191
+
192
+ test ( 'system wide missing should fallback to local extension folder' , async ( ) => {
193
+ ( env . isWindows as boolean ) = false ;
194
+ vi . mocked ( processCore . exec ) . mockRejectedValue ( new Error ( 'dummy error' ) ) ;
195
+
196
+ const minikubeDownload = new MinikubeDownload ( extensionContext , octokitMock ) ;
197
+
198
+ vi . mocked ( fs . existsSync ) . mockReturnValue ( false ) ;
199
+
200
+ const result = await minikubeDownload . findMinikube ( ) ;
201
+ expect ( result ) . toBeUndefined ( ) ;
202
+ } ) ;
203
+ } ) ;
0 commit comments