@@ -400,7 +400,8 @@ describe('LiveWatchTreeDataProvider', () => {
400400 'vscode-cmsis-debugger.liveWatch.addToLiveWatchFromVariablesView' ,
401401 'vscode-cmsis-debugger.liveWatch.showInMemoryInspector' ,
402402 'vscode-cmsis-debugger.liveWatch.enablePeriodicUpdate' ,
403- 'vscode-cmsis-debugger.liveWatch.disablePeriodicUpdate'
403+ 'vscode-cmsis-debugger.liveWatch.disablePeriodicUpdate' ,
404+ 'vscode-cmsis-debugger.liveWatch.resetViewState'
404405 ] ) ;
405406 } ) ;
406407
@@ -627,6 +628,16 @@ describe('LiveWatchTreeDataProvider', () => {
627628 await Promise . resolve ( ) ;
628629 expect ( refreshSpy ) . toHaveBeenCalled ( ) ;
629630 } ) ;
631+
632+ it ( 'reset view state command resets Live Watch view state' , async ( ) => {
633+ const resetViewStateSpy = jest . spyOn ( liveWatchTreeDataProvider , 'resetViewState' ) . mockResolvedValue ( undefined ) ;
634+ await liveWatchTreeDataProvider . activate ( tracker ) ;
635+ const handler = getRegisteredHandler ( 'vscode-cmsis-debugger.liveWatch.resetViewState' ) ;
636+ expect ( handler ) . toBeDefined ( ) ;
637+ await handler ( ) ;
638+
639+ expect ( resetViewStateSpy ) . toHaveBeenCalled ( ) ;
640+ } ) ;
630641 } ) ;
631642
632643 describe ( 'Live Watch periodic update state persists to and restores from settings' , ( ) => {
@@ -704,6 +715,23 @@ describe('LiveWatchTreeDataProvider', () => {
704715
705716 it ( 're-enables sessions and updates the toolbar context on view state reset' , async ( ) => {
706717 const executeCommandSpy = jest . spyOn ( vscode . commands , 'executeCommand' ) . mockResolvedValue ( undefined ) ;
718+ const updateMock = jest . fn ( ) . mockResolvedValue ( undefined ) ;
719+ jest . spyOn ( vscode . workspace , 'getConfiguration' ) . mockReturnValue ( {
720+ update : updateMock ,
721+ inspect : jest . fn ( ) . mockReturnValue ( {
722+ globalValue : {
723+ Debug : {
724+ liveWatchPeriodicUpdateEnabled : false ,
725+ } ,
726+ } ,
727+ workspaceValue : {
728+ Debug : {
729+ liveWatchPeriodicUpdateEnabled : false ,
730+ cpuStatesEnabled : true ,
731+ } ,
732+ } ,
733+ } ) ,
734+ } as any ) ;
707735 await liveWatchTreeDataProvider . activate ( tracker ) ;
708736 ( tracker as any ) . _onWillStartSession . fire ( gdbtargetDebugSession ) ;
709737 ( liveWatchTreeDataProvider as any ) . sessionLiveWatchStates . get ( gdbtargetDebugSession . session . id ) ! . periodicUpdateEnabled = false ;
@@ -712,6 +740,49 @@ describe('LiveWatchTreeDataProvider', () => {
712740
713741 expect ( ( liveWatchTreeDataProvider as any ) . sessionLiveWatchStates . get ( gdbtargetDebugSession . session . id ) ! . periodicUpdateEnabled ) . toBe ( true ) ;
714742 expect ( executeCommandSpy ) . toHaveBeenCalledWith ( 'setContext' , 'liveWatch.periodicUpdateEnabled' , true ) ;
743+ expect ( updateMock ) . toHaveBeenCalledWith (
744+ 'vscode-cmsis-debugger.viewState' ,
745+ {
746+ Debug : {
747+ cpuStatesEnabled : true ,
748+ } ,
749+ } ,
750+ vscode . ConfigurationTarget . Workspace
751+ ) ;
752+ expect ( updateMock ) . toHaveBeenCalledWith (
753+ 'vscode-cmsis-debugger.viewState' ,
754+ undefined ,
755+ vscode . ConfigurationTarget . Global
756+ ) ;
757+ } ) ;
758+
759+ it ( 'runtime view state reset does not clear persisted settings' , async ( ) => {
760+ const executeCommandSpy = jest . spyOn ( vscode . commands , 'executeCommand' ) . mockResolvedValue ( undefined ) ;
761+ const updateMock = jest . fn ( ) . mockResolvedValue ( undefined ) ;
762+ jest . spyOn ( vscode . workspace , 'getConfiguration' ) . mockReturnValue ( {
763+ update : updateMock ,
764+ inspect : jest . fn ( ) . mockReturnValue ( {
765+ globalValue : {
766+ Debug : {
767+ liveWatchPeriodicUpdateEnabled : false ,
768+ } ,
769+ } ,
770+ workspaceValue : {
771+ Debug : {
772+ liveWatchPeriodicUpdateEnabled : false ,
773+ } ,
774+ } ,
775+ } ) ,
776+ } as any ) ;
777+ await liveWatchTreeDataProvider . activate ( tracker ) ;
778+ ( tracker as any ) . _onWillStartSession . fire ( gdbtargetDebugSession ) ;
779+ ( liveWatchTreeDataProvider as any ) . sessionLiveWatchStates . get ( gdbtargetDebugSession . session . id ) ! . periodicUpdateEnabled = false ;
780+
781+ liveWatchTreeDataProvider . resetRuntimeViewState ( ) ;
782+
783+ expect ( ( liveWatchTreeDataProvider as any ) . sessionLiveWatchStates . get ( gdbtargetDebugSession . session . id ) ! . periodicUpdateEnabled ) . toBe ( true ) ;
784+ expect ( executeCommandSpy ) . toHaveBeenCalledWith ( 'setContext' , 'liveWatch.periodicUpdateEnabled' , true ) ;
785+ expect ( updateMock ) . not . toHaveBeenCalled ( ) ;
715786 } ) ;
716787 } ) ;
717788
0 commit comments