Skip to content

Commit b02f65e

Browse files
authored
Fix debug response, rearrange tests (microsoft#165879)
* Move some test stuff to common, rename test file * Add test for startDebugging and send correct response
1 parent f8fe0c2 commit b02f65e

15 files changed

+228
-126
lines changed

src/vs/workbench/contrib/debug/browser/rawDebugSession.ts

Lines changed: 56 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -621,73 +621,71 @@ export class RawDebugSession implements IDisposable {
621621

622622
const safeSendResponse = (response: DebugProtocol.Response) => this.debugAdapter && this.debugAdapter.sendResponse(response);
623623

624-
switch (request.command) {
625-
case 'launchVSCode':
626-
try {
627-
let result = await this.launchVsCode(<ILaunchVSCodeArguments>request.arguments);
628-
if (!result.success) {
629-
const showResult = await this.dialogSerivce.show(Severity.Warning, nls.localize('canNotStart', "The debugger needs to open a new tab or window for the debuggee but the browser prevented this. You must give permission to continue."),
630-
[nls.localize('continue', "Continue"), nls.localize('cancel', "Cancel")], { cancelId: 1 });
631-
if (showResult.choice === 0) {
632-
result = await this.launchVsCode(<ILaunchVSCodeArguments>request.arguments);
633-
} else {
634-
response.success = false;
635-
safeSendResponse(response);
636-
await this.shutdown();
637-
}
624+
if (request.command === 'launchVSCode') {
625+
try {
626+
let result = await this.launchVsCode(<ILaunchVSCodeArguments>request.arguments);
627+
if (!result.success) {
628+
const showResult = await this.dialogSerivce.show(Severity.Warning, nls.localize('canNotStart', "The debugger needs to open a new tab or window for the debuggee but the browser prevented this. You must give permission to continue."),
629+
[nls.localize('continue', "Continue"), nls.localize('cancel', "Cancel")], { cancelId: 1 });
630+
if (showResult.choice === 0) {
631+
result = await this.launchVsCode(<ILaunchVSCodeArguments>request.arguments);
632+
} else {
633+
response.success = false;
634+
safeSendResponse(response);
635+
await this.shutdown();
638636
}
639-
response.body = {
640-
rendererDebugPort: result.rendererDebugPort,
641-
};
642-
safeSendResponse(response);
643-
} catch (err) {
644-
response.success = false;
645-
response.message = err.message;
646-
safeSendResponse(response);
647637
}
648-
break;
649-
case 'runInTerminal':
650-
try {
651-
const shellProcessId = await this.dbgr.runInTerminal(request.arguments as DebugProtocol.RunInTerminalRequestArguments, this.sessionId);
652-
const resp = response as DebugProtocol.RunInTerminalResponse;
653-
resp.body = {};
654-
if (typeof shellProcessId === 'number') {
655-
resp.body.shellProcessId = shellProcessId;
656-
}
657-
safeSendResponse(resp);
658-
} catch (err) {
659-
response.success = false;
660-
response.message = err.message;
661-
safeSendResponse(response);
638+
response.body = {
639+
rendererDebugPort: result.rendererDebugPort,
640+
};
641+
safeSendResponse(response);
642+
} catch (err) {
643+
response.success = false;
644+
response.message = err.message;
645+
safeSendResponse(response);
646+
}
647+
} else if (request.command === 'runInTerminal') {
648+
try {
649+
const shellProcessId = await this.dbgr.runInTerminal(request.arguments as DebugProtocol.RunInTerminalRequestArguments, this.sessionId);
650+
const resp = response as DebugProtocol.RunInTerminalResponse;
651+
resp.body = {};
652+
if (typeof shellProcessId === 'number') {
653+
resp.body.shellProcessId = shellProcessId;
662654
}
663-
break;
664-
case 'startDebugging':
665-
try {
666-
const args = (request.arguments as DebugProtocol.StartDebuggingRequestArguments);
667-
const config: IConfig = {
668-
...args.configuration,
669-
...{
670-
request: args.request,
671-
type: this.dbgr.type,
672-
name: this.name
673-
}
674-
};
675-
const success = await this.dbgr.startDebugging(config, this.sessionId);
676-
if (!success) {
677-
response.success = false;
678-
response.message = 'Failed to start debugging';
679-
safeSendResponse(response);
655+
safeSendResponse(resp);
656+
} catch (err) {
657+
response.success = false;
658+
response.message = err.message;
659+
safeSendResponse(response);
660+
}
661+
} else if (request.command === 'startDebugging') {
662+
try {
663+
const args = (request.arguments as DebugProtocol.StartDebuggingRequestArguments);
664+
const config: IConfig = {
665+
...args.configuration,
666+
...{
667+
request: args.request,
668+
type: this.dbgr.type,
669+
name: this.name
680670
}
681-
} catch (err) {
671+
};
672+
const success = await this.dbgr.startDebugging(config, this.sessionId);
673+
if (success) {
674+
safeSendResponse(response);
675+
} else {
682676
response.success = false;
683-
response.message = err.message;
677+
response.message = 'Failed to start debugging';
684678
safeSendResponse(response);
685679
}
686-
default:
680+
} catch (err) {
687681
response.success = false;
688-
response.message = `unknown request '${request.command}'`;
682+
response.message = err.message;
689683
safeSendResponse(response);
690-
break;
684+
}
685+
} else {
686+
response.success = false;
687+
response.message = `unknown request '${request.command}'`;
688+
safeSendResponse(response);
691689
}
692690
}
693691

src/vs/workbench/contrib/debug/test/browser/baseDebugView.test.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,9 @@ import { createTestSession } from 'vs/workbench/contrib/debug/test/browser/callS
1515
import { isStatusbarInDebugMode } from 'vs/workbench/contrib/debug/browser/statusbarColorProvider';
1616
import { State } from 'vs/workbench/contrib/debug/common/debug';
1717
import { isWindows } from 'vs/base/common/platform';
18-
import { MockSession, createMockDebugModel } from 'vs/workbench/contrib/debug/test/browser/mockDebug';
18+
import { createMockDebugModel } from 'vs/workbench/contrib/debug/test/browser/mockDebugModel';
1919
import { DisposableStore } from 'vs/base/common/lifecycle';
20+
import { MockSession } from 'vs/workbench/contrib/debug/test/common/mockDebug';
2021
const $ = dom.$;
2122

2223
suite('Debug - Base Debug View', () => {

src/vs/workbench/contrib/debug/test/browser/breakpoints.test.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,11 @@ import { OverviewRulerLane } from 'vs/editor/common/model';
1515
import { MarkdownString } from 'vs/base/common/htmlContent';
1616
import { createTextModel } from 'vs/editor/test/common/testTextModel';
1717
import { createTestSession } from 'vs/workbench/contrib/debug/test/browser/callStack.test';
18-
import { createMockDebugModel, MockDebugService } from 'vs/workbench/contrib/debug/test/browser/mockDebug';
1918
import { TestInstantiationService } from 'vs/platform/instantiation/test/common/instantiationServiceMock';
2019
import { ILanguageService } from 'vs/editor/common/languages/language';
2120
import { LanguageService } from 'vs/editor/common/services/languageService';
21+
import { createMockDebugModel } from 'vs/workbench/contrib/debug/test/browser/mockDebugModel';
22+
import { MockDebugService } from 'vs/workbench/contrib/debug/test/common/mockDebug';
2223

2324
function addBreakpointsAndCheckEvents(model: DebugModel, uri: uri, data: IBreakpointData[]): void {
2425
let eventCount = 0;

src/vs/workbench/contrib/debug/test/browser/callStack.test.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import * as assert from 'assert';
77
import { DebugModel, StackFrame, Thread } from 'vs/workbench/contrib/debug/common/debugModel';
88
import * as sinon from 'sinon';
9-
import { MockRawSession, createMockDebugModel, mockUriIdentityService } from 'vs/workbench/contrib/debug/test/browser/mockDebug';
9+
import { createMockDebugModel, mockUriIdentityService } from 'vs/workbench/contrib/debug/test/browser/mockDebugModel';
1010
import { Source } from 'vs/workbench/contrib/debug/common/debugSource';
1111
import { DebugSession } from 'vs/workbench/contrib/debug/browser/debugSession';
1212
import { Range } from 'vs/editor/common/core/range';
@@ -20,6 +20,7 @@ import { debugStackframe, debugStackframeFocused } from 'vs/workbench/contrib/de
2020
import { ThemeIcon } from 'vs/platform/theme/common/themeService';
2121
import { TestConfigurationService } from 'vs/platform/configuration/test/common/testConfigurationService';
2222
import { TestInstantiationService } from 'vs/platform/instantiation/test/common/instantiationServiceMock';
23+
import { MockRawSession } from 'vs/workbench/contrib/debug/test/common/mockDebug';
2324

2425
const mockWorkspaceContextService = {
2526
getWorkspace: () => {
@@ -67,11 +68,11 @@ function createTwoStackFrames(session: DebugSession): { firstStackFrame: StackFr
6768

6869
suite('Debug - CallStack', () => {
6970
let model: DebugModel;
70-
let rawSession: MockRawSession;
71+
let mockRawSession: MockRawSession;
7172

7273
setup(() => {
7374
model = createMockDebugModel();
74-
rawSession = new MockRawSession();
75+
mockRawSession = new MockRawSession();
7576
});
7677

7778
// Threads
@@ -109,7 +110,7 @@ suite('Debug - CallStack', () => {
109110
const session = createTestSession(model);
110111
model.addSession(session);
111112

112-
session['raw'] = <any>rawSession;
113+
session['raw'] = <any>mockRawSession;
113114

114115
model.rawUpdate({
115116
sessionId: session.getId(),
@@ -189,7 +190,7 @@ suite('Debug - CallStack', () => {
189190
const session = createTestSession(model);
190191
model.addSession(session);
191192

192-
session['raw'] = <any>rawSession;
193+
session['raw'] = <any>mockRawSession;
193194

194195
// Stopped event with all threads stopped
195196
model.rawUpdate({
@@ -232,7 +233,7 @@ suite('Debug - CallStack', () => {
232233
});
233234

234235
test('threads multiple without allThreadsStopped', async () => {
235-
const sessionStub = sinon.spy(rawSession, 'stackTrace');
236+
const sessionStub = sinon.spy(mockRawSession, 'stackTrace');
236237

237238
const stoppedThreadId = 1;
238239
const stoppedThreadName = 'stoppedThread';
@@ -242,7 +243,7 @@ suite('Debug - CallStack', () => {
242243
const session = createTestSession(model);
243244
model.addSession(session);
244245

245-
session['raw'] = <any>rawSession;
246+
session['raw'] = <any>mockRawSession;
246247

247248
// Add the threads
248249
model.rawUpdate({
@@ -435,7 +436,7 @@ suite('Debug - CallStack', () => {
435436
model.addSession(runningSession);
436437
model.addSession(session);
437438

438-
session['raw'] = <any>rawSession;
439+
session['raw'] = <any>mockRawSession;
439440

440441
model.rawUpdate({
441442
sessionId: session.getId(),

src/vs/workbench/contrib/debug/test/browser/debugANSIHandling.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ import { TestThemeService, TestColorTheme } from 'vs/platform/theme/test/common/
1515
import { ansiColorMap } from 'vs/workbench/contrib/terminal/common/terminalColorRegistry';
1616
import { DebugModel } from 'vs/workbench/contrib/debug/common/debugModel';
1717
import { DebugSession } from 'vs/workbench/contrib/debug/browser/debugSession';
18-
import { createMockDebugModel } from 'vs/workbench/contrib/debug/test/browser/mockDebug';
1918
import { createTestSession } from 'vs/workbench/contrib/debug/test/browser/callStack.test';
2019
import { DisposableStore } from 'vs/base/common/lifecycle';
20+
import { createMockDebugModel } from 'vs/workbench/contrib/debug/test/browser/mockDebugModel';
2121

2222
suite('Debug - ANSI Handling', () => {
2323

src/vs/workbench/contrib/debug/test/browser/debugHover.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { createTestSession } from 'vs/workbench/contrib/debug/test/browser/callS
99
import { StackFrame, Thread, Scope, Variable } from 'vs/workbench/contrib/debug/common/debugModel';
1010
import { Source } from 'vs/workbench/contrib/debug/common/debugSource';
1111
import type { IScope, IExpression } from 'vs/workbench/contrib/debug/common/debug';
12-
import { createMockDebugModel, mockUriIdentityService } from 'vs/workbench/contrib/debug/test/browser/mockDebug';
12+
import { createMockDebugModel, mockUriIdentityService } from 'vs/workbench/contrib/debug/test/browser/mockDebugModel';
1313

1414
suite('Debug - Hover', () => {
1515
test('find expression in stack frame', async () => {

src/vs/workbench/contrib/debug/test/browser/debugMemory.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { Emitter } from 'vs/base/common/event';
99
import { mockObject, MockObject } from 'vs/base/test/common/mock';
1010
import { MemoryRangeType } from 'vs/workbench/contrib/debug/common/debug';
1111
import { MemoryRegion } from 'vs/workbench/contrib/debug/common/debugModel';
12-
import { MockSession } from 'vs/workbench/contrib/debug/test/browser/mockDebug';
12+
import { MockSession } from 'vs/workbench/contrib/debug/test/common/mockDebug';
1313

1414
suite('Debug - Memory', () => {
1515
const dapResponseCommon = {

src/vs/workbench/contrib/debug/test/browser/debugSource.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import * as assert from 'assert';
77
import { URI as uri } from 'vs/base/common/uri';
88
import { Source } from 'vs/workbench/contrib/debug/common/debugSource';
99
import { isWindows } from 'vs/base/common/platform';
10-
import { mockUriIdentityService } from 'vs/workbench/contrib/debug/test/browser/mockDebug';
10+
import { mockUriIdentityService } from 'vs/workbench/contrib/debug/test/browser/mockDebugModel';
1111

1212
suite('Debug - Source', () => {
1313

src/vs/workbench/contrib/debug/test/browser/debugViewModel.test.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,10 @@
66
import * as assert from 'assert';
77
import { ViewModel } from 'vs/workbench/contrib/debug/common/debugViewModel';
88
import { StackFrame, Expression, Thread } from 'vs/workbench/contrib/debug/common/debugModel';
9-
import { MockSession, mockUriIdentityService } from 'vs/workbench/contrib/debug/test/browser/mockDebug';
9+
import { mockUriIdentityService } from 'vs/workbench/contrib/debug/test/browser/mockDebugModel';
1010
import { MockContextKeyService } from 'vs/platform/keybinding/test/common/mockKeybindingService';
1111
import { Source } from 'vs/workbench/contrib/debug/common/debugSource';
12+
import { MockSession } from 'vs/workbench/contrib/debug/test/common/mockDebug';
1213

1314
suite('Debug - View Model', () => {
1415
let model: ViewModel;
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
/*---------------------------------------------------------------------------------------------
2+
* Copyright (c) Microsoft Corporation. All rights reserved.
3+
* Licensed under the MIT License. See License.txt in the project root for license information.
4+
*--------------------------------------------------------------------------------------------*/
5+
6+
import { UriIdentityService } from 'vs/platform/uriIdentity/common/uriIdentityService';
7+
import { DebugModel } from 'vs/workbench/contrib/debug/common/debugModel';
8+
import { MockDebugStorage } from 'vs/workbench/contrib/debug/test/common/mockDebug';
9+
import { TestFileService } from 'vs/workbench/test/browser/workbenchTestServices';
10+
11+
const fileService = new TestFileService();
12+
export const mockUriIdentityService = new UriIdentityService(fileService);
13+
14+
export function createMockDebugModel(): DebugModel {
15+
return new DebugModel(new MockDebugStorage(), <any>{ isDirty: (e: any) => false }, mockUriIdentityService);
16+
}

0 commit comments

Comments
 (0)