提交 f3ca4f6e 编写于 作者: M Michel Kaporin

Added handling for multiple '--user-data-dir' to enable Spectron smoke testing in #25291.

上级 e4c6a965
......@@ -170,8 +170,15 @@ function mkdir(dir) {
});
}
// Because Spectron doesn't allow us to pass a custom user-data-dir,
// Code receives two of them. Let's just take the first one.
var userDataDir = args['user-data-dir'];
if (userDataDir) {
userDataDir = typeof userDataDir === 'string' ? userDataDir : userDataDir[0];
}
// Set userData path before app 'ready' event and call to process.chdir
var userData = path.resolve(args['user-data-dir'] || paths.getDefaultUserDataPath(process.platform));
var userData = path.resolve(userDataDir || paths.getDefaultUserDataPath(process.platform));
app.setPath('userData', userData);
// Update cwd based on environment and platform
......
......@@ -105,7 +105,14 @@ export function parseCLIProcessArgv(processArgv: string[]): ParsedArgs {
* Use this to parse code arguments such as `--verbose --wait`
*/
export function parseArgs(args: string[]): ParsedArgs {
return minimist(args, options) as ParsedArgs;
const result = minimist(args, options) as ParsedArgs;
// Because Spectron doesn't allow us to pass a custom user-data-dir,
// Code receives two of them. Let's just take the first one.
const userDataDir: string | string[] = result['user-data-dir'];
result['user-data-dir'] = typeof userDataDir === 'string' ? userDataDir : userDataDir[0];
return result;
}
export const optionsHelp: { [name: string]: string; } = {
......
......@@ -41,4 +41,11 @@ suite('EnvironmentService', () => {
assert.equal(parse(['--user-data-dir', './dir'], { cwd: () => '/foo', env: { 'VSCODE_CWD': '/bar' } }), path.resolve('/bar/dir'),
'should use VSCODE_CWD as the cwd when --user-data-dir is specified');
});
test('userDataPath should always take the first one', () => {
const parse = (a, b: { cwd: () => string, env: { [key: string]: string } }) => parseUserDataDir(parseArgs(a), <any>b);
assert.equal(parse(['--user-data-dir', './dir1', '--user-data-dir', './dir2'], { cwd: () => '/foo', env: {} }), path.resolve('/foo/dir1'),
'should pick first --user-data-dir (dir1)');
});
});
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册