Path: blob/main/src/vs/platform/configuration/test/common/testConfigurationService.ts
3296 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import { Emitter } from '../../../../base/common/event.js';6import { TernarySearchTree } from '../../../../base/common/ternarySearchTree.js';7import { URI } from '../../../../base/common/uri.js';8import { getConfigurationValue, IConfigurationChangeEvent, IConfigurationOverrides, IConfigurationService, IConfigurationValue, isConfigurationOverrides } from '../../common/configuration.js';9import { Extensions, IConfigurationRegistry } from '../../common/configurationRegistry.js';10import { Registry } from '../../../registry/common/platform.js';1112export class TestConfigurationService implements IConfigurationService {13public _serviceBrand: undefined;1415private configuration: any;16readonly onDidChangeConfigurationEmitter = new Emitter<IConfigurationChangeEvent>();17readonly onDidChangeConfiguration = this.onDidChangeConfigurationEmitter.event;1819constructor(configuration?: any) {20this.configuration = configuration || Object.create(null);21}2223private configurationByRoot: TernarySearchTree<string, any> = TernarySearchTree.forPaths<any>();2425public reloadConfiguration<T>(): Promise<T> {26return Promise.resolve(this.getValue());27}2829public getValue(arg1?: any, arg2?: any): any {30let configuration;31const overrides = isConfigurationOverrides(arg1) ? arg1 : isConfigurationOverrides(arg2) ? arg2 : undefined;32if (overrides) {33if (overrides.resource) {34configuration = this.configurationByRoot.findSubstr(overrides.resource.fsPath);35}36}37configuration = configuration ? configuration : this.configuration;38if (arg1 && typeof arg1 === 'string') {39return configuration[arg1] ?? getConfigurationValue(configuration, arg1);40}41return configuration;42}4344public updateValue(key: string, value: any): Promise<void> {45return Promise.resolve(undefined);46}4748public setUserConfiguration(key: any, value: any, root?: URI): Promise<void> {49if (root) {50const configForRoot = this.configurationByRoot.get(root.fsPath) || Object.create(null);51configForRoot[key] = value;52this.configurationByRoot.set(root.fsPath, configForRoot);53} else {54this.configuration[key] = value;55}5657return Promise.resolve(undefined);58}5960private overrideIdentifiers: Map<string, string[]> = new Map();61public setOverrideIdentifiers(key: string, identifiers: string[]): void {62this.overrideIdentifiers.set(key, identifiers);63}6465public inspect<T>(key: string, overrides?: IConfigurationOverrides): IConfigurationValue<T> {66const value = this.getValue(key, overrides);6768return {69value,70defaultValue: undefined,71userValue: value,72userLocalValue: value,73overrideIdentifiers: this.overrideIdentifiers.get(key)74};75}7677public keys() {78return {79default: Object.keys(Registry.as<IConfigurationRegistry>(Extensions.Configuration).getConfigurationProperties()),80user: Object.keys(this.configuration),81workspace: [],82workspaceFolder: []83};84}8586public getConfigurationData() {87return null;88}89}909192