Skip to content

Commit 6fd792a

Browse files
mguzmanmmaribelguzmanmedriouk
authored
Add memory inspector configurations (#149)
Co-authored-by: Maribel <maribel.guzmanm@gmail.com> Co-authored-by: Evgueni Driouk <edriouk@arm.com>
1 parent a396297 commit 6fd792a

2 files changed

Lines changed: 89 additions & 2 deletions

File tree

src/debug/debug-launch-provider.test.ts

Lines changed: 68 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -796,7 +796,7 @@ describe('DebugLaunchProvider', () => {
796796
await debugLaunchProvider.handleUpdateDebugTasks();
797797

798798
expect(debugLaunchProvider.configurationProviderMock.inspectConfigVariable).toHaveBeenCalledWith('hideSlowPreLaunchWarning', 'debug');
799-
expect(debugLaunchProvider.configurationProviderMock.setConfigVariable).not.toHaveBeenCalled();
799+
expect(debugLaunchProvider.configurationProviderMock.setConfigVariable).not.toHaveBeenCalledWith('hideSlowPreLaunchWarning', true, 'debug', true);
800800
});
801801

802802
it.each([false, true])('should not add hideSlowPreLaunchWarning to workspace if already set globally (%s)', async (value) => {
@@ -812,7 +812,73 @@ describe('DebugLaunchProvider', () => {
812812
await debugLaunchProvider.handleUpdateDebugTasks();
813813

814814
expect(debugLaunchProvider.configurationProviderMock.inspectConfigVariable).toHaveBeenCalledWith('hideSlowPreLaunchWarning', 'debug');
815-
expect(debugLaunchProvider.configurationProviderMock.setConfigVariable).not.toHaveBeenCalled();
815+
expect(debugLaunchProvider.configurationProviderMock.setConfigVariable).not.toHaveBeenCalledWith('hideSlowPreLaunchWarning', true, 'debug', true);
816+
});
817+
818+
it('should set memory inspector defaults when missing', async () => {
819+
const debugLaunchProvider = new DebugLaunchProviderTest();
820+
821+
debugLaunchProvider.solutionManagerMock.workspaceFolder = workspaceFolderUri;
822+
jest.spyOn(debugLaunchProvider, 'loadCbuildRunYml').mockResolvedValue(cbuildRunYml);
823+
jest.spyOn(debugLaunchProvider, 'loadDebugAdaptersYml').mockResolvedValue(debugAdaptersYml);
824+
jest.spyOn(debugLaunchProvider, 'updateDebugTasks').mockResolvedValue(undefined);
825+
826+
await debugLaunchProvider.handleUpdateDebugTasks();
827+
828+
expect(debugLaunchProvider.configurationProviderMock.setConfigVariable).toHaveBeenCalledWith('addressPadding', '32bit', 'memory-inspector', true);
829+
expect(debugLaunchProvider.configurationProviderMock.setConfigVariable).toHaveBeenCalledWith('groupings.groupsPerRow', 'Autofit', 'memory-inspector', true);
830+
expect(debugLaunchProvider.configurationProviderMock.setConfigVariable).toHaveBeenCalledWith('groupings.MAUsPerGroup', 4, 'memory-inspector', true);
831+
expect(debugLaunchProvider.configurationProviderMock.setConfigVariable).toHaveBeenCalledWith('scrollingBehavior', 'Auto-Append', 'memory-inspector', true);
832+
});
833+
834+
it.each([
835+
['addressPadding', '32bit'],
836+
['groupings.groupsPerRow', 'Autofit'],
837+
['groupings.MAUsPerGroup', 4],
838+
['scrollingBehavior', 'Auto-Append'],
839+
])('should not overwrite memory-inspector.%s workspace setting', async (name, defaultValue) => {
840+
const debugLaunchProvider = new DebugLaunchProviderTest();
841+
842+
debugLaunchProvider.solutionManagerMock.workspaceFolder = workspaceFolderUri;
843+
jest.spyOn(debugLaunchProvider, 'loadCbuildRunYml').mockResolvedValue(cbuildRunYml);
844+
jest.spyOn(debugLaunchProvider, 'loadDebugAdaptersYml').mockResolvedValue(debugAdaptersYml);
845+
jest.spyOn(debugLaunchProvider, 'updateDebugTasks').mockResolvedValue(undefined);
846+
847+
debugLaunchProvider.configurationProviderMock.inspectConfigVariable.mockImplementation((key, ext) => {
848+
if (ext === 'memory-inspector' && key === name) {
849+
return { key: `${ext}.${key}`, workspaceValue: 'already-set' };
850+
}
851+
return { key: `${ext || PACKAGE_NAME}.${key}` };
852+
});
853+
854+
await debugLaunchProvider.handleUpdateDebugTasks();
855+
856+
expect(debugLaunchProvider.configurationProviderMock.setConfigVariable).not.toHaveBeenCalledWith(name, defaultValue, 'memory-inspector', true);
857+
});
858+
859+
it.each([
860+
['addressPadding', '32bit'],
861+
['groupings.groupsPerRow', 'Autofit'],
862+
['groupings.MAUsPerGroup', 4],
863+
['scrollingBehavior', 'Auto-Append'],
864+
])('should not overwrite memory-inspector.%s global setting', async (name, defaultValue) => {
865+
const debugLaunchProvider = new DebugLaunchProviderTest();
866+
867+
debugLaunchProvider.solutionManagerMock.workspaceFolder = workspaceFolderUri;
868+
jest.spyOn(debugLaunchProvider, 'loadCbuildRunYml').mockResolvedValue(cbuildRunYml);
869+
jest.spyOn(debugLaunchProvider, 'loadDebugAdaptersYml').mockResolvedValue(debugAdaptersYml);
870+
jest.spyOn(debugLaunchProvider, 'updateDebugTasks').mockResolvedValue(undefined);
871+
872+
debugLaunchProvider.configurationProviderMock.inspectConfigVariable.mockImplementation((key, ext) => {
873+
if (ext === 'memory-inspector' && key === name) {
874+
return { key: `${ext}.${key}`, globalValue: 'already-set' };
875+
}
876+
return { key: `${ext || PACKAGE_NAME}.${key}` };
877+
});
878+
879+
await debugLaunchProvider.handleUpdateDebugTasks();
880+
881+
expect(debugLaunchProvider.configurationProviderMock.setConfigVariable).not.toHaveBeenCalledWith(name, defaultValue, 'memory-inspector', true);
816882
});
817883

818884
});

src/debug/debug-launch-provider.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -352,6 +352,27 @@ export class DebugLaunchProviderImpl implements DebugLaunchProvider {
352352
if ((showInStatusBar?.globalValue ?? showInStatusBar?.workspaceValue) === undefined) {
353353
this.configurationProvider.setConfigVariable<string>('showInStatusBar', 'never', 'debug', true);
354354
}
355+
356+
// Configure memory inspector defaults for improved embedded memory view readability
357+
const addressPadding = this.configurationProvider.inspectConfigVariable<string>('addressPadding', 'memory-inspector');
358+
if ((addressPadding?.globalValue ?? addressPadding?.workspaceValue) === undefined) {
359+
this.configurationProvider.setConfigVariable<string>('addressPadding', '32bit', 'memory-inspector', true);
360+
}
361+
362+
const groupsPerRow = this.configurationProvider.inspectConfigVariable<string>('groupings.groupsPerRow', 'memory-inspector');
363+
if ((groupsPerRow?.globalValue ?? groupsPerRow?.workspaceValue) === undefined) {
364+
this.configurationProvider.setConfigVariable<string>('groupings.groupsPerRow', 'Autofit', 'memory-inspector', true);
365+
}
366+
367+
const mausPerGroup = this.configurationProvider.inspectConfigVariable<number>('groupings.MAUsPerGroup', 'memory-inspector');
368+
if ((mausPerGroup?.globalValue ?? mausPerGroup?.workspaceValue) === undefined) {
369+
this.configurationProvider.setConfigVariable<number>('groupings.MAUsPerGroup', 4, 'memory-inspector', true);
370+
}
371+
372+
const scrollingBehavior = this.configurationProvider.inspectConfigVariable<string>('scrollingBehavior', 'memory-inspector');
373+
if ((scrollingBehavior?.globalValue ?? scrollingBehavior?.workspaceValue) === undefined) {
374+
this.configurationProvider.setConfigVariable<string>('scrollingBehavior', 'Auto-Append', 'memory-inspector', true);
375+
}
355376
}
356377
}
357378

0 commit comments

Comments
 (0)