@@ -208,6 +208,9 @@ describe('SolutionConverter', () => {
208208 expect ( mockCsolutionService . convertSolution ) . toHaveBeenCalledTimes ( 1 ) ;
209209 } ) ;
210210 it ( 'sends output to the output channel' , async ( ) => {
211+ // Explicitly mock convertSolution to return success: true
212+ mockCsolutionService . convertSolution . mockResolvedValue ( { success : true } ) ;
213+ mockCsolutionService . getLogMessages . mockResolvedValue ( { errors : [ ] , warnings : [ ] , info : [ ] , success : true } ) ;
211214 await fireAndWaitForConversion ( ) ;
212215
213216 const outputChannel = outputChannelProvider . mockGetCreatedChannelByName ( manifest . CMSIS_SOLUTION_OUTPUT_CHANNEL ) ;
@@ -216,9 +219,9 @@ describe('SolutionConverter', () => {
216219 expect . stringContaining ( '⚙️ Converting solution...' ) ,
217220 expect . stringContaining ( 'Check for missing packs...' ) ,
218221 expect . stringContaining ( 'Convert solution...' ) ,
219- expect . stringContaining ( 'Setup database...' ) ,
220222 expect . stringContaining ( 'Get log messages...' ) ,
221223 expect . stringContaining ( '✅ Convert solution completed' ) ,
224+ expect . stringContaining ( 'Setup database...' ) ,
222225 ] ) ;
223226 expect ( completedListener ) . toHaveBeenCalledTimes ( 1 ) ;
224227 } ) ;
@@ -365,7 +368,7 @@ describe('SolutionConverter', () => {
365368
366369 it ( 'get cbuild west output and set diagnostics accordingly' , async ( ) => {
367370 mockCsolutionService . convertSolution . mockResolvedValue ( { success : true } ) ;
368- mockCsolutionService . getLogMessages . mockResolvedValue ( { success : true } ) ;
371+ mockCsolutionService . getLogMessages . mockResolvedValue ( { errors : [ ] , warnings : [ ] , info : [ ] , success : true } ) ;
369372 let mockRunCbuildSetup = jest . spyOn ( compileCommandsGenerator , 'runCbuildSetup' ) . mockResolvedValue ( [ true , [
370373 'warning cbuild: missing ZEPHYR_BASE environment variable' ,
371374 'error cbuild: exec: "west": executable file not found in $PATH' ,
@@ -377,23 +380,23 @@ describe('SolutionConverter', () => {
377380 jest . spyOn ( vscodeUtils , 'getWorkspaceFolder' ) . mockReturnValue ( 'workspace/folder' ) ;
378381
379382 await fireAndWaitForConversion ( ) ;
380- await waitTimeout ( ) ;
381- expect ( mockRunCbuildSetup ) . toHaveBeenCalledTimes ( 1 ) ;
383+
384+ // Convert event should NOT have cbuild output (convert-only payload)
382385 expect ( completedListener ) . toHaveBeenCalledTimes ( 1 ) ;
383386 expect ( completedListener ) . toHaveBeenLastCalledWith (
384387 expect . objectContaining ( {
385- severity : 'error' ,
386- toolsOutputMessages : expect . arrayContaining ( [
387- 'warning cbuild: missing ZEPHYR_BASE environment variable' ,
388- 'error cbuild: exec: "west": executable file not found in $PATH' ,
389- ] ) ,
388+ severity : 'success' ,
389+ toolsOutputMessages : [ ] , // Convert-only, no cbuild output
390390 } ) ,
391391 ) ;
392392
393+ // Verify cbuild setup was called asynchronously (fire-and-forget pattern)
394+ expect ( mockRunCbuildSetup ) . toHaveBeenCalledTimes ( 1 ) ;
395+
393396 // Remove settings.json
394397 completedListener . mockClear ( ) ;
395- const settings = path . join ( getWorkspaceFolder ( ) , '.vscode' , 'settings.json' ) ;
396398 mockRunCbuildSetup . mockClear ( ) ;
399+ const settings = path . join ( getWorkspaceFolder ( ) , '.vscode' , 'settings.json' ) ;
397400 fsUtils . deleteFileIfExists ( settings ) ;
398401 await fireAndWaitForConversion ( ) ;
399402 expect ( mockRunCbuildSetup ) . toHaveBeenCalledTimes ( 1 ) ;
0 commit comments