Path: blob/main/src/vs/workbench/contrib/debug/test/browser/rawDebugSession.test.ts
5240 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import assert from 'assert';6import { mock, mockObject } from '../../../../../base/test/common/mock.js';7import { ensureNoDisposablesAreLeakedInTestSuite } from '../../../../../base/test/common/utils.js';8import { IExtensionHostDebugService } from '../../../../../platform/debug/common/extensionHostDebug.js';9import { IDialogService } from '../../../../../platform/dialogs/common/dialogs.js';10import { INotificationService } from '../../../../../platform/notification/common/notification.js';11import { IOpenerService } from '../../../../../platform/opener/common/opener.js';12import { RawDebugSession } from '../../browser/rawDebugSession.js';13import { IDebugger } from '../../common/debug.js';14import { MockDebugAdapter } from '../common/mockDebug.js';1516suite('RawDebugSession', () => {17const disposables = ensureNoDisposablesAreLeakedInTestSuite();1819function createTestObjects() {20const debugAdapter = new MockDebugAdapter();21const dbgr = mockObject<IDebugger>()({22type: 'mock-debug'23});2425const session = new RawDebugSession(26debugAdapter,27// eslint-disable-next-line local/code-no-any-casts28dbgr as any as IDebugger,29'sessionId',30'name',31new (mock<IExtensionHostDebugService>()),32new (mock<IOpenerService>()),33new (mock<INotificationService>()),34new (mock<IDialogService>()));35disposables.add(session);36disposables.add(debugAdapter);3738return { debugAdapter, dbgr };39}4041test('handles startDebugging request success', async () => {42const { debugAdapter, dbgr } = createTestObjects();43dbgr.startDebugging.returns(Promise.resolve(true));4445debugAdapter.sendRequestBody('startDebugging', {46request: 'launch',47configuration: {48type: 'some-other-type'49}50} as DebugProtocol.StartDebuggingRequestArguments);51const response = await debugAdapter.waitForResponseFromClient('startDebugging');52assert.strictEqual(response.command, 'startDebugging');53assert.strictEqual(response.success, true);54});5556test('handles startDebugging request failure', async () => {57const { debugAdapter, dbgr } = createTestObjects();58dbgr.startDebugging.returns(Promise.resolve(false));5960debugAdapter.sendRequestBody('startDebugging', {61request: 'launch',62configuration: {63type: 'some-other-type'64}65} as DebugProtocol.StartDebuggingRequestArguments);66const response = await debugAdapter.waitForResponseFromClient('startDebugging');67assert.strictEqual(response.command, 'startDebugging');68assert.strictEqual(response.success, false);69});70});717273