Fix #15178 Finalize tabs API 🎉

This commit is contained in:
Logan Ramos
2022-04-21 11:07:44 -04:00
parent 2b3212ead0
commit aa69f3d762
9 changed files with 369 additions and 364 deletions

View File

@@ -5,7 +5,7 @@
import * as assert from 'assert';
import { join } from 'path';
import { CancellationTokenSource, commands, MarkdownString, TabKindNotebook, Position, QuickPickItem, Selection, StatusBarAlignment, TabKindTextDiff, TextEditor, TextEditorSelectionChangeKind, TextEditorViewColumnChangeEvent, TabKindText, Uri, ViewColumn, window, workspace } from 'vscode';
import { CancellationTokenSource, commands, MarkdownString, TabInputNotebook, Position, QuickPickItem, Selection, StatusBarAlignment, TextEditor, TextEditorSelectionChangeKind, TextEditorViewColumnChangeEvent, TabInputText, Uri, ViewColumn, window, workspace, TabInputTextDiff } from 'vscode';
import { assertNoRpc, closeAllEditors, createRandomFile, pathEquals } from '../utils';
@@ -371,28 +371,28 @@ suite('vscode API - window', () => {
});
//#region Tabs API tests
test('Tabs - move tab', async function () {
const [docA, docB, docC] = await Promise.all([
workspace.openTextDocument(await createRandomFile()),
workspace.openTextDocument(await createRandomFile()),
workspace.openTextDocument(await createRandomFile())
]);
// test('Tabs - move tab', async function () {
// const [docA, docB, docC] = await Promise.all([
// workspace.openTextDocument(await createRandomFile()),
// workspace.openTextDocument(await createRandomFile()),
// workspace.openTextDocument(await createRandomFile())
// ]);
await window.showTextDocument(docA, { viewColumn: ViewColumn.One, preview: false });
await window.showTextDocument(docB, { viewColumn: ViewColumn.One, preview: false });
await window.showTextDocument(docC, { viewColumn: ViewColumn.Two, preview: false });
// await window.showTextDocument(docA, { viewColumn: ViewColumn.One, preview: false });
// await window.showTextDocument(docB, { viewColumn: ViewColumn.One, preview: false });
// await window.showTextDocument(docC, { viewColumn: ViewColumn.Two, preview: false });
const tabGroups = window.tabGroups;
assert.strictEqual(tabGroups.all.length, 2);
// const tabGroups = window.tabGroups;
// assert.strictEqual(tabGroups.all.length, 2);
const group1Tabs = tabGroups.all[0].tabs;
assert.strictEqual(group1Tabs.length, 2);
// const group1Tabs = tabGroups.all[0].tabs;
// assert.strictEqual(group1Tabs.length, 2);
const group2Tabs = tabGroups.all[1].tabs;
assert.strictEqual(group2Tabs.length, 1);
// const group2Tabs = tabGroups.all[1].tabs;
// assert.strictEqual(group2Tabs.length, 1);
await tabGroups.move(group1Tabs[0], ViewColumn.One, 1);
});
// await tabGroups.move(group1Tabs[0], ViewColumn.One, 1);
// });
// TODO @lramos15 re-enable these once shape is more stable
test('Tabs - vscode.open & vscode.diff', async function () {
@@ -423,14 +423,14 @@ suite('vscode API - window', () => {
const tabs = window.tabGroups.all.map(g => g.tabs).flat(1);
assert.strictEqual(tabs.length, 5);
assert.ok(tabs[0].kind instanceof TabKindText);
assert.strictEqual(tabs[0].kind.uri.toString(), docA.uri.toString());
assert.ok(tabs[1].kind instanceof TabKindText);
assert.strictEqual(tabs[1].kind.uri.toString(), docB.uri.toString());
assert.ok(tabs[2].kind instanceof TabKindText);
assert.strictEqual(tabs[2].kind.uri.toString(), docC.uri.toString());
assert.ok(tabs[3].kind instanceof TabKindText);
assert.strictEqual(tabs[3].kind.uri.toString(), commandFile.toString());
assert.ok(tabs[0].input instanceof TabInputText);
assert.strictEqual(tabs[0].input.uri.toString(), docA.uri.toString());
assert.ok(tabs[1].input instanceof TabInputText);
assert.strictEqual(tabs[1].input.uri.toString(), docB.uri.toString());
assert.ok(tabs[2].input instanceof TabInputText);
assert.strictEqual(tabs[2].input.uri.toString(), docC.uri.toString());
assert.ok(tabs[3].input instanceof TabInputText);
assert.strictEqual(tabs[3].input.uri.toString(), commandFile.toString());
});
test('Tabs - Ensure tabs getter is correct', async function () {
@@ -459,17 +459,17 @@ suite('vscode API - window', () => {
assert.strictEqual(tabs.length, 5);
// All resources should match the text documents as they're the only tabs currently open
assert.ok(tabs[0].kind instanceof TabKindText);
assert.strictEqual(tabs[0].kind.uri.toString(), docA.uri.toString());
assert.ok(tabs[1].kind instanceof TabKindNotebook);
assert.strictEqual(tabs[1].kind.uri.toString(), notebookDoc.uri.toString());
assert.ok(tabs[2].kind instanceof TabKindText);
assert.strictEqual(tabs[2].kind.uri.toString(), docB.uri.toString());
assert.ok(tabs[3].kind instanceof TabKindText);
assert.strictEqual(tabs[3].kind.uri.toString(), docC.uri.toString());
assert.ok(tabs[0].input instanceof TabInputText);
assert.strictEqual(tabs[0].input.uri.toString(), docA.uri.toString());
assert.ok(tabs[1].input instanceof TabInputNotebook);
assert.strictEqual(tabs[1].input.uri.toString(), notebookDoc.uri.toString());
assert.ok(tabs[2].input instanceof TabInputText);
assert.strictEqual(tabs[2].input.uri.toString(), docB.uri.toString());
assert.ok(tabs[3].input instanceof TabInputText);
assert.strictEqual(tabs[3].input.uri.toString(), docC.uri.toString());
// Diff editor and side by side editor report the right side as the resource
assert.ok(tabs[4].kind instanceof TabKindTextDiff);
assert.strictEqual(tabs[4].kind.modified.toString(), rightDiff.toString());
assert.ok(tabs[4].input instanceof TabInputTextDiff);
assert.strictEqual(tabs[4].input.modified.toString(), rightDiff.toString());
assert.strictEqual(tabs[0].group.viewColumn, ViewColumn.One);
assert.strictEqual(tabs[1].group.viewColumn, ViewColumn.One);
@@ -495,20 +495,20 @@ suite('vscode API - window', () => {
await window.showTextDocument(docA, { viewColumn: ViewColumn.One, preview: false });
let activeTab = getActiveTabInActiveGroup();
assert.ok(activeTab);
assert.ok(activeTab.kind instanceof TabKindText);
assert.strictEqual(activeTab.kind.uri.toString(), docA.uri.toString());
assert.ok(activeTab.input instanceof TabInputText);
assert.strictEqual(activeTab.input.uri.toString(), docA.uri.toString());
await window.showTextDocument(docB, { viewColumn: ViewColumn.Two, preview: false });
activeTab = getActiveTabInActiveGroup();
assert.ok(activeTab);
assert.ok(activeTab.kind instanceof TabKindText);
assert.strictEqual(activeTab.kind.uri.toString(), docB.uri.toString());
assert.ok(activeTab.input instanceof TabInputText);
assert.strictEqual(activeTab.input.uri.toString(), docB.uri.toString());
await window.showTextDocument(docC, { viewColumn: ViewColumn.Three, preview: false });
activeTab = getActiveTabInActiveGroup();
assert.ok(activeTab);
assert.ok(activeTab.kind instanceof TabKindText);
assert.strictEqual(activeTab.kind.uri.toString(), docC.uri.toString());
assert.ok(activeTab.input instanceof TabInputText);
assert.strictEqual(activeTab.input.uri.toString(), docC.uri.toString());
await commands.executeCommand('workbench.action.closeActiveEditor');
await commands.executeCommand('workbench.action.closeActiveEditor');