提交 7120fe07 编写于 作者: S Sandeep Somavarapu

Tests #38215

上级 e505bbd3
......@@ -32,6 +32,7 @@ import { ITextModelService } from 'vs/editor/common/services/resolverService';
import { TextModelResolverService } from 'vs/workbench/services/textmodelResolver/common/textModelResolverService';
import { IJSONEditingService } from 'vs/workbench/services/configuration/common/jsonEditing';
import { JSONEditingService } from 'vs/workbench/services/configuration/node/jsonEditingService';
import { IWorkspaceConfigurationService } from 'vs/workbench/services/configuration/common/configuration';
class SettingsTestEnvironmentService extends EnvironmentService {
......@@ -296,7 +297,7 @@ suite('WorkspaceContextService - Workspace', () => {
suite('WorkspaceConfigurationService - Folder', () => {
let workspaceName = `testWorkspace${uuid.generateUuid()}`, parentResource: string, workspaceDir: string, testObject: IConfigurationService, globalSettingsFile: string;
let workspaceName = `testWorkspace${uuid.generateUuid()}`, parentResource: string, workspaceDir: string, testObject: IWorkspaceConfigurationService, globalSettingsFile: string;
const configurationRegistry = <IConfigurationRegistry>Registry.as(ConfigurationExtensions.Configuration);
suiteSetup(() => {
......@@ -383,19 +384,22 @@ suite('WorkspaceConfigurationService - Folder', () => {
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" }');
configurationRegistry.registerConfiguration({
'id': '_test',
'type': 'object',
'properties': {
'configurationService.folder.newSetting': {
'type': 'string',
'default': 'isSet'
}
}
});
return testObject.reloadConfiguration()
.then(() => assert.equal(testObject.getValue('configurationService.folder.newSetting'), 'workspaceValue'));
.then(() => {
configurationRegistry.registerConfiguration({
'id': '_test',
'type': 'object',
'properties': {
'configurationService.folder.newSetting': {
'type': 'string',
'default': 'isSet'
}
}
});
assert.equal(testObject.getValue('configurationService.folder.newSetting'), 'workspaceValue');
});
});
test('executable settings are not read from workspace', () => {
......@@ -405,6 +409,31 @@ suite('WorkspaceConfigurationService - Folder', () => {
.then(() => assert.equal(testObject.getValue('configurationService.folder.executableSetting'), 'userValue'));
});
test('get unsupported workspace settings', () => {
fs.writeFileSync(path.join(workspaceDir, '.vscode', 'settings.json'), '{ "configurationService.folder.executableSetting": "workspaceValue" }');
return testObject.reloadConfiguration()
.then(() => assert.deepEqual(testObject.getUnsupportedWorkspaceKeys(), ['configurationService.folder.executableSetting']));
});
test('get unsupported workspace settings after defaults are registered', () => {
fs.writeFileSync(path.join(workspaceDir, '.vscode', 'settings.json'), '{ "configurationService.folder.anotherExecutableSetting": "workspaceValue" }');
return testObject.reloadConfiguration()
.then(() => {
configurationRegistry.registerConfiguration({
'id': '_test',
'type': 'object',
'properties': {
'configurationService.folder.anotherExecutableSetting': {
'type': 'string',
'default': 'isSet',
isExecutable: true
}
}
});
assert.deepEqual(testObject.getUnsupportedWorkspaceKeys(), ['configurationService.folder.anotherExecutableSetting']);
});
});
test('workspace change triggers event', () => {
const settingsFile = path.join(workspaceDir, '.vscode', 'settings.json');
fs.writeFileSync(settingsFile, '{ "configurationService.folder.testSetting": "workspaceValue" }');
......@@ -580,12 +609,12 @@ suite('WorkspaceConfigurationService - Folder', () => {
});
});
suite('WorkspaceConfigurationService - Update (Multiroot)', () => {
suite('WorkspaceConfigurationService - Multiroot', () => {
let parentResource: string, workspaceContextService: IWorkspaceContextService, jsonEditingServce: IJSONEditingService, testObject: IConfigurationService;
let parentResource: string, workspaceContextService: IWorkspaceContextService, environmentService: IEnvironmentService, jsonEditingServce: IJSONEditingService, testObject: IWorkspaceConfigurationService;
const configurationRegistry = <IConfigurationRegistry>Registry.as(ConfigurationExtensions.Configuration);
suiteSetup(() => {
const configurationRegistry = <IConfigurationRegistry>Registry.as(ConfigurationExtensions.Configuration);
configurationRegistry.registerConfiguration({
'id': '_test',
'type': 'object',
......@@ -598,6 +627,17 @@ suite('WorkspaceConfigurationService - Update (Multiroot)', () => {
'type': 'string',
'default': 'isSet',
scope: ConfigurationScope.RESOURCE
},
'configurationService.workspace.testExecutableSetting': {
'type': 'string',
'default': 'isSet',
isExecutable: true
},
'configurationService.workspace.testExecutableResourceSetting': {
'type': 'string',
'default': 'isSet',
isExecutable: true,
scope: ConfigurationScope.RESOURCE
}
}
});
......@@ -609,7 +649,7 @@ suite('WorkspaceConfigurationService - Update (Multiroot)', () => {
parentResource = parentDir;
const environmentService = new SettingsTestEnvironmentService(parseArgs(process.argv), process.execPath, path.join(parentDir, 'settings.json'));
environmentService = new SettingsTestEnvironmentService(parseArgs(process.argv), process.execPath, path.join(parentDir, 'settings.json'));
const workspaceService = new WorkspaceService(environmentService);
const instantiationService = <TestInstantiationService>workbenchInstantiationService();
......@@ -640,6 +680,89 @@ suite('WorkspaceConfigurationService - Update (Multiroot)', () => {
}
});
test('executable settings are not read from workspace', () => {
fs.writeFileSync(environmentService.appSettingsPath, '{ "configurationService.workspace.testExecutableSetting": "userValue" }');
return jsonEditingServce.write(workspaceContextService.getWorkspace().configuration, { key: 'settings', value: { 'configurationService.workspace.testExecutableSetting': 'workspaceValue' } }, true)
.then(() => testObject.reloadConfiguration())
.then(() => assert.equal(testObject.getValue('configurationService.workspace.testExecutableSetting'), 'userValue'));
});
test('executable settings are not read from workspace folder', () => {
fs.writeFileSync(environmentService.appSettingsPath, '{ "configurationService.workspace.testExecutableResourceSetting": "userValue" }');
fs.writeFileSync(workspaceContextService.getWorkspace().folders[0].toResource('.vscode/settings.json').fsPath, '{ "configurationService.workspace.testExecutableResourceSetting": "workspaceFolderValue" }');
return testObject.reloadConfiguration()
.then(() => assert.equal(testObject.getValue('configurationService.workspace.testExecutableResourceSetting', { resource: workspaceContextService.getWorkspace().folders[0].uri }), 'userValue'));
});
test('get unsupported workspace settings', () => {
fs.writeFileSync(workspaceContextService.getWorkspace().folders[0].toResource('.vscode/settings.json').fsPath, '{ "configurationService.workspace.testExecutableResourceSetting": "workspaceFolderValue" }');
return jsonEditingServce.write(workspaceContextService.getWorkspace().configuration, { key: 'settings', value: { 'configurationService.workspace.testExecutableSetting': 'workspaceValue' } }, true)
.then(() => testObject.reloadConfiguration())
.then(() => assert.deepEqual(testObject.getUnsupportedWorkspaceKeys(), ['configurationService.workspace.testExecutableSetting', 'configurationService.workspace.testExecutableResourceSetting']));
});
test('workspace settings override user settings after defaults are registered ', () => {
fs.writeFileSync(environmentService.appSettingsPath, '{ "configurationService.workspace.newSetting": "userValue" }');
return jsonEditingServce.write(workspaceContextService.getWorkspace().configuration, { key: 'settings', value: { 'configurationService.workspace.newSetting': 'workspaceValue' } }, true)
.then(() => testObject.reloadConfiguration())
.then(() => {
configurationRegistry.registerConfiguration({
'id': '_test',
'type': 'object',
'properties': {
'configurationService.workspace.newSetting': {
'type': 'string',
'default': 'isSet'
}
}
});
assert.equal(testObject.getValue('configurationService.workspace.newSetting'), 'workspaceValue');
});
});
test('executable settings are not read from workspace folder after defaults are registered', () => {
fs.writeFileSync(environmentService.appSettingsPath, '{ "configurationService.workspace.testNewExecutableResourceSetting": "userValue" }');
fs.writeFileSync(workspaceContextService.getWorkspace().folders[0].toResource('.vscode/settings.json').fsPath, '{ "configurationService.workspace.testNewExecutableResourceSetting": "workspaceFolderValue" }');
return testObject.reloadConfiguration()
.then(() => {
configurationRegistry.registerConfiguration({
'id': '_test',
'type': 'object',
'properties': {
'configurationService.workspace.testNewExecutableResourceSetting': {
'type': 'string',
'default': 'isSet',
isExecutable: true,
scope: ConfigurationScope.RESOURCE
}
}
});
assert.equal(testObject.getValue('configurationService.workspace.testNewExecutableResourceSetting', { resource: workspaceContextService.getWorkspace().folders[0].uri }), 'userValue');
});
});
test('get unsupported workspace settings after defaults are registered', () => {
fs.writeFileSync(workspaceContextService.getWorkspace().folders[0].toResource('.vscode/settings.json').fsPath, '{ "configurationService.workspace.testNewExecutableResourceSetting2": "workspaceFolderValue" }');
return jsonEditingServce.write(workspaceContextService.getWorkspace().configuration, { key: 'settings', value: { 'configurationService.workspace.testExecutableSetting': 'workspaceValue' } }, true)
.then(() => testObject.reloadConfiguration())
.then(() => {
configurationRegistry.registerConfiguration({
'id': '_test',
'type': 'object',
'properties': {
'configurationService.workspace.testNewExecutableResourceSetting2': {
'type': 'string',
'default': 'isSet',
isExecutable: true,
scope: ConfigurationScope.RESOURCE
}
}
});
assert.deepEqual(testObject.getUnsupportedWorkspaceKeys(), ['configurationService.workspace.testExecutableSetting', 'configurationService.workspace.testNewExecutableResourceSetting2']);
});
});
test('update user configuration', () => {
return testObject.updateValue('configurationService.workspace.testSetting', 'userValue', ConfigurationTarget.USER)
.then(() => assert.equal(testObject.getValue('configurationService.workspace.testSetting'), 'userValue'));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册