Fallback to raw output when JSON.parse fails

Partial fix for #77
This commit is contained in:
WebFreak001 2016-12-06 23:25:16 +01:00
commit 9e5d12551f
2 changed files with 19 additions and 1 deletions

View file

@ -136,7 +136,13 @@ export function parseMI(output: string): MINode {
stringEnd++;
}
// hax
let str = JSON.parse(output.substr(0, stringEnd));
let str;
try {
str = JSON.parse(output.substr(0, stringEnd));
}
catch (e) {
str = output.substr(0, stringEnd);
}
output = output.substr(stringEnd);
return str;
};

View file

@ -23,6 +23,18 @@ suite("MI Parse", () => {
assert.equal(parsed.outOfBandRecord[0].content, "[Thread 0x7fffe993a700 (LWP 11002) exited]\n");
assert.equal(parsed.resultRecords, undefined);
});
test("Unicode", () => {
let parsed = parseMI(`~"[Depuraci\\303\\263n de hilo usando libthread_db enabled]\\n"`);
assert.ok(parsed);
assert.equal(parsed.token, undefined);
assert.equal(parsed.outOfBandRecord.length, 1);
assert.equal(parsed.outOfBandRecord[0].isStream, true);
// Hack
assert.equal(parsed.outOfBandRecord[0].content, `"[Depuraci\\303\\263n de hilo usando libthread_db enabled]\\n"`);
// Better Goal:
//assert.equal(parsed.outOfBandRecord[0].content, "[Depuración de hilo usando libthread_db enabled]\n");
assert.equal(parsed.resultRecords, undefined);
});
test("Empty line", () => {
let parsed = parseMI(``);
assert.ok(parsed);