Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/platform/configuration/test/common/testConfigurationService.ts
3296 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import { Emitter } from '../../../../base/common/event.js';
7
import { TernarySearchTree } from '../../../../base/common/ternarySearchTree.js';
8
import { URI } from '../../../../base/common/uri.js';
9
import { getConfigurationValue, IConfigurationChangeEvent, IConfigurationOverrides, IConfigurationService, IConfigurationValue, isConfigurationOverrides } from '../../common/configuration.js';
10
import { Extensions, IConfigurationRegistry } from '../../common/configurationRegistry.js';
11
import { Registry } from '../../../registry/common/platform.js';
12
13
export class TestConfigurationService implements IConfigurationService {
14
public _serviceBrand: undefined;
15
16
private configuration: any;
17
readonly onDidChangeConfigurationEmitter = new Emitter<IConfigurationChangeEvent>();
18
readonly onDidChangeConfiguration = this.onDidChangeConfigurationEmitter.event;
19
20
constructor(configuration?: any) {
21
this.configuration = configuration || Object.create(null);
22
}
23
24
private configurationByRoot: TernarySearchTree<string, any> = TernarySearchTree.forPaths<any>();
25
26
public reloadConfiguration<T>(): Promise<T> {
27
return Promise.resolve(this.getValue());
28
}
29
30
public getValue(arg1?: any, arg2?: any): any {
31
let configuration;
32
const overrides = isConfigurationOverrides(arg1) ? arg1 : isConfigurationOverrides(arg2) ? arg2 : undefined;
33
if (overrides) {
34
if (overrides.resource) {
35
configuration = this.configurationByRoot.findSubstr(overrides.resource.fsPath);
36
}
37
}
38
configuration = configuration ? configuration : this.configuration;
39
if (arg1 && typeof arg1 === 'string') {
40
return configuration[arg1] ?? getConfigurationValue(configuration, arg1);
41
}
42
return configuration;
43
}
44
45
public updateValue(key: string, value: any): Promise<void> {
46
return Promise.resolve(undefined);
47
}
48
49
public setUserConfiguration(key: any, value: any, root?: URI): Promise<void> {
50
if (root) {
51
const configForRoot = this.configurationByRoot.get(root.fsPath) || Object.create(null);
52
configForRoot[key] = value;
53
this.configurationByRoot.set(root.fsPath, configForRoot);
54
} else {
55
this.configuration[key] = value;
56
}
57
58
return Promise.resolve(undefined);
59
}
60
61
private overrideIdentifiers: Map<string, string[]> = new Map();
62
public setOverrideIdentifiers(key: string, identifiers: string[]): void {
63
this.overrideIdentifiers.set(key, identifiers);
64
}
65
66
public inspect<T>(key: string, overrides?: IConfigurationOverrides): IConfigurationValue<T> {
67
const value = this.getValue(key, overrides);
68
69
return {
70
value,
71
defaultValue: undefined,
72
userValue: value,
73
userLocalValue: value,
74
overrideIdentifiers: this.overrideIdentifiers.get(key)
75
};
76
}
77
78
public keys() {
79
return {
80
default: Object.keys(Registry.as<IConfigurationRegistry>(Extensions.Configuration).getConfigurationProperties()),
81
user: Object.keys(this.configuration),
82
workspace: [],
83
workspaceFolder: []
84
};
85
}
86
87
public getConfigurationData() {
88
return null;
89
}
90
}
91
92