tests - disable terminal integration tests for web

This commit is contained in:
Benjamin Pasero 2020-03-19 09:37:11 +01:00
parent 9e89ada95f
commit c0eea2a712
16 changed files with 181 additions and 187 deletions

View file

@ -8,7 +8,7 @@ import * as assert from 'assert';
import { join } from 'path'; import { join } from 'path';
import { commands, workspace, window, Uri, Range, Position, ViewColumn } from 'vscode'; import { commands, workspace, window, Uri, Range, Position, ViewColumn } from 'vscode';
suite('commands namespace tests', () => { suite('vscode API - commands', () => {
test('getCommands', function (done) { test('getCommands', function (done) {

View file

@ -7,7 +7,7 @@ import 'mocha';
import * as assert from 'assert'; import * as assert from 'assert';
import * as vscode from 'vscode'; import * as vscode from 'vscode';
suite('Configuration tests', () => { suite('vscode API - configuration', () => {
test('configurations, language defaults', function () { test('configurations, language defaults', function () {
const defaultLanguageSettings = vscode.workspace.getConfiguration().get('[abcLang]'); const defaultLanguageSettings = vscode.workspace.getConfiguration().get('[abcLang]');

View file

@ -8,7 +8,7 @@ import { debug, workspace, Disposable, commands, window } from 'vscode';
import { disposeAll } from '../utils'; import { disposeAll } from '../utils';
import { basename } from 'path'; import { basename } from 'path';
suite('Debug', function () { suite('vscode API - debug', function () {
test('breakpoints', async function () { test('breakpoints', async function () {
assert.equal(debug.breakpoints.length, 0); assert.equal(debug.breakpoints.length, 0);

View file

@ -7,7 +7,7 @@ import * as assert from 'assert';
import { workspace, window, Position, Range, commands, TextEditor, TextDocument, TextEditorCursorStyle, TextEditorLineNumbersStyle, SnippetString, Selection, Uri } from 'vscode'; import { workspace, window, Position, Range, commands, TextEditor, TextDocument, TextEditorCursorStyle, TextEditorLineNumbersStyle, SnippetString, Selection, Uri } from 'vscode';
import { createRandomFile, deleteFile, closeAllEditors } from '../utils'; import { createRandomFile, deleteFile, closeAllEditors } from '../utils';
suite('editor tests', () => { suite('vscode API - editors', () => {
teardown(closeAllEditors); teardown(closeAllEditors);

View file

@ -6,7 +6,7 @@
import * as assert from 'assert'; import * as assert from 'assert';
import { env, extensions, ExtensionKind, UIKind, Uri } from 'vscode'; import { env, extensions, ExtensionKind, UIKind, Uri } from 'vscode';
suite('env-namespace', () => { suite('vscode API - env', () => {
test('env is set', function () { test('env is set', function () {
assert.equal(typeof env.language, 'string'); assert.equal(typeof env.language, 'string');

View file

@ -8,7 +8,7 @@ import { join } from 'path';
import * as vscode from 'vscode'; import * as vscode from 'vscode';
import { createRandomFile, testFs } from '../utils'; import { createRandomFile, testFs } from '../utils';
suite('languages namespace tests', () => { suite('vscode API - languages', () => {
const isWindows = process.platform === 'win32'; const isWindows = process.platform === 'win32';

View file

@ -18,190 +18,188 @@ interface QuickPickExpected {
}; };
} }
suite('window namespace tests', function () { suite('vscode API - quick input', function () {
suite('QuickInput tests', function () { teardown(closeAllEditors);
teardown(closeAllEditors);
test('createQuickPick, select second', function (_done) { test('createQuickPick, select second', function (_done) {
let done = (err?: any) => { let done = (err?: any) => {
done = () => {}; done = () => { };
_done(err); _done(err);
}; };
const quickPick = createQuickPick({ const quickPick = createQuickPick({
events: ['active', 'active', 'selection', 'accept', 'hide'], events: ['active', 'active', 'selection', 'accept', 'hide'],
activeItems: [['eins'], ['zwei']], activeItems: [['eins'], ['zwei']],
selectionItems: [['zwei']], selectionItems: [['zwei']],
acceptedItems: { acceptedItems: {
active: [['zwei']], active: [['zwei']],
selection: [['zwei']], selection: [['zwei']],
dispose: [true] dispose: [true]
}, },
}, (err?: any) => done(err)); }, (err?: any) => done(err));
quickPick.items = ['eins', 'zwei', 'drei'].map(label => ({ label })); quickPick.items = ['eins', 'zwei', 'drei'].map(label => ({ label }));
quickPick.show(); quickPick.show();
(async () => { (async () => {
await commands.executeCommand('workbench.action.quickOpenSelectNext'); await commands.executeCommand('workbench.action.quickOpenSelectNext');
await commands.executeCommand('workbench.action.acceptSelectedQuickOpenItem'); await commands.executeCommand('workbench.action.acceptSelectedQuickOpenItem');
})() })()
.catch(err => done(err)); .catch(err => done(err));
}); });
test('createQuickPick, focus second', function (_done) { test('createQuickPick, focus second', function (_done) {
let done = (err?: any) => { let done = (err?: any) => {
done = () => {}; done = () => { };
_done(err); _done(err);
}; };
const quickPick = createQuickPick({ const quickPick = createQuickPick({
events: ['active', 'selection', 'accept', 'hide'], events: ['active', 'selection', 'accept', 'hide'],
activeItems: [['zwei']], activeItems: [['zwei']],
selectionItems: [['zwei']], selectionItems: [['zwei']],
acceptedItems: { acceptedItems: {
active: [['zwei']], active: [['zwei']],
selection: [['zwei']], selection: [['zwei']],
dispose: [true] dispose: [true]
}, },
}, (err?: any) => done(err)); }, (err?: any) => done(err));
quickPick.items = ['eins', 'zwei', 'drei'].map(label => ({ label })); quickPick.items = ['eins', 'zwei', 'drei'].map(label => ({ label }));
quickPick.activeItems = [quickPick.items[1]]; quickPick.activeItems = [quickPick.items[1]];
quickPick.show(); quickPick.show();
(async () => { (async () => {
await commands.executeCommand('workbench.action.acceptSelectedQuickOpenItem'); await commands.executeCommand('workbench.action.acceptSelectedQuickOpenItem');
})() })()
.catch(err => done(err)); .catch(err => done(err));
}); });
test('createQuickPick, select first and second', function (_done) { test('createQuickPick, select first and second', function (_done) {
let done = (err?: any) => { let done = (err?: any) => {
done = () => {}; done = () => { };
_done(err); _done(err);
}; };
const quickPick = createQuickPick({ const quickPick = createQuickPick({
events: ['active', 'selection', 'active', 'selection', 'accept', 'hide'], events: ['active', 'selection', 'active', 'selection', 'accept', 'hide'],
activeItems: [['eins'], ['zwei']], activeItems: [['eins'], ['zwei']],
selectionItems: [['eins'], ['eins', 'zwei']], selectionItems: [['eins'], ['eins', 'zwei']],
acceptedItems: { acceptedItems: {
active: [['zwei']], active: [['zwei']],
selection: [['eins', 'zwei']], selection: [['eins', 'zwei']],
dispose: [true] dispose: [true]
}, },
}, (err?: any) => done(err)); }, (err?: any) => done(err));
quickPick.canSelectMany = true; quickPick.canSelectMany = true;
quickPick.items = ['eins', 'zwei', 'drei'].map(label => ({ label })); quickPick.items = ['eins', 'zwei', 'drei'].map(label => ({ label }));
quickPick.show(); quickPick.show();
(async () => { (async () => {
await commands.executeCommand('workbench.action.quickOpenSelectNext'); await commands.executeCommand('workbench.action.quickOpenSelectNext');
await commands.executeCommand('workbench.action.quickPickManyToggle'); await commands.executeCommand('workbench.action.quickPickManyToggle');
await commands.executeCommand('workbench.action.quickOpenSelectNext'); await commands.executeCommand('workbench.action.quickOpenSelectNext');
await commands.executeCommand('workbench.action.quickPickManyToggle'); await commands.executeCommand('workbench.action.quickPickManyToggle');
await commands.executeCommand('workbench.action.acceptSelectedQuickOpenItem'); await commands.executeCommand('workbench.action.acceptSelectedQuickOpenItem');
})() })()
.catch(err => done(err)); .catch(err => done(err));
}); });
test('createQuickPick, selection events', function (_done) { test('createQuickPick, selection events', function (_done) {
let done = (err?: any) => { let done = (err?: any) => {
done = () => {}; done = () => { };
_done(err); _done(err);
}; };
const quickPick = createQuickPick({ const quickPick = createQuickPick({
events: ['active', 'selection', 'accept', 'selection', 'accept', 'hide'], events: ['active', 'selection', 'accept', 'selection', 'accept', 'hide'],
activeItems: [['eins']], activeItems: [['eins']],
selectionItems: [['zwei'], ['drei']], selectionItems: [['zwei'], ['drei']],
acceptedItems: { acceptedItems: {
active: [['eins'], ['eins']], active: [['eins'], ['eins']],
selection: [['zwei'], ['drei']], selection: [['zwei'], ['drei']],
dispose: [false, true] dispose: [false, true]
}, },
}, (err?: any) => done(err)); }, (err?: any) => done(err));
quickPick.items = ['eins', 'zwei', 'drei'].map(label => ({ label })); quickPick.items = ['eins', 'zwei', 'drei'].map(label => ({ label }));
quickPick.show(); quickPick.show();
quickPick.selectedItems = [quickPick.items[1]]; quickPick.selectedItems = [quickPick.items[1]];
setTimeout(() => { setTimeout(() => {
quickPick.selectedItems = [quickPick.items[2]]; quickPick.selectedItems = [quickPick.items[2]];
}, 0); }, 0);
}); });
test('createQuickPick, continue after first accept', function (_done) { test('createQuickPick, continue after first accept', function (_done) {
let done = (err?: any) => { let done = (err?: any) => {
done = () => {}; done = () => { };
_done(err); _done(err);
}; };
const quickPick = createQuickPick({ const quickPick = createQuickPick({
events: ['active', 'selection', 'accept', 'active', 'selection', 'active', 'selection', 'accept', 'hide'], events: ['active', 'selection', 'accept', 'active', 'selection', 'active', 'selection', 'accept', 'hide'],
activeItems: [['eins'], [], ['drei']], activeItems: [['eins'], [], ['drei']],
selectionItems: [['eins'], [], ['drei']], selectionItems: [['eins'], [], ['drei']],
acceptedItems: { acceptedItems: {
active: [['eins'], ['drei']], active: [['eins'], ['drei']],
selection: [['eins'], ['drei']], selection: [['eins'], ['drei']],
dispose: [false, true] dispose: [false, true]
}, },
}, (err?: any) => done(err)); }, (err?: any) => done(err));
quickPick.items = ['eins', 'zwei'].map(label => ({ label })); quickPick.items = ['eins', 'zwei'].map(label => ({ label }));
quickPick.show(); quickPick.show();
(async () => { (async () => {
await commands.executeCommand('workbench.action.acceptSelectedQuickOpenItem'); await commands.executeCommand('workbench.action.acceptSelectedQuickOpenItem');
await timeout(async () => {
quickPick.items = ['drei', 'vier'].map(label => ({ label }));
await timeout(async () => { await timeout(async () => {
quickPick.items = ['drei', 'vier'].map(label => ({ label })); await commands.executeCommand('workbench.action.acceptSelectedQuickOpenItem');
await timeout(async () => {
await commands.executeCommand('workbench.action.acceptSelectedQuickOpenItem');
}, 0);
}, 0); }, 0);
})() }, 0);
.catch(err => done(err)); })()
.catch(err => done(err));
});
test('createQuickPick, dispose in onDidHide', function (_done) {
let done = (err?: any) => {
done = () => { };
_done(err);
};
let hidden = false;
const quickPick = window.createQuickPick();
quickPick.onDidHide(() => {
if (hidden) {
done(new Error('Already hidden'));
} else {
hidden = true;
quickPick.dispose();
setTimeout(done, 0);
}
}); });
quickPick.show();
quickPick.hide();
});
test('createQuickPick, dispose in onDidHide', function (_done) { test('createQuickPick, hide and dispose', function (_done) {
let done = (err?: any) => { let done = (err?: any) => {
done = () => {}; done = () => { };
_done(err); _done(err);
}; };
let hidden = false; let hidden = false;
const quickPick = window.createQuickPick(); const quickPick = window.createQuickPick();
quickPick.onDidHide(() => { quickPick.onDidHide(() => {
if (hidden) { if (hidden) {
done(new Error('Already hidden')); done(new Error('Already hidden'));
} else { } else {
hidden = true; hidden = true;
quickPick.dispose(); setTimeout(done, 0);
setTimeout(done, 0); }
}
});
quickPick.show();
quickPick.hide();
});
test('createQuickPick, hide and dispose', function (_done) {
let done = (err?: any) => {
done = () => {};
_done(err);
};
let hidden = false;
const quickPick = window.createQuickPick();
quickPick.onDidHide(() => {
if (hidden) {
done(new Error('Already hidden'));
} else {
hidden = true;
setTimeout(done, 0);
}
});
quickPick.show();
quickPick.hide();
quickPick.dispose();
}); });
quickPick.show();
quickPick.hide();
quickPick.dispose();
}); });
}); });
@ -276,4 +274,4 @@ function createQuickPick(expected: QuickPickExpected, done: (err?: any) => void,
async function timeout<T>(run: () => Promise<T> | T, ms: number): Promise<T> { async function timeout<T>(run: () => Promise<T> | T, ms: number): Promise<T> {
return new Promise<T>(resolve => setTimeout(() => resolve(run()), ms)); return new Promise<T>(resolve => setTimeout(() => resolve(run()), ms));
} }

View file

@ -6,7 +6,8 @@
import { window, Pseudoterminal, EventEmitter, TerminalDimensions, workspace, ConfigurationTarget, Disposable, UIKind, env } from 'vscode'; import { window, Pseudoterminal, EventEmitter, TerminalDimensions, workspace, ConfigurationTarget, Disposable, UIKind, env } from 'vscode';
import { doesNotThrow, equal, ok, deepEqual, throws } from 'assert'; import { doesNotThrow, equal, ok, deepEqual, throws } from 'assert';
suite('window namespace tests', () => { // TODO@Daniel flaky tests (https://github.com/microsoft/vscode/issues/92826)
((env.uiKind === UIKind.Web) ? suite.skip : suite)('vscode API - terminal', () => {
suiteSetup(async () => { suiteSetup(async () => {
// Disable conpty in integration tests because of https://github.com/microsoft/vscode/issues/76548 // Disable conpty in integration tests because of https://github.com/microsoft/vscode/issues/76548
await workspace.getConfiguration('terminal.integrated').update('windowsEnableConpty', false, ConfigurationTarget.Global); await workspace.getConfiguration('terminal.integrated').update('windowsEnableConpty', false, ConfigurationTarget.Global);
@ -19,8 +20,8 @@ suite('window namespace tests', () => {
disposables.length = 0; disposables.length = 0;
}); });
// TODO@Daniel flaky test (https://github.com/microsoft/vscode/issues/92826)
((env.uiKind === UIKind.Web) ? test.skip : test)('sendText immediately after createTerminal should not throw', (done) => { test('sendText immediately after createTerminal should not throw', (done) => {
disposables.push(window.onDidOpenTerminal(term => { disposables.push(window.onDidOpenTerminal(term => {
try { try {
equal(terminal, term); equal(terminal, term);
@ -34,8 +35,7 @@ suite('window namespace tests', () => {
doesNotThrow(terminal.sendText.bind(terminal, 'echo "foo"')); doesNotThrow(terminal.sendText.bind(terminal, 'echo "foo"'));
}); });
// TODO@Daniel done called multiple times (https://github.com/microsoft/vscode/issues/92826) test('onDidCloseTerminal event fires when terminal is disposed', (done) => {
((env.uiKind === UIKind.Web) ? test.skip : test)('onDidCloseTerminal event fires when terminal is disposed', (done) => {
disposables.push(window.onDidOpenTerminal(term => { disposables.push(window.onDidOpenTerminal(term => {
try { try {
equal(terminal, term); equal(terminal, term);
@ -235,8 +235,7 @@ suite('window namespace tests', () => {
}); });
suite('window.onDidWriteTerminalData', () => { suite('window.onDidWriteTerminalData', () => {
// TODO@Daniel done called multiple times (https://github.com/microsoft/vscode/issues/92826) test('should listen to all future terminal data events', (done) => {
((env.uiKind === UIKind.Web) ? test.skip : test)('should listen to all future terminal data events', (done) => {
const openEvents: string[] = []; const openEvents: string[] = [];
const dataEvents: { name: string, data: string }[] = []; const dataEvents: { name: string, data: string }[] = [];
const closeEvents: string[] = []; const closeEvents: string[] = [];

View file

@ -7,12 +7,9 @@ import 'mocha';
import * as assert from 'assert'; import * as assert from 'assert';
import * as vscode from 'vscode'; import * as vscode from 'vscode';
suite('vscode API - types', () => {
suite('types', () => {
test('static properties, es5 compat class', function () { test('static properties, es5 compat class', function () {
assert.ok(vscode.ThemeIcon.File instanceof vscode.ThemeIcon); assert.ok(vscode.ThemeIcon.File instanceof vscode.ThemeIcon);
assert.ok(vscode.ThemeIcon.Folder instanceof vscode.ThemeIcon); assert.ok(vscode.ThemeIcon.Folder instanceof vscode.ThemeIcon);
assert.ok(vscode.CodeActionKind.Empty instanceof vscode.CodeActionKind); assert.ok(vscode.CodeActionKind.Empty instanceof vscode.CodeActionKind);

View file

@ -14,7 +14,7 @@ const webviewId = 'myWebview';
const testDocument = join(vscode.workspace.rootPath || '', './bower.json'); const testDocument = join(vscode.workspace.rootPath || '', './bower.json');
suite('Webview tests', () => { suite('vscode API - webview', () => {
const disposables: vscode.Disposable[] = []; const disposables: vscode.Disposable[] = [];
function _register<T extends vscode.Disposable>(disposable: T) { function _register<T extends vscode.Disposable>(disposable: T) {

View file

@ -8,7 +8,7 @@ import { workspace, window, commands, ViewColumn, TextEditorViewColumnChangeEven
import { join } from 'path'; import { join } from 'path';
import { closeAllEditors, pathEquals, createRandomFile } from '../utils'; import { closeAllEditors, pathEquals, createRandomFile } from '../utils';
suite('window namespace tests', () => { suite('vscode API - window', () => {
teardown(closeAllEditors); teardown(closeAllEditors);

View file

@ -7,7 +7,7 @@ import * as assert from 'assert';
import * as vscode from 'vscode'; import * as vscode from 'vscode';
import { createRandomFile, withLogDisabled } from '../utils'; import { createRandomFile, withLogDisabled } from '../utils';
suite('workspace-event', () => { suite('vscode API - workspace events', () => {
const disposables: vscode.Disposable[] = []; const disposables: vscode.Disposable[] = [];

View file

@ -7,7 +7,7 @@ import * as assert from 'assert';
import * as vscode from 'vscode'; import * as vscode from 'vscode';
import { posix } from 'path'; import { posix } from 'path';
suite('workspace-fs', () => { suite('vscode API - workspace-fs', () => {
let root: vscode.Uri; let root: vscode.Uri;

View file

@ -6,7 +6,7 @@
import * as assert from 'assert'; import * as assert from 'assert';
import { window, tasks, Disposable, TaskDefinition, Task, EventEmitter, CustomExecution, Pseudoterminal, TaskScope, commands, Task2 } from 'vscode'; import { window, tasks, Disposable, TaskDefinition, Task, EventEmitter, CustomExecution, Pseudoterminal, TaskScope, commands, Task2 } from 'vscode';
suite('workspace-namespace', () => { suite('vscode API - tasks', () => {
suite('Tasks', () => { suite('Tasks', () => {
let disposables: Disposable[] = []; let disposables: Disposable[] = [];

View file

@ -9,7 +9,7 @@ import { createRandomFile, deleteFile, closeAllEditors, pathEquals, rndName, dis
import { join, posix, basename } from 'path'; import { join, posix, basename } from 'path';
import * as fs from 'fs'; import * as fs from 'fs';
suite('workspace-namespace', () => { suite('vscode API - workspace', () => {
teardown(closeAllEditors); teardown(closeAllEditors);

View file

@ -8,7 +8,7 @@ import * as vscode from 'vscode';
import { closeAllEditors, pathEquals } from '../utils'; import { closeAllEditors, pathEquals } from '../utils';
import { join } from 'path'; import { join } from 'path';
suite('workspace-namespace', () => { suite('vscode API - workspace', () => {
teardown(closeAllEditors); teardown(closeAllEditors);