Added handling for multiple '--user-data-dir' to enable Spectron smoke testing in #25291.
This commit is contained in:
parent
e4c6a965ea
commit
f3ca4f6e09
|
@ -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)');
|
||||
});
|
||||
});
|
Loading…
Reference in a new issue