mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-20 00:28:52 +01:00
Multi-step input API (#49340)
This commit is contained in:
@@ -405,6 +405,84 @@ suite('window namespace tests', () => {
|
||||
return Promise.all([a, b]);
|
||||
});
|
||||
|
||||
test('multiStepInput, two steps', async function () {
|
||||
const picks = window.multiStepInput(async (input, token) => {
|
||||
const pick1 = input.showQuickPick(['eins', 'zwei', 'drei']);
|
||||
await commands.executeCommand('workbench.action.acceptSelectedQuickOpenItem');
|
||||
assert.equal(await pick1, 'eins');
|
||||
|
||||
const pick2 = input.showQuickPick(['vier', 'fünf', 'sechs']);
|
||||
await commands.executeCommand('workbench.action.acceptSelectedQuickOpenItem');
|
||||
assert.equal(await pick2, 'vier');
|
||||
|
||||
return [ await pick1, await pick2 ];
|
||||
});
|
||||
assert.deepEqual(await picks, ['eins', 'vier']);
|
||||
});
|
||||
|
||||
test('multiStepInput, interrupted by showQuickPick', async function () {
|
||||
const picks = window.multiStepInput(async (input, token) => {
|
||||
const pick1 = input.showQuickPick(['eins', 'zwei', 'drei']);
|
||||
await commands.executeCommand('workbench.action.acceptSelectedQuickOpenItem');
|
||||
assert.equal(await pick1, 'eins');
|
||||
|
||||
assert.ok(!token.isCancellationRequested);
|
||||
const otherPick = window.showQuickPick(['sieben', 'acht', 'neun']);
|
||||
await commands.executeCommand('workbench.action.acceptSelectedQuickOpenItem');
|
||||
assert.equal(await otherPick, 'sieben');
|
||||
assert.ok(token.isCancellationRequested);
|
||||
|
||||
const pick2 = input.showQuickPick(['vier', 'fünf', 'sechs']);
|
||||
await commands.executeCommand('workbench.action.acceptSelectedQuickOpenItem');
|
||||
assert.equal(await pick2, undefined);
|
||||
|
||||
return [ await pick1, await pick2 ];
|
||||
});
|
||||
assert.deepEqual(await picks, ['eins', undefined]);
|
||||
});
|
||||
|
||||
test('multiStepInput, interrupted by multiStepInput', async function () {
|
||||
const picks = window.multiStepInput(async (input, token) => {
|
||||
const pick1 = input.showQuickPick(['eins', 'zwei', 'drei']);
|
||||
await commands.executeCommand('workbench.action.acceptSelectedQuickOpenItem');
|
||||
assert.equal(await pick1, 'eins');
|
||||
|
||||
assert.ok(!token.isCancellationRequested);
|
||||
const otherPick = window.multiStepInput(async (input, token) => {
|
||||
const otherPick = window.showQuickPick(['sieben', 'acht', 'neun']);
|
||||
await commands.executeCommand('workbench.action.acceptSelectedQuickOpenItem');
|
||||
assert.equal(await otherPick, 'sieben');
|
||||
|
||||
return otherPick;
|
||||
});
|
||||
assert.equal(await otherPick, 'sieben');
|
||||
assert.ok(token.isCancellationRequested);
|
||||
|
||||
const pick2 = input.showQuickPick(['vier', 'fünf', 'sechs']);
|
||||
await commands.executeCommand('workbench.action.acceptSelectedQuickOpenItem');
|
||||
assert.equal(await pick2, undefined);
|
||||
|
||||
return [ await pick1, await pick2 ];
|
||||
});
|
||||
assert.deepEqual(await picks, ['eins', undefined]);
|
||||
});
|
||||
|
||||
test('multiStepInput, interrupted by error', async function () {
|
||||
try {
|
||||
const picks = window.multiStepInput(async (input, token) => {
|
||||
const pick1 = input.showQuickPick(['eins', 'zwei', 'drei']);
|
||||
await commands.executeCommand('workbench.action.acceptSelectedQuickOpenItem');
|
||||
assert.equal(await pick1, 'eins');
|
||||
|
||||
throw new Error('because');
|
||||
});
|
||||
await picks;
|
||||
assert.ok(false);
|
||||
} catch (error) {
|
||||
assert.equal(error.message, 'because');
|
||||
}
|
||||
});
|
||||
|
||||
test('showWorkspaceFolderPick', function () {
|
||||
const p = window.showWorkspaceFolderPick(undefined);
|
||||
|
||||
|
||||
@@ -4,4 +4,5 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
/// <reference path="../../../../src/vs/vscode.d.ts" />
|
||||
/// <reference path="../../../../src/vs/vscode.proposed.d.ts" />
|
||||
/// <reference types='@types/node'/>
|
||||
|
||||
Reference in New Issue
Block a user