提交 7b108d3d 编写于 作者: C Christof Marti

WIP

上级 755bf80a
......@@ -11,6 +11,7 @@ const suite = 'Integration Single Folder Tests';
const options: any = {
ui: 'tdd',
useColors: true,
grep: 'QuickInput',
timeout: 60000
};
......
......@@ -131,38 +131,85 @@ suite('window namespace tests', function () {
quickPick.selectedItems = [quickPick.items[2]];
}, 0);
});
test('createQuickPick, continue after first accept', function (_done) {
let done = (err?: any) => {
done = () => {};
_done(err);
};
const quickPick = createQuickPick({
events: ['active', 'selection', 'accept', 'active', 'selection', 'active', 'selection', 'accept', 'hide'],
activeItems: [['eins'], [], ['drei']],
selectionItems: [['eins'], [], ['drei']],
acceptedItems: {
active: [['eins'], ['drei']],
selection: [['eins'], ['drei']],
dispose: [false, true]
},
}, (err?: any) => done(err));
quickPick.items = ['eins', 'zwei'].map(label => ({ label }));
quickPick.show();
(async () => {
await commands.executeCommand('workbench.action.acceptSelectedQuickOpenItem');
await timeout(async () => {
quickPick.items = ['drei', 'vier'].map(label => ({ label }));
await timeout(async () => {
await commands.executeCommand('workbench.action.acceptSelectedQuickOpenItem');
}, 0);
}, 0);
})()
.catch(err => done(err));
});
});
});
function createQuickPick(expected: QuickPickExpected, done: (err?: any) => void) {
function createQuickPick(expected: QuickPickExpected, done: (err?: any) => void, record = false) {
const quickPick = window.createQuickPick();
let eventIndex = -1;
quickPick.onDidChangeActive(items => {
if (record) {
console.log(`active: [${items.map(item => item.label).join(', ')}]`);
return;
}
try {
assert.equal('active', expected.events.shift());
eventIndex++;
assert.equal('active', expected.events.shift(), `onDidChangeActive (event ${eventIndex})`);
const expectedItems = expected.activeItems.shift();
assert.deepEqual(items.map(item => item.label), expectedItems);
assert.deepEqual(quickPick.activeItems.map(item => item.label), expectedItems);
assert.deepEqual(items.map(item => item.label), expectedItems, `onDidChangeActive event items (event ${eventIndex})`);
assert.deepEqual(quickPick.activeItems.map(item => item.label), expectedItems, `onDidChangeActive active items (event ${eventIndex})`);
} catch (err) {
done(err);
}
});
quickPick.onDidChangeSelection(items => {
if (record) {
console.log(`selection: [${items.map(item => item.label).join(', ')}]`);
return;
}
try {
assert.equal('selection', expected.events.shift());
eventIndex++;
assert.equal('selection', expected.events.shift(), `onDidChangeSelection (event ${eventIndex})`);
const expectedItems = expected.selectionItems.shift();
assert.deepEqual(items.map(item => item.label), expectedItems);
assert.deepEqual(quickPick.selectedItems.map(item => item.label), expectedItems);
assert.deepEqual(items.map(item => item.label), expectedItems, `onDidChangeSelection event items (event ${eventIndex})`);
assert.deepEqual(quickPick.selectedItems.map(item => item.label), expectedItems, `onDidChangeSelection selected items (event ${eventIndex})`);
} catch (err) {
done(err);
}
});
quickPick.onDidAccept(() => {
if (record) {
console.log('accept');
return;
}
try {
assert.equal('accept', expected.events.shift());
eventIndex++;
assert.equal('accept', expected.events.shift(), `onDidAccept (event ${eventIndex})`);
const expectedActive = expected.acceptedItems.active.shift();
assert.deepEqual(quickPick.activeItems.map(item => item.label), expectedActive);
assert.deepEqual(quickPick.activeItems.map(item => item.label), expectedActive, `onDidAccept active items (event ${eventIndex})`);
const expectedSelection = expected.acceptedItems.selection.shift();
assert.deepEqual(quickPick.selectedItems.map(item => item.label), expectedSelection);
assert.deepEqual(quickPick.selectedItems.map(item => item.label), expectedSelection, `onDidAccept selected items (event ${eventIndex})`);
if (expected.acceptedItems.dispose.shift()) {
quickPick.dispose();
}
......@@ -171,6 +218,11 @@ function createQuickPick(expected: QuickPickExpected, done: (err?: any) => void)
}
});
quickPick.onDidHide(() => {
if (record) {
console.log('hide');
done();
return;
}
try {
assert.equal('hide', expected.events.shift());
done();
......@@ -180,4 +232,8 @@ function createQuickPick(expected: QuickPickExpected, done: (err?: any) => void)
});
return quickPick;
}
async function timeout<T>(run: () => Promise<T> | T, ms: number): Promise<T> {
return new Promise<T>(resolve => setTimeout(() => resolve(run()), ms));
}
\ No newline at end of file
......@@ -14,20 +14,20 @@ cd $ROOT
# Tests in the extension host
./scripts/code.sh $ROOT/extensions/vscode-api-tests/testWorkspace --extensionDevelopmentPath=$ROOT/extensions/vscode-api-tests --extensionTestsPath=$ROOT/extensions/vscode-api-tests/out/singlefolder-tests --disableExtensions --user-data-dir=$VSCODEUSERDATADIR --skip-getting-started
./scripts/code.sh $ROOT/extensions/vscode-api-tests/testworkspace.code-workspace --extensionDevelopmentPath=$ROOT/extensions/vscode-api-tests --extensionTestsPath=$ROOT/extensions/vscode-api-tests/out/workspace-tests --disableExtensions --user-data-dir=$VSCODEUSERDATADIR --skip-getting-started
./scripts/code.sh $ROOT/extensions/vscode-colorize-tests/test --extensionDevelopmentPath=$ROOT/extensions/vscode-colorize-tests --extensionTestsPath=$ROOT/extensions/vscode-colorize-tests/out --disableExtensions --user-data-dir=$VSCODEUSERDATADIR --skip-getting-started
./scripts/code.sh $ROOT/extensions/markdown-language-features/test-fixtures --extensionDevelopmentPath=$ROOT/extensions/markdown-language-features --extensionTestsPath=$ROOT/extensions/markdown-language-features/out/test --disableExtensions --user-data-dir=$VSCODEUSERDATADIR --skip-getting-started
./scripts/code.sh $ROOT/extensions/search-rg/test-fixtures --extensionDevelopmentPath=$ROOT/extensions/search-rg --extensionTestsPath=$ROOT/extensions/search-rg/out/test --disableExtensions --user-data-dir=$VSCODEUSERDATADIR --skip-getting-started
# ./scripts/code.sh $ROOT/extensions/vscode-api-tests/testworkspace.code-workspace --extensionDevelopmentPath=$ROOT/extensions/vscode-api-tests --extensionTestsPath=$ROOT/extensions/vscode-api-tests/out/workspace-tests --disableExtensions --user-data-dir=$VSCODEUSERDATADIR --skip-getting-started
# ./scripts/code.sh $ROOT/extensions/vscode-colorize-tests/test --extensionDevelopmentPath=$ROOT/extensions/vscode-colorize-tests --extensionTestsPath=$ROOT/extensions/vscode-colorize-tests/out --disableExtensions --user-data-dir=$VSCODEUSERDATADIR --skip-getting-started
# ./scripts/code.sh $ROOT/extensions/markdown-language-features/test-fixtures --extensionDevelopmentPath=$ROOT/extensions/markdown-language-features --extensionTestsPath=$ROOT/extensions/markdown-language-features/out/test --disableExtensions --user-data-dir=$VSCODEUSERDATADIR --skip-getting-started
# ./scripts/code.sh $ROOT/extensions/search-rg/test-fixtures --extensionDevelopmentPath=$ROOT/extensions/search-rg --extensionTestsPath=$ROOT/extensions/search-rg/out/test --disableExtensions --user-data-dir=$VSCODEUSERDATADIR --skip-getting-started
mkdir $ROOT/extensions/emmet/test-fixtures
./scripts/code.sh $ROOT/extensions/emmet/test-fixtures --extensionDevelopmentPath=$ROOT/extensions/emmet --extensionTestsPath=$ROOT/extensions/emmet/out/test --disableExtensions --user-data-dir=$VSCODEUSERDATADIR --skip-getting-started .
rm -r $ROOT/extensions/emmet/test-fixtures
# mkdir $ROOT/extensions/emmet/test-fixtures
# ./scripts/code.sh $ROOT/extensions/emmet/test-fixtures --extensionDevelopmentPath=$ROOT/extensions/emmet --extensionTestsPath=$ROOT/extensions/emmet/out/test --disableExtensions --user-data-dir=$VSCODEUSERDATADIR --skip-getting-started .
# rm -r $ROOT/extensions/emmet/test-fixtures
# Integration tests in AMD
./scripts/test.sh --runGlob **/*.integrationTest.js "$@"
# # Integration tests in AMD
# ./scripts/test.sh --runGlob **/*.integrationTest.js "$@"
# Tests in commonJS
cd $ROOT/extensions/css-language-features/server && $ROOT/scripts/node-electron.sh test/index.js
cd $ROOT/extensions/html-language-features/server && $ROOT/scripts/node-electron.sh test/index.js
# # Tests in commonJS
# cd $ROOT/extensions/css-language-features/server && $ROOT/scripts/node-electron.sh test/index.js
# cd $ROOT/extensions/html-language-features/server && $ROOT/scripts/node-electron.sh test/index.js
rm -r $VSCODEUSERDATADIR
# rm -r $VSCODEUSERDATADIR
......@@ -506,7 +506,9 @@ class QuickPick<T extends IQuickPickItem> extends QuickInput implements IQuickPi
}
this._selectedItems = selectedItems as T[];
this.onDidChangeSelectionEmitter.fire(selectedItems as T[]);
this.onDidAcceptEmitter.fire();
if (selectedItems.length) {
this.onDidAcceptEmitter.fire();
}
}),
this.ui.list.onChangedCheckedElements(checkedItems => {
if (!this.canSelectMany) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册