提交 994ed41f 编写于 作者: S Sandeep Somavarapu

Fix #84528

上级 b9a9714d
......@@ -436,7 +436,7 @@ export class ConfigurationEditingService {
}
if (target === EditableConfigurationTarget.WORKSPACE) {
if (!operation.workspaceStandAloneConfigurationKey) {
if (!operation.workspaceStandAloneConfigurationKey && !OVERRIDE_PROPERTY_PATTERN.test(operation.key)) {
const configurationProperties = Registry.as<IConfigurationRegistry>(ConfigurationExtensions.Configuration).getConfigurationProperties();
if (configurationProperties[operation.key].scope === ConfigurationScope.APPLICATION) {
return this.reject(ConfigurationEditingErrorCode.ERROR_INVALID_WORKSPACE_CONFIGURATION_APPLICATION, target, operation);
......@@ -452,7 +452,7 @@ export class ConfigurationEditingService {
return this.reject(ConfigurationEditingErrorCode.ERROR_INVALID_FOLDER_TARGET, target, operation);
}
if (!operation.workspaceStandAloneConfigurationKey) {
if (!operation.workspaceStandAloneConfigurationKey && !OVERRIDE_PROPERTY_PATTERN.test(operation.key)) {
const configurationProperties = Registry.as<IConfigurationRegistry>(ConfigurationExtensions.Configuration).getConfigurationProperties();
if (configurationProperties[operation.key].scope !== ConfigurationScope.RESOURCE) {
return this.reject(ConfigurationEditingErrorCode.ERROR_INVALID_FOLDER_CONFIGURATION, target, operation);
......
......@@ -18,7 +18,7 @@ import * as uuid from 'vs/base/common/uuid';
import { IConfigurationRegistry, Extensions as ConfigurationExtensions } from 'vs/platform/configuration/common/configurationRegistry';
import { WorkspaceService } from 'vs/workbench/services/configuration/browser/configurationService';
import { ConfigurationEditingService, ConfigurationEditingError, ConfigurationEditingErrorCode, EditableConfigurationTarget } from 'vs/workbench/services/configuration/common/configurationEditingService';
import { WORKSPACE_STANDALONE_CONFIGURATIONS } from 'vs/workbench/services/configuration/common/configuration';
import { WORKSPACE_STANDALONE_CONFIGURATIONS, FOLDER_SETTINGS_PATH } from 'vs/workbench/services/configuration/common/configuration';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { TestInstantiationService } from 'vs/platform/instantiation/test/common/instantiationServiceMock';
import { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles';
......@@ -236,6 +236,41 @@ suite('ConfigurationEditingService', () => {
});
});
test('write overridable settings to user settings', () => {
const key = '[language]';
const value = { 'configurationEditing.service.testSetting': 'overridden value' };
return testObject.writeConfiguration(EditableConfigurationTarget.USER_LOCAL, { key, value })
.then(() => {
const contents = fs.readFileSync(globalSettingsFile).toString('utf8');
const parsed = json.parse(contents);
assert.deepEqual(parsed[key], value);
});
});
test('write overridable settings to workspace settings', () => {
const key = '[language]';
const value = { 'configurationEditing.service.testSetting': 'overridden value' };
return testObject.writeConfiguration(EditableConfigurationTarget.WORKSPACE, { key, value })
.then(() => {
const target = path.join(workspaceDir, FOLDER_SETTINGS_PATH);
const contents = fs.readFileSync(target).toString('utf8');
const parsed = json.parse(contents);
assert.deepEqual(parsed[key], value);
});
});
test('write overridable settings to workspace folder settings', () => {
const key = '[language]';
const value = { 'configurationEditing.service.testSetting': 'overridden value' };
const folderSettingsFile = path.join(workspaceDir, FOLDER_SETTINGS_PATH);
return testObject.writeConfiguration(EditableConfigurationTarget.WORKSPACE_FOLDER, { key, value }, { scopes: { resource: URI.file(folderSettingsFile) } })
.then(() => {
const contents = fs.readFileSync(folderSettingsFile).toString('utf8');
const parsed = json.parse(contents);
assert.deepEqual(parsed[key], value);
});
});
test('write workspace standalone setting - empty file', () => {
return testObject.writeConfiguration(EditableConfigurationTarget.WORKSPACE, { key: 'tasks.service.testSetting', value: 'value' })
.then(() => {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册