mirror of
https://github.com/microsoft/vscode.git
synced 2026-07-09 08:15:05 +01:00
Fix #105291
This commit is contained in:
@@ -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)));
|
||||
|
||||
|
||||
+42
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user