From 9708cd3c559bc5f3ee19359cafa5b87abd749d99 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Tue, 20 Sep 2016 10:12:17 +0200 Subject: [PATCH] add test for replacing entire invalid config file --- .../node/configurationEditingService.test.ts | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/vs/workbench/services/configuration/test/node/configurationEditingService.test.ts b/src/vs/workbench/services/configuration/test/node/configurationEditingService.test.ts index fc2b05163a3..1c21a348aab 100644 --- a/src/vs/workbench/services/configuration/test/node/configurationEditingService.test.ts +++ b/src/vs/workbench/services/configuration/test/node/configurationEditingService.test.ts @@ -291,4 +291,26 @@ suite('WorkspaceConfigurationEditingService - Node', () => { }); }); }); + + test('write workspace standalone setting - existing file with JSON errors - full JSON', (done: () => void) => { + createWorkspace((workspaceDir, globalSettingsFile, cleanUp) => { + return createServices(workspaceDir, globalSettingsFile).then(services => { + const target = path.join(workspaceDir, WORKSPACE_STANDALONE_CONFIGURATIONS['launch']); + + fs.writeFileSync(target, '{ "my.super.setting": '); // invalid JSON + + return services.configurationEditingService.writeConfiguration(ConfigurationTarget.WORKSPACE, { key: 'tasks', value: { 'version': '1.0.0', tasks: [{ 'taskName': 'myTask' }] } }).then(res => { + const target = path.join(workspaceDir, WORKSPACE_STANDALONE_CONFIGURATIONS['tasks']); + const contents = fs.readFileSync(target).toString('utf8'); + const parsed = json.parse(contents); + + assert.equal(parsed['version'], '1.0.0'); + assert.equal(parsed['tasks'][0]['taskName'], 'myTask'); + + services.configurationService.dispose(); + cleanUp(done); + }); + }); + }); + }); }); \ No newline at end of file