Skip to content

Commit

Permalink
Handle spaces and quotes in java.jdt.ls.vmargs. See #135
Browse files Browse the repository at this point in the history
Signed-off-by: Fred Bricon <fbricon@gmail.com>
  • Loading branch information
fbricon committed Jan 11, 2017
1 parent f72a387 commit 80f4443
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 2 deletions.
6 changes: 5 additions & 1 deletion src/extension.ts
Expand Up @@ -283,7 +283,11 @@ export function parseVMargs(params:any[], vmargsLine:string) {
if (vmargs === null) {
return;
}
vmargs.forEach (function(arg) {
vmargs.forEach (arg => {
//remove all standalone double quotes
arg = arg.replace( /(\\)?"/g, function ($0, $1) { return ($1 ? $0 : ''); });
//unescape all escaped double quotes
arg = arg.replace( /(\\)"/g, '"');
if (params.indexOf(arg) < 0) {
params.push(arg);
}
Expand Down
14 changes: 13 additions & 1 deletion test/extension.test.ts
Expand Up @@ -19,7 +19,7 @@ suite('Java Language Extension', () => {
return vscode.commands.getCommands(true).then((commands) =>
{
let javaCmds = commands.filter(function(value){
return 'java.open.output' === value ||
return 'java.open.output' === value ||
'java.show.references' === value;
});
assert.ok(javaCmds.length === 2, 'missing java commands');
Expand All @@ -42,4 +42,16 @@ suite('Java Language Extension', () => {
done();
});

test('should parse VM arguments with spaces', function (done) {
let userArgs = '-javaagent:"C:\\Program Files\\Java\\lombok.jar" -Xbootclasspath/a:"C:\\Program Files\\Java\\lombok.jar" -Dfoo="Some \\"crazy\\" stuff"';
let vmArgs = [];

java.parseVMargs(vmArgs, userArgs);

assert.equal(vmArgs.length, 3);
assert.equal(vmArgs[0], '-javaagent:C:\\Program Files\\Java\\lombok.jar');
assert.equal(vmArgs[1], '-Xbootclasspath/a:C:\\Program Files\\Java\\lombok.jar');
assert.equal(vmArgs[2], '-Dfoo=Some "crazy" stuff');
done();
});
});

0 comments on commit 80f4443

Please sign in to comment.