From c890422b054b22b6c45cf1f9f6e3eb5c467099bc Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Wed, 12 Jul 2017 06:34:39 +0200 Subject: [PATCH] workspaces main tests --- .../electron-main/workspacesMainService.ts | 2 +- .../workspacesMainService.test.ts | 77 +++++++++++++++++++ 2 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 src/vs/platform/workspaces/test/electron-main/workspacesMainService.test.ts diff --git a/src/vs/platform/workspaces/electron-main/workspacesMainService.ts b/src/vs/platform/workspaces/electron-main/workspacesMainService.ts index e5aa45f734f..7a99f9094f3 100644 --- a/src/vs/platform/workspaces/electron-main/workspacesMainService.ts +++ b/src/vs/platform/workspaces/electron-main/workspacesMainService.ts @@ -16,7 +16,7 @@ export class WorkspacesMainService implements IWorkspacesMainService { public _serviceBrand: any; - private workspacesHome: string; + protected workspacesHome: string; constructor( @IEnvironmentService private environmentService: IEnvironmentService) { this.workspacesHome = environmentService.workspacesHome; diff --git a/src/vs/platform/workspaces/test/electron-main/workspacesMainService.test.ts b/src/vs/platform/workspaces/test/electron-main/workspacesMainService.test.ts new file mode 100644 index 00000000000..6eaf6e953a5 --- /dev/null +++ b/src/vs/platform/workspaces/test/electron-main/workspacesMainService.test.ts @@ -0,0 +1,77 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +'use strict'; + +import * as assert from 'assert'; +import fs = require('fs'); +import os = require('os'); +import path = require('path'); +import extfs = require('vs/base/node/extfs'); +import pfs = require('vs/base/node/pfs'); +import { EnvironmentService } from 'vs/platform/environment/node/environmentService'; +import { parseArgs } from 'vs/platform/environment/node/argv'; +import { WorkspacesMainService } from "vs/platform/workspaces/electron-main/workspacesMainService"; +import { IStoredWorkspace } from "vs/platform/workspaces/common/workspaces"; + +class TestWorkspacesMainService extends WorkspacesMainService { + constructor(workspacesHome: string) { + super(new EnvironmentService(parseArgs(process.argv), process.execPath)); + + this.workspacesHome = workspacesHome; + } +} + +suite('WorkspacesMainService', () => { + const parentDir = path.join(os.tmpdir(), 'vsctests', 'service'); + const workspacesHome = path.join(parentDir, 'Workspaces'); + + let service: TestWorkspacesMainService; + + setup(done => { + service = new TestWorkspacesMainService(workspacesHome); + + // Delete any existing backups completely and then re-create it. + extfs.del(workspacesHome, os.tmpdir(), () => { + pfs.mkdirp(workspacesHome).then(() => { + done(); + }); + }); + }); + + teardown(done => { + extfs.del(workspacesHome, os.tmpdir(), done); + }); + + test('createWorkspace (no folders)', done => { + return service.createWorkspace().then(workspace => { + assert.ok(workspace); + assert.ok(fs.existsSync(workspace.workspaceConfigPath)); + assert.equal(workspace.folders.length, 0); + + const ws = JSON.parse(fs.readFileSync(workspace.workspaceConfigPath).toString()) as IStoredWorkspace; + assert.equal(ws.id, workspace.id); + assert.deepEqual(ws.folders, workspace.folders); + + done(); + }); + }); + + test('createWorkspace (folders)', done => { + return service.createWorkspace([process.cwd(), os.tmpdir()]).then(workspace => { + assert.ok(workspace); + assert.ok(fs.existsSync(workspace.workspaceConfigPath)); + assert.equal(workspace.folders.length, 2); + assert.equal(workspace.folders[0], process.cwd()); + assert.equal(workspace.folders[1], os.tmpdir()); + + const ws = JSON.parse(fs.readFileSync(workspace.workspaceConfigPath).toString()) as IStoredWorkspace; + assert.equal(ws.id, workspace.id); + assert.deepEqual(ws.folders, workspace.folders); + + done(); + }); + }); +}); \ No newline at end of file