mirror of
https://github.com/microsoft/vscode.git
synced 2025-12-20 02:08:47 +00:00
This commit is contained in:
@@ -52,11 +52,23 @@ export class TaskTerminalStatus extends Disposable {
|
||||
}));
|
||||
}
|
||||
|
||||
public override dispose(): void {
|
||||
super.dispose();
|
||||
for (const terminalData of this.terminalMap.values()) {
|
||||
terminalData.disposeListener?.dispose();
|
||||
}
|
||||
this.terminalMap.clear();
|
||||
this._marker?.dispose();
|
||||
}
|
||||
|
||||
addTerminal(task: Task, terminal: ITerminalInstance, problemMatcher: AbstractProblemCollector) {
|
||||
const status: ITerminalStatus = { id: TASK_TERMINAL_STATUS_ID, severity: Severity.Info };
|
||||
terminal.statusList.add(status);
|
||||
this._register(problemMatcher.onDidFindFirstMatch(() => {
|
||||
this._marker = terminal.registerMarker();
|
||||
if (this._marker) {
|
||||
this._register(this._marker);
|
||||
}
|
||||
}));
|
||||
this._register(problemMatcher.onDidFindErrors(() => {
|
||||
if (this._marker) {
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
import { ok } from 'assert';
|
||||
import { Emitter, Event } from 'vs/base/common/event';
|
||||
import { DisposableStore } from 'vs/base/common/lifecycle';
|
||||
import { Disposable } from 'vs/base/common/lifecycle';
|
||||
import { ensureNoDisposablesAreLeakedInTestSuite } from 'vs/base/test/common/utils';
|
||||
import { AudioCue, IAudioCueService } from 'vs/platform/audioCues/browser/audioCueService';
|
||||
import { TestConfigurationService } from 'vs/platform/configuration/test/common/testConfigurationService';
|
||||
@@ -34,8 +34,14 @@ class TestAudioCueService implements Partial<IAudioCueService> {
|
||||
}
|
||||
}
|
||||
|
||||
class TestTerminal implements Partial<ITerminalInstance> {
|
||||
statusList: TerminalStatusList = new TerminalStatusList(new TestConfigurationService());
|
||||
class TestTerminal extends Disposable implements Partial<ITerminalInstance> {
|
||||
statusList: TerminalStatusList = this._register(new TerminalStatusList(new TestConfigurationService()));
|
||||
constructor() {
|
||||
super();
|
||||
}
|
||||
override dispose(): void {
|
||||
super.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
class TestTask extends CommonTask {
|
||||
@@ -52,7 +58,7 @@ class TestTask extends CommonTask {
|
||||
}
|
||||
}
|
||||
|
||||
class TestProblemCollector implements Partial<AbstractProblemCollector> {
|
||||
class TestProblemCollector extends Disposable implements Partial<AbstractProblemCollector> {
|
||||
protected readonly _onDidFindFirstMatch = new Emitter<void>();
|
||||
readonly onDidFindFirstMatch = this._onDidFindFirstMatch.event;
|
||||
protected readonly _onDidFindErrors = new Emitter<void>();
|
||||
@@ -62,7 +68,6 @@ class TestProblemCollector implements Partial<AbstractProblemCollector> {
|
||||
}
|
||||
|
||||
suite('Task Terminal Status', () => {
|
||||
let store: DisposableStore;
|
||||
let instantiationService: TestInstantiationService;
|
||||
let taskService: TestTaskService;
|
||||
let taskTerminalStatus: TaskTerminalStatus;
|
||||
@@ -70,22 +75,16 @@ suite('Task Terminal Status', () => {
|
||||
let testTask: Task;
|
||||
let problemCollector: AbstractProblemCollector;
|
||||
let audioCueService: TestAudioCueService;
|
||||
const store = ensureNoDisposablesAreLeakedInTestSuite();
|
||||
setup(() => {
|
||||
store = new DisposableStore();
|
||||
instantiationService = new TestInstantiationService();
|
||||
instantiationService = store.add(new TestInstantiationService());
|
||||
taskService = new TestTaskService();
|
||||
audioCueService = new TestAudioCueService();
|
||||
taskTerminalStatus = new TaskTerminalStatus(taskService as any, audioCueService as any);
|
||||
testTerminal = instantiationService.createInstance(TestTerminal) as any;
|
||||
taskTerminalStatus = store.add(new TaskTerminalStatus(taskService as any, audioCueService as any));
|
||||
testTerminal = store.add(instantiationService.createInstance(TestTerminal) as any);
|
||||
testTask = instantiationService.createInstance(TestTask) as unknown as Task;
|
||||
problemCollector = instantiationService.createInstance(TestProblemCollector) as any;
|
||||
store.add(instantiationService);
|
||||
store.add(taskTerminalStatus);
|
||||
problemCollector = store.add(instantiationService.createInstance(TestProblemCollector) as any);
|
||||
});
|
||||
teardown(() => {
|
||||
store.clear();
|
||||
});
|
||||
ensureNoDisposablesAreLeakedInTestSuite();
|
||||
test('Should add failed status when there is an exit code on task end', async () => {
|
||||
taskTerminalStatus.addTerminal(testTask, testTerminal, problemCollector);
|
||||
taskService.triggerStateChange({ kind: TaskEventKind.ProcessStarted });
|
||||
|
||||
Reference in New Issue
Block a user