@@ -544,7 +544,8 @@ describe('LiveWatchTreeDataProvider', () => {
544544 'vscode-cmsis-debugger.liveWatch.addToLiveWatchFromVariablesView' ,
545545 'vscode-cmsis-debugger.liveWatch.showInMemoryInspector' ,
546546 'vscode-cmsis-debugger.liveWatch.enablePeriodicUpdate' ,
547- 'vscode-cmsis-debugger.liveWatch.disablePeriodicUpdate'
547+ 'vscode-cmsis-debugger.liveWatch.disablePeriodicUpdate' ,
548+ 'vscode-cmsis-debugger.liveWatch.resetViewState'
548549 ] ) ;
549550 } ) ;
550551
@@ -786,6 +787,16 @@ describe('LiveWatchTreeDataProvider', () => {
786787 expect ( refreshSpy ) . toHaveBeenCalled ( ) ;
787788 jest . useRealTimers ( ) ;
788789 } ) ;
790+
791+ it ( 'reset view state command resets Live Watch view state' , async ( ) => {
792+ const resetViewStateSpy = jest . spyOn ( liveWatchTreeDataProvider , 'resetViewState' ) . mockResolvedValue ( undefined ) ;
793+ await liveWatchTreeDataProvider . activate ( tracker ) ;
794+ const handler = getRegisteredHandler ( 'vscode-cmsis-debugger.liveWatch.resetViewState' ) ;
795+ expect ( handler ) . toBeDefined ( ) ;
796+ await handler ( ) ;
797+
798+ expect ( resetViewStateSpy ) . toHaveBeenCalled ( ) ;
799+ } ) ;
789800 } ) ;
790801
791802 describe ( 'Live Watch periodic update state persists to and restores from settings' , ( ) => {
@@ -863,6 +874,23 @@ describe('LiveWatchTreeDataProvider', () => {
863874
864875 it ( 're-enables sessions and updates the toolbar context on view state reset' , async ( ) => {
865876 const executeCommandSpy = jest . spyOn ( vscode . commands , 'executeCommand' ) . mockResolvedValue ( undefined ) ;
877+ const updateMock = jest . fn ( ) . mockResolvedValue ( undefined ) ;
878+ jest . spyOn ( vscode . workspace , 'getConfiguration' ) . mockReturnValue ( {
879+ update : updateMock ,
880+ inspect : jest . fn ( ) . mockReturnValue ( {
881+ globalValue : {
882+ Debug : {
883+ liveWatchPeriodicUpdateEnabled : false ,
884+ } ,
885+ } ,
886+ workspaceValue : {
887+ Debug : {
888+ liveWatchPeriodicUpdateEnabled : false ,
889+ cpuStatesEnabled : true ,
890+ } ,
891+ } ,
892+ } ) ,
893+ } as any ) ;
866894 await liveWatchTreeDataProvider . activate ( tracker ) ;
867895 ( tracker as any ) . _onWillStartSession . fire ( gdbtargetDebugSession ) ;
868896 ( liveWatchTreeDataProvider as any ) . sessionLiveWatchStates . get ( gdbtargetDebugSession . session . id ) ! . periodicUpdateEnabled = false ;
@@ -871,6 +899,49 @@ describe('LiveWatchTreeDataProvider', () => {
871899
872900 expect ( ( liveWatchTreeDataProvider as any ) . sessionLiveWatchStates . get ( gdbtargetDebugSession . session . id ) ! . periodicUpdateEnabled ) . toBe ( true ) ;
873901 expect ( executeCommandSpy ) . toHaveBeenCalledWith ( 'setContext' , 'liveWatch.periodicUpdateEnabled' , true ) ;
902+ expect ( updateMock ) . toHaveBeenCalledWith (
903+ 'vscode-cmsis-debugger.viewState' ,
904+ {
905+ Debug : {
906+ cpuStatesEnabled : true ,
907+ } ,
908+ } ,
909+ vscode . ConfigurationTarget . Workspace
910+ ) ;
911+ expect ( updateMock ) . toHaveBeenCalledWith (
912+ 'vscode-cmsis-debugger.viewState' ,
913+ undefined ,
914+ vscode . ConfigurationTarget . Global
915+ ) ;
916+ } ) ;
917+
918+ it ( 'runtime view state reset does not clear persisted settings' , async ( ) => {
919+ const executeCommandSpy = jest . spyOn ( vscode . commands , 'executeCommand' ) . mockResolvedValue ( undefined ) ;
920+ const updateMock = jest . fn ( ) . mockResolvedValue ( undefined ) ;
921+ jest . spyOn ( vscode . workspace , 'getConfiguration' ) . mockReturnValue ( {
922+ update : updateMock ,
923+ inspect : jest . fn ( ) . mockReturnValue ( {
924+ globalValue : {
925+ Debug : {
926+ liveWatchPeriodicUpdateEnabled : false ,
927+ } ,
928+ } ,
929+ workspaceValue : {
930+ Debug : {
931+ liveWatchPeriodicUpdateEnabled : false ,
932+ } ,
933+ } ,
934+ } ) ,
935+ } as any ) ;
936+ await liveWatchTreeDataProvider . activate ( tracker ) ;
937+ ( tracker as any ) . _onWillStartSession . fire ( gdbtargetDebugSession ) ;
938+ ( liveWatchTreeDataProvider as any ) . sessionLiveWatchStates . get ( gdbtargetDebugSession . session . id ) ! . periodicUpdateEnabled = false ;
939+
940+ liveWatchTreeDataProvider . resetRuntimeViewState ( ) ;
941+
942+ expect ( ( liveWatchTreeDataProvider as any ) . sessionLiveWatchStates . get ( gdbtargetDebugSession . session . id ) ! . periodicUpdateEnabled ) . toBe ( true ) ;
943+ expect ( executeCommandSpy ) . toHaveBeenCalledWith ( 'setContext' , 'liveWatch.periodicUpdateEnabled' , true ) ;
944+ expect ( updateMock ) . not . toHaveBeenCalled ( ) ;
874945 } ) ;
875946 } ) ;
876947
0 commit comments