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

This commit is contained in:
Michel Kaporin 2017-05-09 12:06:05 +02:00
parent e4c6a965ea
commit f3ca4f6e09
3 changed files with 23 additions and 2 deletions

View file

@ -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

View file

@ -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; } = {

View file

@ -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)');
});
});