This commit is contained in:
meganrogge
2023-09-20 09:41:39 -07:00
parent 943d5b2c5c
commit b461dfb230
2 changed files with 32 additions and 15 deletions

View File

@@ -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);

View File

@@ -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],