Skip to content

Commit 33e545e

Browse files
committed
add and fix tests
1 parent 59111ab commit 33e545e

7 files changed

Lines changed: 649 additions & 266 deletions

File tree

src/vs/platform/configuration/common/configuration.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -160,10 +160,12 @@ export function compare(from: IConfigurationModel | undefined, to: IConfiguratio
160160

161161
if (to && from) {
162162
for (const key of from.keys) {
163-
const value1 = getConfigurationValue(from.contents, key);
164-
const value2 = getConfigurationValue(to.contents, key);
165-
if (!objects.equals(value1, value2)) {
166-
updated.push(key);
163+
if (to.keys.indexOf(key) !== -1) {
164+
const value1 = getConfigurationValue(from.contents, key);
165+
const value2 = getConfigurationValue(to.contents, key);
166+
if (!objects.equals(value1, value2)) {
167+
updated.push(key);
168+
}
167169
}
168170
}
169171
}
@@ -173,7 +175,7 @@ export function compare(from: IConfigurationModel | undefined, to: IConfiguratio
173175
const result: IStringDictionary<IOverrides> = {};
174176
for (const override of overrides) {
175177
for (const identifier of override.identifiers) {
176-
result[identifier] = override;
178+
result[keyFromOverrideIdentifier(identifier)] = override;
177179
}
178180
}
179181
return result;
@@ -185,15 +187,15 @@ export function compare(from: IConfigurationModel | undefined, to: IConfiguratio
185187
for (const key of added) {
186188
const override = toOverridesByIdentifier[key];
187189
if (override) {
188-
overrides.push([key, override.keys]);
190+
overrides.push([overrideIdentifierFromKey(key), override.keys]);
189191
}
190192
}
191193
}
192194
if (Object.keys(fromOverridesByIdentifier).length) {
193195
for (const key of removed) {
194196
const override = fromOverridesByIdentifier[key];
195197
if (override) {
196-
overrides.push([key, override.keys]);
198+
overrides.push([overrideIdentifierFromKey(key), override.keys]);
197199
}
198200
}
199201
}
@@ -204,7 +206,7 @@ export function compare(from: IConfigurationModel | undefined, to: IConfiguratio
204206
const toOverride = toOverridesByIdentifier[key];
205207
if (fromOverride && toOverride) {
206208
const result = compare({ contents: fromOverride.contents, keys: fromOverride.keys, overrides: [] }, { contents: toOverride.contents, keys: toOverride.keys, overrides: [] });
207-
overrides.push([key, [...result.added, ...result.removed, ...result.updated]]);
209+
overrides.push([overrideIdentifierFromKey(key), [...result.added, ...result.removed, ...result.updated]]);
208210
}
209211
}
210212
}

src/vs/platform/configuration/common/configurationModels.ts

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -466,7 +466,8 @@ export class Configuration {
466466
compareAndUpdateDefaultConfiguration(defaults: ConfigurationModel, keys: string[]): IConfigurationChange {
467467
const overrides: [string, string[]][] = keys
468468
.filter(key => OVERRIDE_PROPERTY_PATTERN.test(key))
469-
.map(overrideIdentifier => {
469+
.map(key => {
470+
const overrideIdentifier = overrideIdentifierFromKey(key);
470471
const fromKeys = this._defaultConfiguration.getKeysForOverrideIdentifier(overrideIdentifier);
471472
const toKeys = defaults.getKeysForOverrideIdentifier(overrideIdentifier);
472473
const keys = [
@@ -489,6 +490,44 @@ export class Configuration {
489490
return { keys, overrides };
490491
}
491492

493+
compareAndUpdateRemoteUserConfiguration(user: ConfigurationModel): IConfigurationChange {
494+
const { added, updated, removed, overrides } = compare(this.remoteUserConfiguration, user);
495+
let keys = [...added, ...updated, ...removed];
496+
if (keys.length) {
497+
this.updateRemoteUserConfiguration(user);
498+
}
499+
return { keys, overrides };
500+
}
501+
502+
compareAndUpdateWorkspaceConfiguration(workspaceConfiguration: ConfigurationModel): IConfigurationChange {
503+
const { added, updated, removed, overrides } = compare(this.workspaceConfiguration, workspaceConfiguration);
504+
let keys = [...added, ...updated, ...removed];
505+
if (keys.length) {
506+
this.updateWorkspaceConfiguration(workspaceConfiguration);
507+
}
508+
return { keys, overrides };
509+
}
510+
511+
compareAndUpdateFolderConfiguration(resource: URI, folderConfiguration: ConfigurationModel): IConfigurationChange {
512+
const currentFolderConfiguration = this.folderConfigurations.get(resource);
513+
const { added, updated, removed, overrides } = compare(currentFolderConfiguration, folderConfiguration);
514+
let keys = [...added, ...updated, ...removed];
515+
if (keys.length) {
516+
this.updateFolderConfiguration(resource, folderConfiguration);
517+
}
518+
return { keys, overrides };
519+
}
520+
521+
compareAndDeleteFolderConfiguration(folder: URI): IConfigurationChange {
522+
const folderConfig = this.folderConfigurations.get(folder);
523+
if (!folderConfig) {
524+
throw new Error('Unknown folder');
525+
}
526+
this.deleteFolderConfiguration(folder);
527+
const { added, updated, removed, overrides } = compare(folderConfig, undefined);
528+
return { keys: [...added, ...updated, ...removed], overrides };
529+
}
530+
492531
get defaults(): ConfigurationModel {
493532
return this._defaultConfiguration;
494533
}
@@ -675,7 +714,7 @@ export class ConfigurationChangeEvent implements IConfigurationChangeEvent {
675714
this.affectedKeys = values(keysSet);
676715

677716
const configurationModel = new ConfigurationModel();
678-
this.affectedKeys.forEach(key => this.affectedKeysTree.setValue(key, {}));
717+
this.affectedKeys.forEach(key => configurationModel.setValue(key, {}));
679718
this.affectedKeysTree = configurationModel.contents;
680719
}
681720

0 commit comments

Comments
 (0)