environmentService.test.ts 4.3 KB
Newer Older
1 2 3 4 5 6
/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/

import * as assert from 'assert';
7
import * as path from 'vs/base/common/path';
8
import { parseArgs, OPTIONS } from 'vs/platform/environment/node/argv';
9
import { parseExtensionHostPort, parseUserDataDir } from 'vs/platform/environment/node/environmentService';
10 11 12 13

suite('EnvironmentService', () => {

	test('parseExtensionHostPort when built', () => {
14
		const parse = (a: string[]) => parseExtensionHostPort(parseArgs(a, OPTIONS), true);
15

16 17 18 19 20 21
		assert.deepStrictEqual(parse([]), { port: null, break: false, debugId: undefined });
		assert.deepStrictEqual(parse(['--debugPluginHost']), { port: null, break: false, debugId: undefined });
		assert.deepStrictEqual(parse(['--debugPluginHost=1234']), { port: 1234, break: false, debugId: undefined });
		assert.deepStrictEqual(parse(['--debugBrkPluginHost']), { port: null, break: false, debugId: undefined });
		assert.deepStrictEqual(parse(['--debugBrkPluginHost=5678']), { port: 5678, break: true, debugId: undefined });
		assert.deepStrictEqual(parse(['--debugPluginHost=1234', '--debugBrkPluginHost=5678', '--debugId=7']), { port: 5678, break: true, debugId: '7' });
22

23 24 25 26 27
		assert.deepStrictEqual(parse(['--inspect-extensions']), { port: null, break: false, debugId: undefined });
		assert.deepStrictEqual(parse(['--inspect-extensions=1234']), { port: 1234, break: false, debugId: undefined });
		assert.deepStrictEqual(parse(['--inspect-brk-extensions']), { port: null, break: false, debugId: undefined });
		assert.deepStrictEqual(parse(['--inspect-brk-extensions=5678']), { port: 5678, break: true, debugId: undefined });
		assert.deepStrictEqual(parse(['--inspect-extensions=1234', '--inspect-brk-extensions=5678', '--debugId=7']), { port: 5678, break: true, debugId: '7' });
28 29 30
	});

	test('parseExtensionHostPort when unbuilt', () => {
31
		const parse = (a: string[]) => parseExtensionHostPort(parseArgs(a, OPTIONS), false);
32

33 34 35 36 37 38
		assert.deepStrictEqual(parse([]), { port: 5870, break: false, debugId: undefined });
		assert.deepStrictEqual(parse(['--debugPluginHost']), { port: 5870, break: false, debugId: undefined });
		assert.deepStrictEqual(parse(['--debugPluginHost=1234']), { port: 1234, break: false, debugId: undefined });
		assert.deepStrictEqual(parse(['--debugBrkPluginHost']), { port: 5870, break: false, debugId: undefined });
		assert.deepStrictEqual(parse(['--debugBrkPluginHost=5678']), { port: 5678, break: true, debugId: undefined });
		assert.deepStrictEqual(parse(['--debugPluginHost=1234', '--debugBrkPluginHost=5678', '--debugId=7']), { port: 5678, break: true, debugId: '7' });
39

40 41 42 43 44
		assert.deepStrictEqual(parse(['--inspect-extensions']), { port: 5870, break: false, debugId: undefined });
		assert.deepStrictEqual(parse(['--inspect-extensions=1234']), { port: 1234, break: false, debugId: undefined });
		assert.deepStrictEqual(parse(['--inspect-brk-extensions']), { port: 5870, break: false, debugId: undefined });
		assert.deepStrictEqual(parse(['--inspect-brk-extensions=5678']), { port: 5678, break: true, debugId: undefined });
		assert.deepStrictEqual(parse(['--inspect-extensions=1234', '--inspect-brk-extensions=5678', '--debugId=7']), { port: 5678, break: true, debugId: '7' });
45
	});
46 47

	test('userDataPath', () => {
48
		const parse = (a: string[], b: { cwd: () => string, env: { [key: string]: string } }) => parseUserDataDir(parseArgs(a, OPTIONS), <any>b);
49 50 51

		assert.equal(parse(['--user-data-dir', './dir'], { cwd: () => '/foo', env: {} }), path.resolve('/foo/dir'),
			'should use cwd when --user-data-dir is specified');
52
		assert.equal(parse(['--user-data-dir', './dir'], { cwd: () => '/foo', env: { 'VSCODE_CWD': '/bar' } }), path.resolve('/bar/dir'),
53 54
			'should use VSCODE_CWD as the cwd when --user-data-dir is specified');
	});
J
Joao Moreno 已提交
55 56

	// https://github.com/microsoft/vscode/issues/78440
B
Benjamin Pasero 已提交
57
	test('careful with boolean file names', function () {
58
		let actual = parseArgs(['-r', 'arg.txt'], OPTIONS);
J
Joao Moreno 已提交
59
		assert(actual['reuse-window']);
60
		assert.deepStrictEqual(actual._, ['arg.txt']);
J
Joao Moreno 已提交
61

62
		actual = parseArgs(['-r', 'true.txt'], OPTIONS);
J
Joao Moreno 已提交
63
		assert(actual['reuse-window']);
64
		assert.deepStrictEqual(actual._, ['true.txt']);
J
Joao Moreno 已提交
65
	});
66
});