Path: blob/main/src/vs/workbench/contrib/debug/test/common/abstractDebugAdapter.test.ts
3296 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 { timeout } from '../../../../../base/common/async.js';7import { ensureNoDisposablesAreLeakedInTestSuite } from '../../../../../base/test/common/utils.js';8import { MockDebugAdapter } from './mockDebug.js';910suite('Debug - AbstractDebugAdapter', () => {11ensureNoDisposablesAreLeakedInTestSuite();1213suite('event ordering', () => {14let adapter: MockDebugAdapter;15let output: string[];16setup(() => {17adapter = new MockDebugAdapter();18output = [];19adapter.onEvent(ev => {20output.push((ev as DebugProtocol.OutputEvent).body.output);21Promise.resolve().then(() => output.push('--end microtask--'));22});23});2425const evaluate = async (expression: string) => {26await new Promise(resolve => adapter.sendRequest('evaluate', { expression }, resolve));27output.push(`=${expression}`);28Promise.resolve().then(() => output.push('--end microtask--'));29};3031test('inserts task boundary before response', async () => {32await evaluate('before.foo');33await timeout(0);3435assert.deepStrictEqual(output, ['before.foo', '--end microtask--', '=before.foo', '--end microtask--']);36});3738test('inserts task boundary after response', async () => {39await evaluate('after.foo');40await timeout(0);4142assert.deepStrictEqual(output, ['=after.foo', '--end microtask--', 'after.foo', '--end microtask--']);43});4445test('does not insert boundaries between events', async () => {46adapter.sendEventBody('output', { output: 'a' });47adapter.sendEventBody('output', { output: 'b' });48adapter.sendEventBody('output', { output: 'c' });49await timeout(0);5051assert.deepStrictEqual(output, ['a', 'b', 'c', '--end microtask--', '--end microtask--', '--end microtask--']);52});53});54});555657