diff --git a/extensions/vscode-api-tests/src/singlefolder-tests/workspace.tasks.test.ts b/extensions/vscode-api-tests/src/singlefolder-tests/workspace.tasks.test.ts index fba7d920b50a7dd7565acdc281106076e2699fc2..766a070138f1a3ad897a282fe7a2e37f67ded5f4 100644 --- a/extensions/vscode-api-tests/src/singlefolder-tests/workspace.tasks.test.ts +++ b/extensions/vscode-api-tests/src/singlefolder-tests/workspace.tasks.test.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import * as assert from 'assert'; -import { window, tasks, Disposable, TaskDefinition, Task, EventEmitter, CustomExecution, Pseudoterminal, TaskScope, commands, Task2, env, UIKind } from 'vscode'; +import { window, tasks, Disposable, TaskDefinition, Task, EventEmitter, CustomExecution, Pseudoterminal, TaskScope, commands, Task2, env, UIKind, ShellExecution } from 'vscode'; // Disable tasks tests: // - Web https://github.com/microsoft/vscode/issues/90528 @@ -118,7 +118,7 @@ import { window, tasks, Disposable, TaskDefinition, Task, EventEmitter, CustomEx writeEmitter.fire('exiting'); closeEmitter.fire(); }, - close: () => {} + close: () => { } }; return Promise.resolve(pty); }); @@ -137,5 +137,37 @@ import { window, tasks, Disposable, TaskDefinition, Task, EventEmitter, CustomEx })); commands.executeCommand('workbench.action.tasks.runTask', `${taskType}: ${taskName}`); }); + + test('Execution from event is equal to original', () => { + return new Promise(async (resolve, reject) => { + const task = new Task({ type: 'testTask' }, TaskScope.Workspace, 'echo', 'testTask', new ShellExecution('echo', ['hello test'])); + const taskExecution = await tasks.executeTask(task); + let equalCount = 2; + function checkEqualCount() { + equalCount--; + if (equalCount === 0) { + resolve(); + } else if (equalCount < 0) { + reject('Unexpected extra task events.'); + } + } + + tasks.onDidStartTaskProcess(e => { + if (e.execution === taskExecution) { + checkEqualCount(); + } else { + reject('Unexpected task execution value in start process.'); + } + }); + + tasks.onDidEndTaskProcess(e => { + if (e.execution === taskExecution) { + checkEqualCount(); + } else { + reject('Unexpected task execution value in end process.'); + } + }); + }); + }); }); });