This commit is contained in:
Sandeep Somavarapu
2020-08-25 13:10:43 +02:00
parent 3697079bce
commit fe83bef4e3
2 changed files with 49 additions and 4 deletions
@@ -73,6 +73,13 @@ export class WorkspaceService extends Disposable implements IConfigurationServic
) {
super();
const configurationRegistry = Registry.as<IConfigurationRegistry>(Extensions.Configuration);
// register defaults before creating default configuration model
// so that the model is not required to be updated after registering
if (environmentService.options?.configurationDefaults) {
configurationRegistry.registerDefaultConfigurations([environmentService.options.configurationDefaults]);
}
this.completeWorkspaceBarrier = new Barrier();
this.defaultConfiguration = new DefaultConfigurationModel();
this.configurationCache = configurationCache;
@@ -94,10 +101,6 @@ export class WorkspaceService extends Disposable implements IConfigurationServic
});
}));
const configurationRegistry = Registry.as<IConfigurationRegistry>(Extensions.Configuration);
if (environmentService.options?.configurationDefaults) {
configurationRegistry.registerDefaultConfigurations([environmentService.options.configurationDefaults]);
}
this._register(configurationRegistry.onDidSchemaChange(e => this.registerConfigurationSchemas()));
this._register(configurationRegistry.onDidUpdateConfiguration(configurationProperties => this.onDefaultConfigurationChanged(configurationProperties)));
@@ -39,6 +39,7 @@ import { FileService } from 'vs/platform/files/common/fileService';
import { NullLogService } from 'vs/platform/log/common/log';
import { DiskFileSystemProvider } from 'vs/platform/files/node/diskFileSystemProvider';
import { ConfigurationCache } from 'vs/workbench/services/configuration/node/configurationCache';
import { ConfigurationCache as BrowserConfigurationCache } from 'vs/workbench/services/configuration/browser/configurationCache';
import { IRemoteAgentEnvironment } from 'vs/platform/remote/common/remoteAgentEnvironment';
import { IConfigurationCache } from 'vs/workbench/services/configuration/common/configuration';
import { SignService } from 'vs/platform/sign/browser/signService';
@@ -50,6 +51,7 @@ import { timeout } from 'vs/base/common/async';
import { VSBuffer } from 'vs/base/common/buffer';
import { DisposableStore } from 'vs/base/common/lifecycle';
import product from 'vs/platform/product/common/product';
import { BrowserWorkbenchEnvironmentService } from 'vs/workbench/services/environment/browser/environmentService';
class TestEnvironmentService extends NativeWorkbenchEnvironmentService {
@@ -2059,6 +2061,46 @@ suite('WorkspaceConfigurationService - Remote Folder', () => {
});
suite('ConfigurationService - Configuration Defaults', () => {
const disposableStore: DisposableStore = new DisposableStore();
suiteSetup(() => {
Registry.as<IConfigurationRegistry>(ConfigurationExtensions.Configuration).registerConfiguration({
'id': '_test',
'type': 'object',
'properties': {
'configurationService.defaultOverridesSetting': {
'type': 'string',
'default': 'isSet',
},
}
});
});
teardown(() => {
disposableStore.clear();
});
test('when default value is not overriden', () => {
const testObject = createConfiurationService({});
assert.deepEqual(testObject.getValue('configurationService.defaultOverridesSetting'), 'isSet');
});
test('when default value is overriden', () => {
const testObject = createConfiurationService({ 'configurationService.defaultOverridesSetting': 'overriddenValue' });
assert.deepEqual(testObject.getValue('configurationService.defaultOverridesSetting'), 'overriddenValue');
});
function createConfiurationService(configurationDefaults: Record<string, any>): IConfigurationService {
const remoteAgentService = (<TestInstantiationService>workbenchInstantiationService()).createInstance(RemoteAgentService);
const environmentService = new BrowserWorkbenchEnvironmentService({ logsPath: URI.file(''), workspaceId: '', configurationDefaults });
const fileService = new FileService(new NullLogService());
return disposableStore.add(new WorkspaceService({ configurationCache: new BrowserConfigurationCache() }, environmentService, fileService, remoteAgentService));
}
});
function getWorkspaceId(configPath: URI): string {
let workspaceConfigPath = configPath.scheme === Schemas.file ? originalFSPath(configPath) : configPath.toString();
if (!isLinux) {