test('StorageSevice cleans up when workspace changes', () => { let storageImpl = new InMemoryLocalStorage(); let context = new TestContextService(); let s = new StorageService(storageImpl, null, context); s.store('key1', 'foobar'); s.store('key2', 'something'); s.store('wkey1', 'foo', StorageScope.WORKSPACE); s.store('wkey2', 'foo2', StorageScope.WORKSPACE); s = new StorageService(storageImpl, null, context); assert.strictEqual(s.get('key1', StorageScope.GLOBAL), 'foobar'); assert.strictEqual(s.get('key1', StorageScope.WORKSPACE, null), null); assert.strictEqual(s.get('key2', StorageScope.GLOBAL), 'something'); assert.strictEqual(s.get('wkey1', StorageScope.WORKSPACE), 'foo'); assert.strictEqual(s.get('wkey2', StorageScope.WORKSPACE), 'foo2'); let ws: any = clone(TestWorkspace); ws.uid = new Date().getTime() + 100; context = new TestContextService(ws); s = new StorageService(storageImpl, null, context); assert.strictEqual(s.get('key1', StorageScope.GLOBAL), 'foobar'); assert.strictEqual(s.get('key1', StorageScope.WORKSPACE, null), null); assert.strictEqual(s.get('key2', StorageScope.GLOBAL), 'something'); assert(!s.get('wkey1', StorageScope.WORKSPACE)); assert(!s.get('wkey2', StorageScope.WORKSPACE)); });
test("Storage cleans up when workspace changes", () => { let storageImpl = new InMemoryLocalStorage(); let context = new TestContextService(); let s = new Storage(context, storageImpl); s.store("key1", "foobar"); s.store("key2", "something"); s.store("wkey1", "foo", StorageScope.WORKSPACE); s.store("wkey2", "foo2", StorageScope.WORKSPACE); s = new Storage(context, storageImpl); assert.strictEqual(s.get("key1", StorageScope.GLOBAL), "foobar"); assert.strictEqual(s.get("key1", StorageScope.WORKSPACE, null), null); assert.strictEqual(s.get("key2", StorageScope.GLOBAL), "something"); assert.strictEqual(s.get("wkey1", StorageScope.WORKSPACE), "foo"); assert.strictEqual(s.get("wkey2", StorageScope.WORKSPACE), "foo2"); let ws: any = clone(TestWorkspace); ws.uid = new Date().getTime() + 100; context = new TestContextService(ws); s = new Storage(context, storageImpl); assert.strictEqual(s.get("key1", StorageScope.GLOBAL), "foobar"); assert.strictEqual(s.get("key1", StorageScope.WORKSPACE, null), null); assert.strictEqual(s.get("key2", StorageScope.GLOBAL), "something"); assert(!s.get("wkey1", StorageScope.WORKSPACE)); assert(!s.get("wkey2", StorageScope.WORKSPACE)); });
public getConfiguration(section?: string): WorkspaceConfiguration { if (!this._hasConfig) { throw illegalState('missing config'); } const config = section ? ExtHostConfiguration._lookUp(section, this._config) : this._config; let result: any; if (typeof config !== 'object') { // this catches missing config and accessing values result = {}; } else { result = clone(config); } result.has = function(key: string): boolean { return typeof ExtHostConfiguration._lookUp(key, config) !== 'undefined'; }; result.get = function <T>(key: string, defaultValue?: T): T { let result = ExtHostConfiguration._lookUp(key, config); if (typeof result === 'undefined') { result = defaultValue; } return result; }; return result; }
constructor(opts: ICheckboxOpts) { super(); this._opts = objects.clone(opts); objects.mixin(this._opts, defaultOpts, false); this._checked = this._opts.isChecked; this.domNode = document.createElement('div'); this.domNode.title = this._opts.title; this.domNode.className = this._className(); this.domNode.tabIndex = 0; this.domNode.setAttribute('role', 'checkbox'); this.domNode.setAttribute('aria-checked', String(this._checked)); this.domNode.setAttribute('aria-label', this._opts.title); this.applyStyles(); this.onclick(this.domNode, (ev) => { this.checked = !this._checked; this._opts.onChange(false); ev.preventDefault(); }); this.onkeydown(this.domNode, (keyboardEvent) => { if (keyboardEvent.keyCode === KeyCode.Space || keyboardEvent.keyCode === KeyCode.Enter) { this.checked = !this._checked; this._opts.onChange(true); keyboardEvent.preventDefault(); return; } if (this._opts.onKeyDown) { this._opts.onKeyDown(keyboardEvent); } }); }
constructor(options: string[], selected: number, styles: ISelectBoxStyles = clone(defaultStyles)) { super(); this.selectElement = document.createElement('select'); this.selectElement.className = 'select-box'; this.setOptions(options, selected); this.toDispose = []; this._onDidSelect = new Emitter<ISelectData>(); this.selectBackground = styles.selectBackground; this.selectForeground = styles.selectForeground; this.selectBorder = styles.selectBorder; this.toDispose.push(dom.addStandardDisposableListener(this.selectElement, 'change', (e) => { this.selectElement.title = e.target.value; this._onDidSelect.fire({ index: e.target.selectedIndex, selected: e.target.value }); })); this.toDispose.push(dom.addStandardDisposableListener(this.selectElement, 'keydown', (e) => { if (e.equals(KeyCode.Space) || e.equals(KeyCode.Enter)) { // Space is used to expand select box, do not propagate it (prevent action bar action run) e.stopPropagation(); } })); }
export function resolveExecutable(executable: Executable, variables: ISystemVariables): Executable { let result = Objects.clone(executable); result.command = variables.resolve(result.command); result.args = variables.resolve(result.args); if (result.options) { result.options = resolveCommandOptions(result.options, variables); } return result; }
export function resolveCommandOptions(options: CommandOptions, variables: ISystemVariables): CommandOptions { let result = Objects.clone(options); if (result.cwd) { result.cwd = variables.resolve(result.cwd); } if (result.env) { result.env = variables.resolve(result.env); } return result; }
function fork(id: string): cp.ChildProcess { const opts: any = { env: objects.mixin(objects.clone(process.env), { AMD_ENTRYPOINT: id, PIPE_LOGGING: 'true', VERBOSE_LOGGING: true }) }; return cp.fork(URI.parse(require.toUrl('bootstrap')).fsPath, ['--type=processTests'], opts); }
private parseCommandOptions(json: Config.CommandOptions): CommandOptions { let result: CommandOptions = {}; if (!json) { return result; } if (this.is(json.cwd, Types.isString, ValidationState.Warning, NLS.localize('ExecutableParser.invalidCWD', 'Warning: options.cwd must be of type string. Ignoring value {0}.', json.cwd))) { result.cwd = json.cwd; } if (!Types.isUndefined(json.env)) { result.env = Objects.clone(json.env); } return result; }
constructor(options: string[], selected: number, styles: ISelectBoxStyles = clone(defaultStyles)) { super(); this.selectElement = document.createElement('select'); this.selectElement.className = 'select-box'; this.setOptions(options, selected); this.toDispose = []; this._onDidSelect = new Emitter<string>(); this.selectBackground = styles.selectBackground; this.selectForeground = styles.selectForeground; this.selectBorder = styles.selectBorder; this.toDispose.push(dom.addStandardDisposableListener(this.selectElement, 'change', (e) => { this.selectElement.title = e.target.value; this._onDidSelect.fire(e.target.value); })); }