|
|
|
|
@@ -46,6 +46,7 @@ import { IConfigurationCache } from 'vs/workbench/services/configuration/common/
|
|
|
|
|
import { VSBuffer } from 'vs/base/common/buffer';
|
|
|
|
|
import { SignService } from 'vs/platform/sign/browser/signService';
|
|
|
|
|
import { FileUserDataService } from 'vs/workbench/services/userData/common/fileUserDataService';
|
|
|
|
|
import { IUserDataService } from 'vs/workbench/services/userData/common/userDataService';
|
|
|
|
|
|
|
|
|
|
class SettingsTestEnvironmentService extends EnvironmentService {
|
|
|
|
|
|
|
|
|
|
@@ -53,8 +54,7 @@ class SettingsTestEnvironmentService extends EnvironmentService {
|
|
|
|
|
super(args, _execPath);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
get appSettingsHome(): URI { return dirname(this.settingsResource); }
|
|
|
|
|
get settingsResource(): URI { return URI.file(this._settingsPath); }
|
|
|
|
|
get appSettingsHome(): URI { return dirname(URI.file(this._settingsPath)); }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function setUpFolderWorkspace(folderName: string): Promise<{ parentDir: string, folderDir: string }> {
|
|
|
|
|
@@ -754,6 +754,7 @@ suite('WorkspaceConfigurationService - Folder', () => {
|
|
|
|
|
const fileService = new FileService(new NullLogService());
|
|
|
|
|
fileService.registerProvider(Schemas.file, new DiskFileSystemProvider(new NullLogService()));
|
|
|
|
|
const userDataService = new FileUserDataService(environmentService, fileService);
|
|
|
|
|
instantiationService.stub(IUserDataService, userDataService);
|
|
|
|
|
const workspaceService = new WorkspaceService({ configurationCache: new ConfigurationCache(environmentService) }, fileService, userDataService, remoteAgentService);
|
|
|
|
|
instantiationService.stub(IWorkspaceContextService, workspaceService);
|
|
|
|
|
instantiationService.stub(IConfigurationService, workspaceService);
|
|
|
|
|
@@ -1037,7 +1038,7 @@ suite('WorkspaceConfigurationService - Folder', () => {
|
|
|
|
|
|
|
|
|
|
suite('WorkspaceConfigurationService-Multiroot', () => {
|
|
|
|
|
|
|
|
|
|
let parentResource: string, workspaceContextService: IWorkspaceContextService, environmentService: IEnvironmentService, jsonEditingServce: IJSONEditingService, testObject: IConfigurationService;
|
|
|
|
|
let parentResource: string, workspaceContextService: IWorkspaceContextService, environmentService: IEnvironmentService, jsonEditingServce: IJSONEditingService, testObject: IConfigurationService, globalSettingsFile: string;
|
|
|
|
|
const configurationRegistry = Registry.as<IConfigurationRegistry>(ConfigurationExtensions.Configuration);
|
|
|
|
|
|
|
|
|
|
suiteSetup(() => {
|
|
|
|
|
@@ -1073,14 +1074,16 @@ suite('WorkspaceConfigurationService-Multiroot', () => {
|
|
|
|
|
.then(({ parentDir, configPath }) => {
|
|
|
|
|
|
|
|
|
|
parentResource = parentDir;
|
|
|
|
|
globalSettingsFile = path.join(parentDir, 'settings.json');
|
|
|
|
|
|
|
|
|
|
const instantiationService = <TestInstantiationService>workbenchInstantiationService();
|
|
|
|
|
environmentService = new SettingsTestEnvironmentService(parseArgs(process.argv), process.execPath, path.join(parentDir, 'settings.json'));
|
|
|
|
|
environmentService = new SettingsTestEnvironmentService(parseArgs(process.argv), process.execPath, globalSettingsFile);
|
|
|
|
|
const remoteAgentService = instantiationService.createInstance(RemoteAgentService, {});
|
|
|
|
|
instantiationService.stub(IRemoteAgentService, remoteAgentService);
|
|
|
|
|
const fileService = new FileService(new NullLogService());
|
|
|
|
|
fileService.registerProvider(Schemas.file, new DiskFileSystemProvider(new NullLogService()));
|
|
|
|
|
const userDataService = new FileUserDataService(environmentService, fileService);
|
|
|
|
|
instantiationService.stub(IUserDataService, userDataService);
|
|
|
|
|
const workspaceService = new WorkspaceService({ configurationCache: new ConfigurationCache(environmentService) }, fileService, userDataService, remoteAgentService);
|
|
|
|
|
|
|
|
|
|
instantiationService.stub(IWorkspaceContextService, workspaceService);
|
|
|
|
|
@@ -1111,21 +1114,21 @@ suite('WorkspaceConfigurationService-Multiroot', () => {
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
test('application settings are not read from workspace', () => {
|
|
|
|
|
fs.writeFileSync(environmentService.settingsResource.fsPath, '{ "configurationService.workspace.applicationSetting": "userValue" }');
|
|
|
|
|
fs.writeFileSync(globalSettingsFile, '{ "configurationService.workspace.applicationSetting": "userValue" }');
|
|
|
|
|
return jsonEditingServce.write(workspaceContextService.getWorkspace().configuration!, { key: 'settings', value: { 'configurationService.workspace.applicationSetting': 'workspaceValue' } }, true)
|
|
|
|
|
.then(() => testObject.reloadConfiguration())
|
|
|
|
|
.then(() => assert.equal(testObject.getValue('configurationService.workspace.applicationSetting'), 'userValue'));
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
test('machine settings are not read from workspace', () => {
|
|
|
|
|
fs.writeFileSync(environmentService.settingsResource.fsPath, '{ "configurationService.workspace.machineSetting": "userValue" }');
|
|
|
|
|
fs.writeFileSync(globalSettingsFile, '{ "configurationService.workspace.machineSetting": "userValue" }');
|
|
|
|
|
return jsonEditingServce.write(workspaceContextService.getWorkspace().configuration!, { key: 'settings', value: { 'configurationService.workspace.machineSetting': 'workspaceValue' } }, true)
|
|
|
|
|
.then(() => testObject.reloadConfiguration())
|
|
|
|
|
.then(() => assert.equal(testObject.getValue('configurationService.workspace.machineSetting'), 'userValue'));
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
test('workspace settings override user settings after defaults are registered ', () => {
|
|
|
|
|
fs.writeFileSync(environmentService.settingsResource.fsPath, '{ "configurationService.workspace.newSetting": "userValue" }');
|
|
|
|
|
fs.writeFileSync(globalSettingsFile, '{ "configurationService.workspace.newSetting": "userValue" }');
|
|
|
|
|
return jsonEditingServce.write(workspaceContextService.getWorkspace().configuration!, { key: 'settings', value: { 'configurationService.workspace.newSetting': 'workspaceValue' } }, true)
|
|
|
|
|
.then(() => testObject.reloadConfiguration())
|
|
|
|
|
.then(() => {
|
|
|
|
|
@@ -1144,21 +1147,21 @@ suite('WorkspaceConfigurationService-Multiroot', () => {
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
test('application settings are not read from workspace folder', () => {
|
|
|
|
|
fs.writeFileSync(environmentService.settingsResource.fsPath, '{ "configurationService.workspace.applicationSetting": "userValue" }');
|
|
|
|
|
fs.writeFileSync(globalSettingsFile, '{ "configurationService.workspace.applicationSetting": "userValue" }');
|
|
|
|
|
fs.writeFileSync(workspaceContextService.getWorkspace().folders[0].toResource('.vscode/settings.json').fsPath, '{ "configurationService.workspace.applicationSetting": "workspaceFolderValue" }');
|
|
|
|
|
return testObject.reloadConfiguration()
|
|
|
|
|
.then(() => assert.equal(testObject.getValue('configurationService.workspace.applicationSetting'), 'userValue'));
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
test('machine settings are not read from workspace folder', () => {
|
|
|
|
|
fs.writeFileSync(environmentService.settingsResource.fsPath, '{ "configurationService.workspace.machineSetting": "userValue" }');
|
|
|
|
|
fs.writeFileSync(globalSettingsFile, '{ "configurationService.workspace.machineSetting": "userValue" }');
|
|
|
|
|
fs.writeFileSync(workspaceContextService.getWorkspace().folders[0].toResource('.vscode/settings.json').fsPath, '{ "configurationService.workspace.machineSetting": "workspaceFolderValue" }');
|
|
|
|
|
return testObject.reloadConfiguration()
|
|
|
|
|
.then(() => assert.equal(testObject.getValue('configurationService.workspace.machineSetting'), 'userValue'));
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
test('application settings are not read from workspace folder after defaults are registered', () => {
|
|
|
|
|
fs.writeFileSync(environmentService.settingsResource.fsPath, '{ "configurationService.workspace.testNewApplicationSetting": "userValue" }');
|
|
|
|
|
fs.writeFileSync(globalSettingsFile, '{ "configurationService.workspace.testNewApplicationSetting": "userValue" }');
|
|
|
|
|
fs.writeFileSync(workspaceContextService.getWorkspace().folders[0].toResource('.vscode/settings.json').fsPath, '{ "configurationService.workspace.testNewApplicationSetting": "workspaceFolderValue" }');
|
|
|
|
|
return testObject.reloadConfiguration()
|
|
|
|
|
.then(() => {
|
|
|
|
|
@@ -1178,7 +1181,7 @@ suite('WorkspaceConfigurationService-Multiroot', () => {
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
test('application settings are not read from workspace folder after defaults are registered', () => {
|
|
|
|
|
fs.writeFileSync(environmentService.settingsResource.fsPath, '{ "configurationService.workspace.testNewMachineSetting": "userValue" }');
|
|
|
|
|
fs.writeFileSync(globalSettingsFile, '{ "configurationService.workspace.testNewMachineSetting": "userValue" }');
|
|
|
|
|
fs.writeFileSync(workspaceContextService.getWorkspace().folders[0].toResource('.vscode/settings.json').fsPath, '{ "configurationService.workspace.testNewMachineSetting": "workspaceFolderValue" }');
|
|
|
|
|
return testObject.reloadConfiguration()
|
|
|
|
|
.then(() => {
|
|
|
|
|
@@ -1232,7 +1235,7 @@ suite('WorkspaceConfigurationService-Multiroot', () => {
|
|
|
|
|
assert.equal(actual.workspaceFolder, undefined);
|
|
|
|
|
assert.equal(actual.value, 'isSet');
|
|
|
|
|
|
|
|
|
|
fs.writeFileSync(environmentService.settingsResource.fsPath, '{ "configurationService.workspace.testResourceSetting": "userValue" }');
|
|
|
|
|
fs.writeFileSync(globalSettingsFile, '{ "configurationService.workspace.testResourceSetting": "userValue" }');
|
|
|
|
|
return testObject.reloadConfiguration()
|
|
|
|
|
.then(() => {
|
|
|
|
|
actual = testObject.inspect('configurationService.workspace.testResourceSetting');
|
|
|
|
|
|