mirror of
https://github.com/Microsoft/vscode
synced 2024-10-13 06:48:17 +00:00
Fix #84528
This commit is contained in:
parent
b9a9714d4c
commit
994ed41f2f
|
@ -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(() => {
|
||||
|
|
Loading…
Reference in a new issue