Skip to content

Commit

Permalink
#79983 add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
sandy081 committed Aug 28, 2019
1 parent fefdc17 commit 5b991cf
Show file tree
Hide file tree
Showing 2 changed files with 133 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import { URI } from 'vs/base/common/uri';
import { Event, Emitter } from 'vs/base/common/event';
import { ResourceMap } from 'vs/base/common/map';
import { equals, deepClone } from 'vs/base/common/objects';
import { equals } from 'vs/base/common/objects';
import { Disposable } from 'vs/base/common/lifecycle';
import { Queue, Barrier } from 'vs/base/common/async';
import { IJSONContributionRegistry, Extensions as JSONExtensions } from 'vs/platform/jsonschemas/common/jsonContributionRegistry';
Expand All @@ -22,7 +22,7 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti
import { ConfigurationEditingService, EditableConfigurationTarget } from 'vs/workbench/services/configuration/common/configurationEditingService';
import { WorkspaceConfiguration, FolderConfiguration, RemoteUserConfiguration, UserConfiguration } from 'vs/workbench/services/configuration/browser/configuration';
import { JSONEditingService } from 'vs/workbench/services/configuration/common/jsonEditingService';
import { IJSONSchema, IJSONSchemaMap } from 'vs/base/common/jsonSchema';
import { IJSONSchema } from 'vs/base/common/jsonSchema';
import { isEqual, dirname } from 'vs/base/common/resources';
import { mark } from 'vs/base/common/performance';
import { IRemoteAgentService } from 'vs/workbench/services/remote/common/remoteAgentService';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -735,6 +735,11 @@ suite('WorkspaceConfigurationService - Folder', () => {
'default': 'isSet',
scope: ConfigurationScope.MACHINE
},
'configurationService.folder.machineOverridableSetting': {
'type': 'string',
'default': 'isSet',
scope: ConfigurationScope.MACHINE_OVERRIDABLE
},
'configurationService.folder.testSetting': {
'type': 'string',
'default': 'isSet',
Expand Down Expand Up @@ -787,7 +792,7 @@ suite('WorkspaceConfigurationService - Folder', () => {
});

test('defaults', () => {
assert.deepEqual(testObject.getValue('configurationService'), { 'folder': { 'applicationSetting': 'isSet', 'machineSetting': 'isSet', 'testSetting': 'isSet' } });
assert.deepEqual(testObject.getValue('configurationService'), { 'folder': { 'applicationSetting': 'isSet', 'machineSetting': 'isSet', 'machineOverridableSetting': 'isSet', 'testSetting': 'isSet' } });
});

test('globals override defaults', () => {
Expand Down Expand Up @@ -815,6 +820,13 @@ suite('WorkspaceConfigurationService - Folder', () => {
.then(() => assert.equal(testObject.getValue('configurationService.folder.testSetting'), 'workspaceValue'));
});

test('machine overridable settings override user Settings', () => {
fs.writeFileSync(globalSettingsFile, '{ "configurationService.folder.machineOverridableSetting": "userValue" }');
fs.writeFileSync(path.join(workspaceDir, '.vscode', 'settings.json'), '{ "configurationService.folder.machineOverridableSetting": "workspaceValue" }');
return testObject.reloadConfiguration()
.then(() => assert.equal(testObject.getValue('configurationService.folder.machineOverridableSetting'), 'workspaceValue'));
});

test('workspace settings override user settings after defaults are registered ', () => {
fs.writeFileSync(globalSettingsFile, '{ "configurationService.folder.newSetting": "userValue" }');
fs.writeFileSync(path.join(workspaceDir, '.vscode', 'settings.json'), '{ "configurationService.folder.newSetting": "workspaceValue" }');
Expand All @@ -836,6 +848,28 @@ suite('WorkspaceConfigurationService - Folder', () => {
});
});

test('machine overridable settings override user settings after defaults are registered ', () => {
fs.writeFileSync(globalSettingsFile, '{ "configurationService.folder.newMachineOverridableSetting": "userValue" }');
fs.writeFileSync(path.join(workspaceDir, '.vscode', 'settings.json'), '{ "configurationService.folder.newMachineOverridableSetting": "workspaceValue" }');
return testObject.reloadConfiguration()
.then(() => {

configurationRegistry.registerConfiguration({
'id': '_test',
'type': 'object',
'properties': {
'configurationService.folder.newMachineOverridableSetting': {
'type': 'string',
'default': 'isSet',
scope: ConfigurationScope.MACHINE_OVERRIDABLE
}
}
});

assert.equal(testObject.getValue('configurationService.folder.newMachineOverridableSetting'), 'workspaceValue');
});
});

test('application settings are not read from workspace', () => {
fs.writeFileSync(globalSettingsFile, '{ "configurationService.folder.applicationSetting": "userValue" }');
fs.writeFileSync(path.join(workspaceDir, '.vscode', 'settings.json'), '{ "configurationService.folder.applicationSetting": "workspaceValue" }');
Expand Down Expand Up @@ -1066,6 +1100,11 @@ suite('WorkspaceConfigurationService-Multiroot', () => {
'default': 'isSet',
scope: ConfigurationScope.MACHINE
},
'configurationService.workspace.machineOverridableSetting': {
'type': 'string',
'default': 'isSet',
scope: ConfigurationScope.MACHINE_OVERRIDABLE
},
'configurationService.workspace.testResourceSetting': {
'type': 'string',
'default': 'isSet',
Expand Down Expand Up @@ -1153,6 +1192,26 @@ suite('WorkspaceConfigurationService-Multiroot', () => {
});
});

test('workspace settings override user settings after defaults are registered for machine overridable settings ', () => {
fs.writeFileSync(globalSettingsFile, '{ "configurationService.workspace.newMachineOverridableSetting": "userValue" }');
return jsonEditingServce.write(workspaceContextService.getWorkspace().configuration!, { key: 'settings', value: { 'configurationService.workspace.newMachineOverridableSetting': 'workspaceValue' } }, true)
.then(() => testObject.reloadConfiguration())
.then(() => {
configurationRegistry.registerConfiguration({
'id': '_test',
'type': 'object',
'properties': {
'configurationService.workspace.newMachineOverridableSetting': {
'type': 'string',
'default': 'isSet',
scope: ConfigurationScope.MACHINE_OVERRIDABLE
}
}
});
assert.equal(testObject.getValue('configurationService.workspace.newMachineOverridableSetting'), 'workspaceValue');
});
});

test('application settings are not read from workspace folder', () => {
fs.writeFileSync(globalSettingsFile, '{ "configurationService.workspace.applicationSetting": "userValue" }');
fs.writeFileSync(workspaceContextService.getWorkspace().folders[0].toResource('.vscode/settings.json').fsPath, '{ "configurationService.workspace.applicationSetting": "workspaceFolderValue" }');
Expand Down Expand Up @@ -1227,6 +1286,26 @@ suite('WorkspaceConfigurationService-Multiroot', () => {
});
});

test('machine overridable setting in folder is read after it is registered later', () => {
fs.writeFileSync(workspaceContextService.getWorkspace().folders[0].toResource('.vscode/settings.json').fsPath, '{ "configurationService.workspace.testNewMachineOverridableSetting2": "workspaceFolderValue" }');
return jsonEditingServce.write(workspaceContextService.getWorkspace().configuration!, { key: 'settings', value: { 'configurationService.workspace.testNewMachineOverridableSetting2': 'workspaceValue' } }, true)
.then(() => testObject.reloadConfiguration())
.then(() => {
configurationRegistry.registerConfiguration({
'id': '_test',
'type': 'object',
'properties': {
'configurationService.workspace.testNewMachineOverridableSetting2': {
'type': 'string',
'default': 'isSet',
scope: ConfigurationScope.MACHINE_OVERRIDABLE
}
}
});
assert.equal(testObject.getValue('configurationService.workspace.testNewMachineOverridableSetting2', { resource: workspaceContextService.getWorkspace().folders[0].uri }), 'workspaceFolderValue');
});
});

test('inspect', () => {
let actual = testObject.inspect('something.missing');
assert.equal(actual.default, undefined);
Expand Down Expand Up @@ -1467,6 +1546,11 @@ suite('WorkspaceConfigurationService - Remote Folder', () => {
'default': 'isSet',
scope: ConfigurationScope.MACHINE
},
'configurationService.remote.machineOverridableSetting': {
'type': 'string',
'default': 'isSet',
scope: ConfigurationScope.MACHINE_OVERRIDABLE
},
'configurationService.remote.testSetting': {
'type': 'string',
'default': 'isSet',
Expand Down Expand Up @@ -1616,6 +1700,52 @@ suite('WorkspaceConfigurationService - Remote Folder', () => {
assert.equal(testObject.getValue('configurationService.remote.machineSetting'), 'isSet');
});

test('machine overridable settings in local user settings does not override defaults', async () => {
fs.writeFileSync(globalSettingsFile, '{ "configurationService.remote.machineOverridableSetting": "globalValue" }');
registerRemoteFileSystemProvider();
resolveRemoteEnvironment();
await initialize();
assert.equal(testObject.getValue('configurationService.remote.machineOverridableSetting'), 'isSet');
});

test('machine settings in local user settings does not override defaults after defalts are registered ', async () => {
fs.writeFileSync(globalSettingsFile, '{ "configurationService.remote.newMachineSetting": "userValue" }');
registerRemoteFileSystemProvider();
resolveRemoteEnvironment();
await initialize();
configurationRegistry.registerConfiguration({
'id': '_test',
'type': 'object',
'properties': {
'configurationService.remote.newMachineSetting': {
'type': 'string',
'default': 'isSet',
scope: ConfigurationScope.MACHINE
}
}
});
assert.equal(testObject.getValue('configurationService.remote.newMachineSetting'), 'isSet');
});

test('machine overridable settings in local user settings does not override defaults after defalts are registered ', async () => {
fs.writeFileSync(globalSettingsFile, '{ "configurationService.remote.newMachineOverridableSetting": "userValue" }');
registerRemoteFileSystemProvider();
resolveRemoteEnvironment();
await initialize();
configurationRegistry.registerConfiguration({
'id': '_test',
'type': 'object',
'properties': {
'configurationService.remote.newMachineOverridableSetting': {
'type': 'string',
'default': 'isSet',
scope: ConfigurationScope.MACHINE_OVERRIDABLE
}
}
});
assert.equal(testObject.getValue('configurationService.remote.newMachineOverridableSetting'), 'isSet');
});

});

function getWorkspaceId(configPath: URI): string {
Expand Down

0 comments on commit 5b991cf

Please sign in to comment.