mirror of
https://github.com/microsoft/vscode.git
synced 2025-12-20 02:08:47 +00:00
fix #193588
This commit is contained in:
@@ -94,7 +94,7 @@ export class TerminalStatusList extends Disposable implements ITerminalStatusLis
|
||||
this._onDidRemoveStatus.fire(existingStatus);
|
||||
this._statuses.delete(existingStatus.id);
|
||||
}
|
||||
if (!this._statuses.has(status.id)) {
|
||||
if (!this._statuses.has(status.id) && (this.primary === undefined || status.icon)) {
|
||||
const oldPrimary = this.primary;
|
||||
this._statuses.set(status.id, status);
|
||||
this._onDidAddStatus.fire(status);
|
||||
|
||||
@@ -37,19 +37,19 @@ suite('Workbench - TerminalStatusList', () => {
|
||||
strictEqual(list.primary?.id, undefined);
|
||||
list.add({ id: 'info1', severity: Severity.Info });
|
||||
strictEqual(list.primary?.id, 'info1');
|
||||
list.add({ id: 'warning1', severity: Severity.Warning });
|
||||
list.add({ id: 'warning1', severity: Severity.Warning, icon: Codicon.warning });
|
||||
strictEqual(list.primary?.id, 'warning1');
|
||||
list.add({ id: 'info2', severity: Severity.Info });
|
||||
strictEqual(list.primary?.id, 'warning1');
|
||||
list.add({ id: 'warning2', severity: Severity.Warning });
|
||||
list.add({ id: 'warning2', severity: Severity.Warning, icon: Codicon.warning });
|
||||
strictEqual(list.primary?.id, 'warning2');
|
||||
list.add({ id: 'info3', severity: Severity.Info });
|
||||
strictEqual(list.primary?.id, 'warning2');
|
||||
list.add({ id: 'error1', severity: Severity.Error });
|
||||
list.add({ id: 'error1', severity: Severity.Error, icon: Codicon.error });
|
||||
strictEqual(list.primary?.id, 'error1');
|
||||
list.add({ id: 'warning3', severity: Severity.Warning });
|
||||
list.add({ id: 'warning3', severity: Severity.Warning, icon: Codicon.warning });
|
||||
strictEqual(list.primary?.id, 'error1');
|
||||
list.add({ id: 'error2', severity: Severity.Error });
|
||||
list.add({ id: 'error2', severity: Severity.Error, icon: Codicon.error });
|
||||
strictEqual(list.primary?.id, 'error2');
|
||||
list.remove('error1');
|
||||
strictEqual(list.primary?.id, 'error2');
|
||||
@@ -60,8 +60,8 @@ suite('Workbench - TerminalStatusList', () => {
|
||||
test('statuses', () => {
|
||||
strictEqual(list.statuses.length, 0);
|
||||
list.add({ id: 'info', severity: Severity.Info });
|
||||
list.add({ id: 'warning', severity: Severity.Warning });
|
||||
list.add({ id: 'error', severity: Severity.Error });
|
||||
list.add({ id: 'warning', severity: Severity.Warning, icon: Codicon.warning });
|
||||
list.add({ id: 'error', severity: Severity.Error, icon: Codicon.error });
|
||||
strictEqual(list.statuses.length, 3);
|
||||
statusesEqual(list, [
|
||||
['info', Severity.Info],
|
||||
@@ -92,26 +92,43 @@ suite('Workbench - TerminalStatusList', () => {
|
||||
});
|
||||
|
||||
test('onDidChangePrimaryStatus', async () => {
|
||||
const result = await new Promise<ITerminalStatus>(r => {
|
||||
store.add(list.onDidRemoveStatus(r));
|
||||
const result = await new Promise<ITerminalStatus | undefined>(r => {
|
||||
store.add(list.onDidChangePrimaryStatus(r));
|
||||
list.add({ id: 'test', severity: Severity.Info });
|
||||
list.remove('test');
|
||||
});
|
||||
deepStrictEqual(result, { id: 'test', severity: Severity.Info });
|
||||
});
|
||||
|
||||
// test('onDidChangePrimaryStatus not fired if no icon on new status', async () => {
|
||||
// const result = await new Promise<ITerminalStatus | undefined>(r => {
|
||||
// list.add({ id: 'warning', severity: Severity.Warning, icon: Codicon.warning });
|
||||
// store.add(list.onDidChangePrimaryStatus(r));
|
||||
// list.add({ id: 'test', severity: Severity.Info });
|
||||
// });
|
||||
// deepStrictEqual(result, undefined);
|
||||
// });
|
||||
|
||||
test('onDidChangePrimaryStatus fired if icon on new status', async () => {
|
||||
const result = await new Promise<ITerminalStatus | undefined>(r => {
|
||||
list.add({ id: 'test', severity: Severity.Info });
|
||||
store.add(list.onDidChangePrimaryStatus(r));
|
||||
list.add({ id: 'warning', severity: Severity.Warning, icon: Codicon.warning });
|
||||
});
|
||||
deepStrictEqual(result, { id: 'warning', severity: Severity.Warning, icon: Codicon.warning });
|
||||
});
|
||||
|
||||
test('add', () => {
|
||||
statusesEqual(list, []);
|
||||
list.add({ id: 'info', severity: Severity.Info });
|
||||
statusesEqual(list, [
|
||||
['info', Severity.Info]
|
||||
]);
|
||||
list.add({ id: 'warning', severity: Severity.Warning });
|
||||
list.add({ id: 'warning', severity: Severity.Warning, icon: Codicon.warning });
|
||||
statusesEqual(list, [
|
||||
['info', Severity.Info],
|
||||
['warning', Severity.Warning]
|
||||
]);
|
||||
list.add({ id: 'error', severity: Severity.Error });
|
||||
list.add({ id: 'error', severity: Severity.Error, icon: Codicon.error });
|
||||
statusesEqual(list, [
|
||||
['info', Severity.Info],
|
||||
['warning', Severity.Warning],
|
||||
@@ -149,8 +166,8 @@ suite('Workbench - TerminalStatusList', () => {
|
||||
|
||||
test('remove', () => {
|
||||
list.add({ id: 'info', severity: Severity.Info });
|
||||
list.add({ id: 'warning', severity: Severity.Warning });
|
||||
list.add({ id: 'error', severity: Severity.Error });
|
||||
list.add({ id: 'warning', severity: Severity.Warning, icon: Codicon.warning });
|
||||
list.add({ id: 'error', severity: Severity.Error, icon: Codicon.error });
|
||||
statusesEqual(list, [
|
||||
['info', Severity.Info],
|
||||
['warning', Severity.Warning],
|
||||
|
||||
Reference in New Issue
Block a user