Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/workbench/contrib/debug/test/common/abstractDebugAdapter.test.ts
3296 views
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 assert from 'assert';
7
import { timeout } from '../../../../../base/common/async.js';
8
import { ensureNoDisposablesAreLeakedInTestSuite } from '../../../../../base/test/common/utils.js';
9
import { MockDebugAdapter } from './mockDebug.js';
10
11
suite('Debug - AbstractDebugAdapter', () => {
12
ensureNoDisposablesAreLeakedInTestSuite();
13
14
suite('event ordering', () => {
15
let adapter: MockDebugAdapter;
16
let output: string[];
17
setup(() => {
18
adapter = new MockDebugAdapter();
19
output = [];
20
adapter.onEvent(ev => {
21
output.push((ev as DebugProtocol.OutputEvent).body.output);
22
Promise.resolve().then(() => output.push('--end microtask--'));
23
});
24
});
25
26
const evaluate = async (expression: string) => {
27
await new Promise(resolve => adapter.sendRequest('evaluate', { expression }, resolve));
28
output.push(`=${expression}`);
29
Promise.resolve().then(() => output.push('--end microtask--'));
30
};
31
32
test('inserts task boundary before response', async () => {
33
await evaluate('before.foo');
34
await timeout(0);
35
36
assert.deepStrictEqual(output, ['before.foo', '--end microtask--', '=before.foo', '--end microtask--']);
37
});
38
39
test('inserts task boundary after response', async () => {
40
await evaluate('after.foo');
41
await timeout(0);
42
43
assert.deepStrictEqual(output, ['=after.foo', '--end microtask--', 'after.foo', '--end microtask--']);
44
});
45
46
test('does not insert boundaries between events', async () => {
47
adapter.sendEventBody('output', { output: 'a' });
48
adapter.sendEventBody('output', { output: 'b' });
49
adapter.sendEventBody('output', { output: 'c' });
50
await timeout(0);
51
52
assert.deepStrictEqual(output, ['a', 'b', 'c', '--end microtask--', '--end microtask--', '--end microtask--']);
53
});
54
});
55
});
56
57