From 0d0e4dfe4042557d88764afb0d2f48443d1e250c Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Tue, 11 Jun 2019 09:55:06 +0200 Subject: [PATCH] Fix #75109 --- .../sharedProcess/sharedProcessMain.ts | 2 +- src/vs/code/electron-main/main.ts | 2 +- src/vs/code/node/cliProcessMain.ts | 2 +- .../node/configurationService.ts | 13 ++++++++---- .../test/node/configurationService.test.ts | 21 ++++++++++--------- 5 files changed, 23 insertions(+), 17 deletions(-) diff --git a/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts b/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts index 28a31c6c674..e3632ba5b91 100644 --- a/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts +++ b/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts @@ -98,7 +98,7 @@ async function main(server: Server, initData: ISharedProcessInitData, configurat disposables.push(logService); logService.info('main', JSON.stringify(configuration)); - const configurationService = new ConfigurationService(environmentService.settingsResource.path); + const configurationService = new ConfigurationService(environmentService.settingsResource); disposables.push(configurationService); await configurationService.initialize(); diff --git a/src/vs/code/electron-main/main.ts b/src/vs/code/electron-main/main.ts index 25385702555..0e84924f6f9 100644 --- a/src/vs/code/electron-main/main.ts +++ b/src/vs/code/electron-main/main.ts @@ -141,7 +141,7 @@ class CodeMain { process.once('exit', () => logService.dispose()); services.set(ILogService, logService); - services.set(IConfigurationService, new ConfigurationService(environmentService.settingsResource.path)); + services.set(IConfigurationService, new ConfigurationService(environmentService.settingsResource)); services.set(ILifecycleService, new SyncDescriptor(LifecycleService)); services.set(IStateService, new SyncDescriptor(StateService)); services.set(IRequestService, new SyncDescriptor(RequestService)); diff --git a/src/vs/code/node/cliProcessMain.ts b/src/vs/code/node/cliProcessMain.ts index 0c4cc01f9d1..2692b182b53 100644 --- a/src/vs/code/node/cliProcessMain.ts +++ b/src/vs/code/node/cliProcessMain.ts @@ -285,7 +285,7 @@ export async function main(argv: ParsedArgs): Promise { await Promise.all([environmentService.appSettingsHome, environmentService.extensionsPath].map(p => mkdirp(p))); - const configurationService = new ConfigurationService(environmentService.settingsResource.path); + const configurationService = new ConfigurationService(environmentService.settingsResource); await configurationService.initialize(); services.set(IEnvironmentService, environmentService); diff --git a/src/vs/platform/configuration/node/configurationService.ts b/src/vs/platform/configuration/node/configurationService.ts index a9b76c1429f..d3e4dfe09b1 100644 --- a/src/vs/platform/configuration/node/configurationService.ts +++ b/src/vs/platform/configuration/node/configurationService.ts @@ -12,6 +12,8 @@ import { Event, Emitter } from 'vs/base/common/event'; import { IWorkspaceFolder } from 'vs/platform/workspace/common/workspace'; import { ConfigWatcher } from 'vs/base/node/config'; import { onUnexpectedError } from 'vs/base/common/errors'; +import { URI } from 'vs/base/common/uri'; +import { Schemas } from 'vs/base/common/network'; export class ConfigurationService extends Disposable implements IConfigurationService, IDisposable { @@ -24,7 +26,7 @@ export class ConfigurationService extends Disposable implements IConfigurationSe readonly onDidChangeConfiguration: Event = this._onDidChangeConfiguration.event; constructor( - private readonly configurationPath: string + private readonly settingsResource: URI ) { super(); this.configuration = new Configuration(new DefaultConfigurationModel(), new ConfigurationModel()); @@ -36,10 +38,13 @@ export class ConfigurationService extends Disposable implements IConfigurationSe this.userConfigModelWatcher.dispose(); } + if (this.settingsResource.scheme !== Schemas.file) { + return Promise.resolve(); + } return new Promise((c, e) => { - this.userConfigModelWatcher = this._register(new ConfigWatcher(this.configurationPath, { - changeBufferDelay: 300, onError: error => onUnexpectedError(error), defaultConfig: new ConfigurationModelParser(this.configurationPath), parse: (content: string, parseErrors: any[]) => { - const userConfigModelParser = new ConfigurationModelParser(this.configurationPath); + this.userConfigModelWatcher = this._register(new ConfigWatcher(this.settingsResource.fsPath, { + changeBufferDelay: 300, onError: error => onUnexpectedError(error), defaultConfig: new ConfigurationModelParser(this.settingsResource.fsPath), parse: (content: string, parseErrors: any[]) => { + const userConfigModelParser = new ConfigurationModelParser(this.settingsResource.fsPath); userConfigModelParser.parseContent(content); parseErrors = [...userConfigModelParser.errors]; return userConfigModelParser; diff --git a/src/vs/platform/configuration/test/node/configurationService.test.ts b/src/vs/platform/configuration/test/node/configurationService.test.ts index 8cd83c1e9c0..22fdbb6c911 100644 --- a/src/vs/platform/configuration/test/node/configurationService.test.ts +++ b/src/vs/platform/configuration/test/node/configurationService.test.ts @@ -13,6 +13,7 @@ import { ConfigurationService } from 'vs/platform/configuration/node/configurati import * as uuid from 'vs/base/common/uuid'; import { IConfigurationRegistry, Extensions as ConfigurationExtensions } from 'vs/platform/configuration/common/configurationRegistry'; import { testFile } from 'vs/base/test/node/utils'; +import { URI } from 'vs/base/common/uri'; suite('ConfigurationService - Node', () => { @@ -20,7 +21,7 @@ suite('ConfigurationService - Node', () => { const res = await testFile('config', 'config.json'); fs.writeFileSync(res.testFile, '{ "foo": "bar" }'); - const service = new ConfigurationService(res.testFile); + const service = new ConfigurationService(URI.file(res.testFile)); await service.initialize(); const config = service.getValue<{ foo: string; @@ -38,7 +39,7 @@ suite('ConfigurationService - Node', () => { fs.writeFileSync(res.testFile, '{ "testworkbench.editor.tabs": true }'); - const service = new ConfigurationService(res.testFile); + const service = new ConfigurationService(URI.file(res.testFile)); await service.initialize(); const config = service.getValue<{ testworkbench: { @@ -61,7 +62,7 @@ suite('ConfigurationService - Node', () => { fs.writeFileSync(res.testFile, ',,,,'); - const service = new ConfigurationService(res.testFile); + const service = new ConfigurationService(URI.file(res.testFile)); await service.initialize(); const config = service.getValue<{ foo: string; @@ -78,7 +79,7 @@ suite('ConfigurationService - Node', () => { const newDir = path.join(parentDir, 'config', id); const testFile = path.join(newDir, 'config.json'); - const service = new ConfigurationService(testFile); + const service = new ConfigurationService(URI.file(testFile)); await service.initialize(); const config = service.getValue<{ foo: string }>(); @@ -90,7 +91,7 @@ suite('ConfigurationService - Node', () => { test('trigger configuration change event', async () => { const res = await testFile('config', 'config.json'); - const service = new ConfigurationService(res.testFile); + const service = new ConfigurationService(URI.file(res.testFile)); await service.initialize(); return new Promise((c, e) => { service.onDidChangeConfiguration(() => { @@ -108,7 +109,7 @@ suite('ConfigurationService - Node', () => { fs.writeFileSync(res.testFile, '{ "foo": "bar" }'); - const service = new ConfigurationService(res.testFile); + const service = new ConfigurationService(URI.file(res.testFile)); await service.initialize(); let config = service.getValue<{ foo: string; @@ -157,7 +158,7 @@ suite('ConfigurationService - Node', () => { } }); - let serviceWithoutFile = new ConfigurationService('__testFile'); + let serviceWithoutFile = new ConfigurationService(URI.file('__testFile')); await serviceWithoutFile.initialize(); let setting = serviceWithoutFile.getValue(); @@ -167,7 +168,7 @@ suite('ConfigurationService - Node', () => { return testFile('config', 'config.json').then(async res => { fs.writeFileSync(res.testFile, '{ "testworkbench.editor.tabs": true }'); - const service = new ConfigurationService(res.testFile); + const service = new ConfigurationService(URI.file(res.testFile)); let setting = service.getValue(); @@ -200,7 +201,7 @@ suite('ConfigurationService - Node', () => { }); const r = await testFile('config', 'config.json'); - const service = new ConfigurationService(r.testFile); + const service = new ConfigurationService(URI.file(r.testFile)); service.initialize(); let res = service.inspect('something.missing'); @@ -238,7 +239,7 @@ suite('ConfigurationService - Node', () => { }); const r = await testFile('config', 'config.json'); - const service = new ConfigurationService(r.testFile); + const service = new ConfigurationService(URI.file(r.testFile)); service.initialize(); let res = service.inspect('lookup.service.testNullSetting'); -- GitLab