Skip to content

Commit

Permalink
Web: integration test failures in workspace events (fix microsoft#102365
Browse files Browse the repository at this point in the history
)
  • Loading branch information
bpasero authored and Charles-Gagnon committed Jul 14, 2020
1 parent 8f38f27 commit d82f8c1
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 2 deletions.
Expand Up @@ -5,7 +5,7 @@

import * as assert from 'assert';
import * as vscode from 'vscode';
import { createRandomFile, deleteFile, closeAllEditors, pathEquals, rndName, disposeAll, testFs, delay, withLogDisabled } from '../utils';
import { createRandomFile, deleteFile, closeAllEditors, pathEquals, rndName, disposeAll, testFs, delay, withLogDisabled, revertAllDirty } from '../utils';
import { join, posix, basename } from 'path';
import * as fs from 'fs';
import { TestFS } from '../memfs';
Expand Down Expand Up @@ -288,7 +288,7 @@ suite('vscode API - workspace', () => {
const file = await createRandomFile();
let disposables: vscode.Disposable[] = [];

await vscode.workspace.saveAll();
await revertAllDirty(); // needed for a clean state for `onDidSaveTextDocument` (#102365)

let pendingAsserts: Function[] = [];
let onDidOpenTextDocument = false;
Expand Down Expand Up @@ -330,6 +330,8 @@ suite('vscode API - workspace', () => {
let disposables: vscode.Disposable[] = [];
let pendingAsserts: Function[] = [];

await revertAllDirty(); // needed for a clean state for `onDidSaveTextDocument` (#102365)

let onDidSaveTextDocument = false;
disposables.push(vscode.workspace.onDidSaveTextDocument(e => {
pendingAsserts.push(() => assertEqualPath(e.uri.fsPath, file.fsPath));
Expand Down
4 changes: 4 additions & 0 deletions extensions/vscode-api-tests/src/utils.ts
Expand Up @@ -48,6 +48,10 @@ export function closeAllEditors(): Thenable<any> {
return vscode.commands.executeCommand('workbench.action.closeAllEditors');
}

export async function revertAllDirty(): Promise<void> {
return vscode.commands.executeCommand('_workbench.revertAllDirty');
}

export function disposeAll(disposables: vscode.Disposable[]) {
vscode.Disposable.from(...disposables).dispose();
}
Expand Down
14 changes: 14 additions & 0 deletions src/vs/workbench/api/browser/mainThreadEditors.ts
Expand Up @@ -27,6 +27,8 @@ import { IEditorGroupsService } from 'vs/workbench/services/editor/common/editor
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { IQuickInputService } from 'vs/platform/quickinput/common/quickInput';
import { openEditorWith } from 'vs/workbench/services/editor/common/editorOpenWith';
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
import { IWorkingCopyService } from 'vs/workbench/services/workingCopy/common/workingCopyService';

export class MainThreadTextEditors implements MainThreadTextEditorsShape {

Expand Down Expand Up @@ -331,3 +333,15 @@ CommandsRegistry.registerCommand('_workbench.diff', function (accessor: Services

return editorService.openEditor({ leftResource, rightResource, label, description, options }, viewColumnToEditorGroup(editorGroupService, position)).then(() => undefined);
});

CommandsRegistry.registerCommand('_workbench.revertAllDirty', (accessor: ServicesAccessor) => {
const environmentService = accessor.get(IEnvironmentService);
if (!environmentService.extensionTestsLocationURI) {
throw new Error('Command is only available when running extension tests.');
}

const workingCopyService = accessor.get(IWorkingCopyService);
for (const workingCopy of workingCopyService.dirtyWorkingCopies) {
workingCopy.revert({ soft: true });
}
});

0 comments on commit d82f8c1

Please sign in to comment.