From b461dfb230b827a0d53e1bfed7c6f474b1575f48 Mon Sep 17 00:00:00 2001 From: meganrogge Date: Wed, 20 Sep 2023 09:41:39 -0700 Subject: [PATCH] fix #193588 --- .../terminal/browser/terminalStatusList.ts | 2 +- .../test/browser/terminalStatusList.test.ts | 45 +++++++++++++------ 2 files changed, 32 insertions(+), 15 deletions(-) diff --git a/src/vs/workbench/contrib/terminal/browser/terminalStatusList.ts b/src/vs/workbench/contrib/terminal/browser/terminalStatusList.ts index 3d8e715653b..30d0eafdc9b 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalStatusList.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalStatusList.ts @@ -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); diff --git a/src/vs/workbench/contrib/terminal/test/browser/terminalStatusList.test.ts b/src/vs/workbench/contrib/terminal/test/browser/terminalStatusList.test.ts index af6a7c3fbe1..21443d79871 100644 --- a/src/vs/workbench/contrib/terminal/test/browser/terminalStatusList.test.ts +++ b/src/vs/workbench/contrib/terminal/test/browser/terminalStatusList.test.ts @@ -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(r => { - store.add(list.onDidRemoveStatus(r)); + const result = await new Promise(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(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(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],