mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-24 10:38:59 +01:00
Set a read-only message from an extension (#185216)
* wip * Allow extensions to provide a readonly message Part of #166971 * Address feedback * Further address feedback * Fix some nits * Add test * Improve tests and respond to feedback * Don't render editor.readOnlyMessage in the settings UI * No need to validate the IMarkdownString --------- Co-authored-by: Benjamin Pasero <benjamin.pasero@microsoft.com> Co-authored-by: Alex Dima <alexdima@microsoft.com>
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import * as assert from 'assert';
|
||||
import * as vscode from 'vscode';
|
||||
import { TestFS } from '../memfs';
|
||||
import { assertNoRpc, closeAllEditors } from '../utils';
|
||||
|
||||
suite('vscode API - file system', () => {
|
||||
|
||||
teardown(async function () {
|
||||
assertNoRpc();
|
||||
await closeAllEditors();
|
||||
});
|
||||
|
||||
test('readonly file system - boolean', async function () {
|
||||
const fs = new TestFS('this-fs', false);
|
||||
const reg = vscode.workspace.registerFileSystemProvider(fs.scheme, fs, { isReadonly: true });
|
||||
let error: any | undefined;
|
||||
try {
|
||||
await vscode.workspace.fs.writeFile(vscode.Uri.parse('this-fs:/foo.txt'), Buffer.from('Hello World'));
|
||||
} catch (e) {
|
||||
error = e;
|
||||
}
|
||||
assert.strictEqual(vscode.workspace.fs.isWritableFileSystem('this-fs'), false);
|
||||
assert.strictEqual(error instanceof vscode.FileSystemError, true);
|
||||
const fileError: vscode.FileSystemError = error;
|
||||
assert.strictEqual(fileError.code, 'NoPermissions');
|
||||
reg.dispose();
|
||||
});
|
||||
|
||||
test('readonly file system - markdown', async function () {
|
||||
const fs = new TestFS('this-fs', false);
|
||||
const reg = vscode.workspace.registerFileSystemProvider(fs.scheme, fs, { isReadonly: new vscode.MarkdownString('This file is readonly.') });
|
||||
let error: any | undefined;
|
||||
try {
|
||||
await vscode.workspace.fs.writeFile(vscode.Uri.parse('this-fs:/foo.txt'), Buffer.from('Hello World'));
|
||||
} catch (e) {
|
||||
error = e;
|
||||
}
|
||||
assert.strictEqual(vscode.workspace.fs.isWritableFileSystem('this-fs'), false);
|
||||
assert.strictEqual(error instanceof vscode.FileSystemError, true);
|
||||
const fileError: vscode.FileSystemError = error;
|
||||
assert.strictEqual(fileError.code, 'NoPermissions');
|
||||
reg.dispose();
|
||||
});
|
||||
|
||||
test('writeable file system', async function () {
|
||||
const fs = new TestFS('this-fs', false);
|
||||
const reg = vscode.workspace.registerFileSystemProvider(fs.scheme, fs);
|
||||
let error: any | undefined;
|
||||
try {
|
||||
await vscode.workspace.fs.writeFile(vscode.Uri.parse('this-fs:/foo.txt'), Buffer.from('Hello World'));
|
||||
} catch (e) {
|
||||
error = e;
|
||||
}
|
||||
assert.strictEqual(vscode.workspace.fs.isWritableFileSystem('this-fs'), true);
|
||||
assert.strictEqual(error, undefined);
|
||||
reg.dispose();
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user