mirror of
https://github.com/microsoft/vscode.git
synced 2025-12-24 04:09:28 +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._onDidRemoveStatus.fire(existingStatus);
|
||||||
this._statuses.delete(existingStatus.id);
|
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;
|
const oldPrimary = this.primary;
|
||||||
this._statuses.set(status.id, status);
|
this._statuses.set(status.id, status);
|
||||||
this._onDidAddStatus.fire(status);
|
this._onDidAddStatus.fire(status);
|
||||||
|
|||||||
@@ -37,19 +37,19 @@ suite('Workbench - TerminalStatusList', () => {
|
|||||||
strictEqual(list.primary?.id, undefined);
|
strictEqual(list.primary?.id, undefined);
|
||||||
list.add({ id: 'info1', severity: Severity.Info });
|
list.add({ id: 'info1', severity: Severity.Info });
|
||||||
strictEqual(list.primary?.id, 'info1');
|
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');
|
strictEqual(list.primary?.id, 'warning1');
|
||||||
list.add({ id: 'info2', severity: Severity.Info });
|
list.add({ id: 'info2', severity: Severity.Info });
|
||||||
strictEqual(list.primary?.id, 'warning1');
|
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');
|
strictEqual(list.primary?.id, 'warning2');
|
||||||
list.add({ id: 'info3', severity: Severity.Info });
|
list.add({ id: 'info3', severity: Severity.Info });
|
||||||
strictEqual(list.primary?.id, 'warning2');
|
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');
|
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');
|
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');
|
strictEqual(list.primary?.id, 'error2');
|
||||||
list.remove('error1');
|
list.remove('error1');
|
||||||
strictEqual(list.primary?.id, 'error2');
|
strictEqual(list.primary?.id, 'error2');
|
||||||
@@ -60,8 +60,8 @@ suite('Workbench - TerminalStatusList', () => {
|
|||||||
test('statuses', () => {
|
test('statuses', () => {
|
||||||
strictEqual(list.statuses.length, 0);
|
strictEqual(list.statuses.length, 0);
|
||||||
list.add({ id: 'info', severity: Severity.Info });
|
list.add({ id: 'info', severity: Severity.Info });
|
||||||
list.add({ id: 'warning', severity: Severity.Warning });
|
list.add({ id: 'warning', severity: Severity.Warning, icon: Codicon.warning });
|
||||||
list.add({ id: 'error', severity: Severity.Error });
|
list.add({ id: 'error', severity: Severity.Error, icon: Codicon.error });
|
||||||
strictEqual(list.statuses.length, 3);
|
strictEqual(list.statuses.length, 3);
|
||||||
statusesEqual(list, [
|
statusesEqual(list, [
|
||||||
['info', Severity.Info],
|
['info', Severity.Info],
|
||||||
@@ -92,26 +92,43 @@ suite('Workbench - TerminalStatusList', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
test('onDidChangePrimaryStatus', async () => {
|
test('onDidChangePrimaryStatus', async () => {
|
||||||
const result = await new Promise<ITerminalStatus>(r => {
|
const result = await new Promise<ITerminalStatus | undefined>(r => {
|
||||||
store.add(list.onDidRemoveStatus(r));
|
store.add(list.onDidChangePrimaryStatus(r));
|
||||||
list.add({ id: 'test', severity: Severity.Info });
|
list.add({ id: 'test', severity: Severity.Info });
|
||||||
list.remove('test');
|
|
||||||
});
|
});
|
||||||
deepStrictEqual(result, { id: 'test', severity: Severity.Info });
|
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', () => {
|
test('add', () => {
|
||||||
statusesEqual(list, []);
|
statusesEqual(list, []);
|
||||||
list.add({ id: 'info', severity: Severity.Info });
|
list.add({ id: 'info', severity: Severity.Info });
|
||||||
statusesEqual(list, [
|
statusesEqual(list, [
|
||||||
['info', Severity.Info]
|
['info', Severity.Info]
|
||||||
]);
|
]);
|
||||||
list.add({ id: 'warning', severity: Severity.Warning });
|
list.add({ id: 'warning', severity: Severity.Warning, icon: Codicon.warning });
|
||||||
statusesEqual(list, [
|
statusesEqual(list, [
|
||||||
['info', Severity.Info],
|
['info', Severity.Info],
|
||||||
['warning', Severity.Warning]
|
['warning', Severity.Warning]
|
||||||
]);
|
]);
|
||||||
list.add({ id: 'error', severity: Severity.Error });
|
list.add({ id: 'error', severity: Severity.Error, icon: Codicon.error });
|
||||||
statusesEqual(list, [
|
statusesEqual(list, [
|
||||||
['info', Severity.Info],
|
['info', Severity.Info],
|
||||||
['warning', Severity.Warning],
|
['warning', Severity.Warning],
|
||||||
@@ -149,8 +166,8 @@ suite('Workbench - TerminalStatusList', () => {
|
|||||||
|
|
||||||
test('remove', () => {
|
test('remove', () => {
|
||||||
list.add({ id: 'info', severity: Severity.Info });
|
list.add({ id: 'info', severity: Severity.Info });
|
||||||
list.add({ id: 'warning', severity: Severity.Warning });
|
list.add({ id: 'warning', severity: Severity.Warning, icon: Codicon.warning });
|
||||||
list.add({ id: 'error', severity: Severity.Error });
|
list.add({ id: 'error', severity: Severity.Error, icon: Codicon.error });
|
||||||
statusesEqual(list, [
|
statusesEqual(list, [
|
||||||
['info', Severity.Info],
|
['info', Severity.Info],
|
||||||
['warning', Severity.Warning],
|
['warning', Severity.Warning],
|
||||||
|
|||||||
Reference in New Issue
Block a user