Path: blob/main/extensions/emmet/src/test/testUtils.ts
4774 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import * as vscode from 'vscode';6import * as fs from 'fs';7import * as os from 'os';8import { join } from 'path';910export function rndName() {11let name = '';12const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';13for (let i = 0; i < 10; i++) {14name += possible.charAt(Math.floor(Math.random() * possible.length));15}16return name;17}1819export function createRandomFile(contents = '', fileExtension = 'txt'): Thenable<vscode.Uri> {20return new Promise((resolve, reject) => {21const tmpFile = join(os.tmpdir(), rndName() + '.' + fileExtension);22fs.writeFile(tmpFile, contents, (error) => {23if (error) {24return reject(error);25}2627resolve(vscode.Uri.file(tmpFile));28});29});30}3132export function pathEquals(path1: string, path2: string): boolean {33if (process.platform !== 'linux') {34path1 = path1.toLowerCase();35path2 = path2.toLowerCase();36}3738return path1 === path2;39}4041export function deleteFile(file: vscode.Uri): Thenable<boolean> {42return new Promise((resolve, reject) => {43fs.unlink(file.fsPath, (err) => {44if (err) {45reject(err);46} else {47resolve(true);48}49});50});51}5253export function closeAllEditors(): Thenable<any> {54return vscode.commands.executeCommand('workbench.action.closeAllEditors');55}5657export function withRandomFileEditor(initialContents: string, fileExtension: string = 'txt', run: (editor: vscode.TextEditor, doc: vscode.TextDocument) => Thenable<void>): Thenable<boolean> {58return createRandomFile(initialContents, fileExtension).then(file => {59return vscode.workspace.openTextDocument(file).then(doc => {60return vscode.window.showTextDocument(doc).then((editor) => {61return run(editor, doc).then(_ => {62if (doc.isDirty) {63return doc.save().then(() => {64return deleteFile(file);65});66} else {67return deleteFile(file);68}69});70});71});72});73}747576