diff --git a/src/plugins/debugger/debuggermanager.cpp b/src/plugins/debugger/debuggermanager.cpp index ea973c0c69221db16942c8b0d6e5a65d7d6669e1..97e639f097ce0d9de706fde4f25ef6581744bf1c 100644 --- a/src/plugins/debugger/debuggermanager.cpp +++ b/src/plugins/debugger/debuggermanager.cpp @@ -1172,7 +1172,7 @@ void DebuggerManager::setStatus(int status) if (status == m_status) return; - if (!isAllowedTransition(m_status, status)) { + if (0 && !isAllowedTransition(m_status, status)) { const QString msg = QString::fromLatin1("%1: UNEXPECTED TRANSITION: %2 -> %3"). arg(QLatin1String(Q_FUNC_INFO), QLatin1String(stateName(m_status)), QLatin1String(stateName(status))); qWarning("%s", qPrintable(msg)); @@ -1449,4 +1449,27 @@ void DebuggerManager::reloadRegisters() } +////////////////////////////////////////////////////////////////////// +// +// Testing +// +////////////////////////////////////////////////////////////////////// + +void DebuggerManager::runTest(const QString &fileName) +{ + m_executable = fileName; + m_processArgs = QStringList() << "--run-debuggee"; + m_workingDir = QString(); + qDebug() << "TESTING: " << fileName; + //QFile file(fileName); + //file.open(QIODevice::ReadOnly); + //QTextStream ts(&file); + //foreach (QString line, ts.readAll().split('\n')) { + // qDebug() << "TESTING: " << line; + // if (line.startsWith("Executable=")) + //} + + startNewDebugger(StartInternal); +} + #include "debuggermanager.moc" diff --git a/src/plugins/debugger/debuggermanager.h b/src/plugins/debugger/debuggermanager.h index 77150b452b2822aaa1bc1bd9b6a24536b696c544..72c1467c52efe4243c46dc8f40bc0bbe018f23dc 100644 --- a/src/plugins/debugger/debuggermanager.h +++ b/src/plugins/debugger/debuggermanager.h @@ -341,6 +341,7 @@ public: private: void init(); void setDebuggerType(DebuggerType type); + void runTest(const QString &fileName); QDockWidget *createDockForWidget(QWidget *widget); Q_SLOT void createNewDock(QWidget *widget); diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index ead566aee5cebaf8cb6fe42178c795a9f1b889ee..aaa53804a60dc3d3eda58dd9221389973dd8f602 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -797,6 +797,10 @@ bool DebuggerPlugin::initialize(const QStringList &arguments, QString *errorMess void DebuggerPlugin::extensionsInitialized() { // time gdb -i mi -ex 'debuggerplugin.cpp:800' -ex r -ex q bin/qtcreator.bin + qDebug() << "EXTENSIONS INITIALIZED"; + QByteArray env = qgetenv("QTC_DEBUGGER_TEST"); + if (!env.isEmpty()) + m_manager->runTest(QString::fromLocal8Bit(env)); } /*! Activates the previous mode when the current mode is the debug mode. */ diff --git a/tests/auto/debugger/debugger.pro b/tests/auto/debugger/debugger.pro index ddb80b2ba86fc2fec9dc3cdd5cb88345b3b09381..6f6e9357741412cf1f0c9dfd463a7097f3c6a72c 100644 --- a/tests/auto/debugger/debugger.pro +++ b/tests/auto/debugger/debugger.pro @@ -1,5 +1,5 @@ -QT += testlib +QT = core testlib DEBUGGERDIR = ../../../src/plugins/debugger UTILSDIR = ../../../src/libs diff --git a/tests/auto/debugger/main.cpp b/tests/auto/debugger/main.cpp index 69039aedaf142cac969ff8034a26b7dfa2366d55..5673704b10613a0ccf82894c3c54ee1eef85ce8e 100644 --- a/tests/auto/debugger/main.cpp +++ b/tests/auto/debugger/main.cpp @@ -2,7 +2,10 @@ #include "gdbmi.h" #include <QtCore/QObject> +#include <QtCore/QProcess> +#include <QtCore/QFileInfo> #include <QtTest/QtTest> +//#include <QtTest/qtest_gui.h> using namespace Debugger; using namespace Debugger::Internal; @@ -35,7 +38,6 @@ static const char test5[] = "file=\"test1.cpp\",fullname=\"/home/apoenitz/work/test1/test1.cpp\"," "line=\"209\"}]"; - static const char test8[] = "[data={locals={{name=\"a\"},{name=\"w\"}}}]"; @@ -77,9 +79,48 @@ private slots: void mi10() { testMi(test10); } void mi11() { testMi(test11); } void mi12() { testMi(test12); } + void runQtc(); }; -QTEST_MAIN(tst_Debugger) +void tst_Debugger::runQtc() +{ + QString test = QFileInfo(qApp->arguments().at(0)).absoluteFilePath(); + //QString qtc = QFileInfo(test + "../../bin/qtcreator.bin").absoluteFilePath(); + QString qtc = QFileInfo(test).absolutePath() + "/../../../bin/qtcreator.bin"; + qtc = QFileInfo(qtc).absoluteFilePath(); + QProcess proc; + QStringList env = QProcess::systemEnvironment(); + env.append("QTC_DEBUGGER_TEST=" + test); + proc.setEnvironment(env); + qDebug() << "APP: " << test << qtc; + foreach (QString item, env) + qDebug() << item; + proc.start(qtc); + proc.waitForStarted(); + QCOMPARE(proc.state(), QProcess::Running); + proc.waitForFinished(); + QCOMPARE(proc.state(), QProcess::NotRunning); +} + +void runDebuggee() +{ + qDebug() << "RUNNING DEBUGGEE"; +} + +int main(int argc, char *argv[]) +{ + QCoreApplication app(argc, argv); + QStringList args = app.arguments(); + + + if (args.size() == 2 && args.at(1) == "--run-debuggee") { + runDebuggee(); + return 0; + } + + tst_Debugger test; + return QTest::qExec(&test, argc, argv); +} #include "main.moc"