asmimproved-dbgmits
Version:
Provides the ability to control GDB and LLDB programmatically via GDB/MI.
78 lines • 8.07 kB
JavaScript
// Copyright (c) 2015 Vadim Macagon
// MIT License, see LICENSE file for full terms.
;
require('source-map-support').install();
var chai = require('chai');
var chaiAsPromised = require('chai-as-promised');
var test_utils_1 = require('./test_utils');
chai.use(chaiAsPromised);
// aliases
var expect = chai.expect;
// the directory in which Gruntfile.js resides is also Mocha's working directory,
// so any relative paths will be relative to that directory
var localTargetExe = './build/Debug/thread_tests_target';
test_utils_1.logSuite(describe("Debug Session", function () {
var debugSession;
test_utils_1.beforeEachTestWithLogger(function (logger) {
debugSession = test_utils_1.startDebugSession(logger);
return debugSession.setExecutableFile(localTargetExe);
});
afterEach(function () {
return debugSession.end();
});
describe("#getThread()", function () {
it("gets information about thread 1", function () {
return test_utils_1.runToFunc(debugSession, 'main', function () {
return debugSession.getThread(1)
.then(function (info) {
expect(info).to.have.property('id', 1);
expect(info).to.have.property('isStopped', true);
});
});
});
// FIXME: re-enable for LLDB when LLDB-MI stops crashing when processin -thread-info 2
it("gets information about thread 2 @skipOnLLDB", function () {
return debugSession.setInferiorArguments('--threads 2')
.then(function () {
return test_utils_1.runToFunc(debugSession, 'funcA', function () {
return debugSession.getThread(2)
.then(function (info) {
expect(info).to.have.property('id', 2);
expect(info).to.have.property('isStopped', true);
});
});
});
});
}); // describe #getThread()
describe("#getThreads()", function () {
// FIXME: re-enable for LLDB when LLDB-MI starts returning the current thread id in the
// result for -thread-info
it("gets thread list from a single-threaded inferior @skipOnLLDB", function () {
return test_utils_1.runToFunc(debugSession, 'main', function () {
return debugSession.getThreads()
.then(function (info) {
expect(info).to.have.property('all').which.has.property('length', 1);
expect(info).to.have.property('current').which.equals(info.all[0]);
expect(info.current).to.have.property('id', 1);
expect(info.current).to.have.property('isStopped', true);
});
});
});
// FIXME: same issue when using LLDB-MI as above
it("gets thread list from a multi-threaded inferior @skipOnLLDB", function () {
return debugSession.setInferiorArguments('--threads 2')
.then(function () {
return test_utils_1.runToFunc(debugSession, 'funcA', function () {
return debugSession.getThreads()
.then(function (info) {
expect(info).to.have.property('all').which.has.property('length', 2);
expect(info).to.have.property('current').which.equals(info.all[0]);
expect(info.all[0]).to.have.property('isStopped', true);
expect(info.all[1]).to.have.property('isStopped', true);
});
});
});
});
}); // describe #getThreads()
}));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyZWFkX3Rlc3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdGVzdC90aHJlYWRfdGVzdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUNBQW1DO0FBQ25DLGdEQUFnRDs7QUFFaEQsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7QUFFeEMsSUFBWSxJQUFJLFdBQU0sTUFBTSxDQUFDLENBQUE7QUFDN0IsSUFBTyxjQUFjLFdBQVcsa0JBQWtCLENBQUMsQ0FBQztBQUdwRCwyQkFFTyxjQUFjLENBQUMsQ0FBQTtBQUV0QixJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBRXpCLFVBQVU7QUFDVixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0FBR3pCLGlGQUFpRjtBQUNqRiwyREFBMkQ7QUFDM0QsSUFBSSxjQUFjLEdBQVcsbUNBQW1DLENBQUM7QUFFakUscUJBQUcsQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUFFO0lBQzVCLElBQUksWUFBMEIsQ0FBQztJQUUvQixxQ0FBd0IsQ0FBQyxVQUFDLE1BQXFCO1FBQzdDLFlBQVksR0FBRyw4QkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QyxNQUFNLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3hELENBQUMsQ0FBQyxDQUFDO0lBRUgsU0FBUyxDQUFDO1FBQ1IsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUM1QixDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxjQUFjLEVBQUU7UUFDdkIsRUFBRSxDQUFDLGlDQUFpQyxFQUFFO1lBQ3BDLE1BQU0sQ0FBQyxzQkFBUyxDQUFDLFlBQVksRUFBRSxNQUFNLEVBQUU7Z0JBQ3JDLE1BQU0sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztxQkFDL0IsSUFBSSxDQUFDLFVBQUMsSUFBeUI7b0JB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