|
4 | 4 | *--------------------------------------------------------------------------------------------*/
|
5 | 5 |
|
6 | 6 | import * as assert from 'assert';
|
7 |
| -import { commands, window } from 'vscode'; |
| 7 | +import { commands, Disposable, QuickPick, QuickPickItem, window } from 'vscode'; |
8 | 8 | import { assertNoRpc, closeAllEditors } from '../utils';
|
9 | 9 |
|
10 | 10 | interface QuickPickExpected {
|
@@ -204,6 +204,50 @@ suite('vscode API - quick input', function () {
|
204 | 204 | quickPick.hide();
|
205 | 205 | quickPick.dispose();
|
206 | 206 | });
|
| 207 | + |
| 208 | + test('createQuickPick, hide and hide', function (_done) { |
| 209 | + let done = (err?: any) => { |
| 210 | + done = () => { }; |
| 211 | + _done(err); |
| 212 | + }; |
| 213 | + |
| 214 | + let hidden = false; |
| 215 | + const quickPick = window.createQuickPick(); |
| 216 | + quickPick.onDidHide(() => { |
| 217 | + if (hidden) { |
| 218 | + done(new Error('Already hidden')); |
| 219 | + } else { |
| 220 | + hidden = true; |
| 221 | + setTimeout(done, 0); |
| 222 | + } |
| 223 | + }); |
| 224 | + quickPick.show(); |
| 225 | + quickPick.hide(); |
| 226 | + quickPick.hide(); |
| 227 | + }); |
| 228 | + |
| 229 | + test('createQuickPick, hide show hide', async function () { |
| 230 | + async function waitForHide(quickPick: QuickPick<QuickPickItem>) { |
| 231 | + let disposable: Disposable | undefined; |
| 232 | + try { |
| 233 | + await Promise.race([ |
| 234 | + new Promise(resolve => disposable = quickPick.onDidHide(() => resolve(true))), |
| 235 | + new Promise((_, reject) => setTimeout(() => reject(), 4000)) |
| 236 | + ]); |
| 237 | + } finally { |
| 238 | + disposable?.dispose(); |
| 239 | + } |
| 240 | + } |
| 241 | + |
| 242 | + const quickPick = window.createQuickPick(); |
| 243 | + quickPick.show(); |
| 244 | + const promise = waitForHide(quickPick); |
| 245 | + quickPick.hide(); |
| 246 | + quickPick.show(); |
| 247 | + await promise; |
| 248 | + quickPick.hide(); |
| 249 | + await waitForHide(quickPick); |
| 250 | + }); |
207 | 251 | });
|
208 | 252 |
|
209 | 253 | function createQuickPick(expected: QuickPickExpected, done: (err?: any) => void, record = false) {
|
|
0 commit comments