forked from qt-creator/qt-creator
		
	
		
			
				
	
	
		
			125 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			125 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#include <ctype.h>
 | 
						|
 | 
						|
#include <QtCore/QObject>
 | 
						|
#include <QtCore/QProcess>
 | 
						|
#include <QtCore/QFileInfo>
 | 
						|
#include <QtCore/QMap>
 | 
						|
#include <QtCore/QMetaMethod>
 | 
						|
#include <QtCore/QModelIndex>
 | 
						|
#if QT_VERSION >= 0x040500
 | 
						|
#include <QtCore/QSharedPointer>
 | 
						|
#endif
 | 
						|
#include <QtCore/QStringList>
 | 
						|
#include <QtCore/QTextCodec>
 | 
						|
#include <QtGui/QApplication>
 | 
						|
#include <QtGui/QDialog>
 | 
						|
#include <QtGui/QImage>
 | 
						|
#include <QtGui/QPixmap>
 | 
						|
#include <QtGui/QStandardItemModel>
 | 
						|
#include <QtGui/QStringListModel>
 | 
						|
#include <QtTest/QtTest>
 | 
						|
 | 
						|
//#include <QtTest/qtest_gui.h>
 | 
						|
 | 
						|
#include <QtCore/private/qobject_p.h>
 | 
						|
 | 
						|
#include "gdb/gdbmi.h"
 | 
						|
#include "gdbmacros.h"
 | 
						|
#include "gdbmacros_p.h"
 | 
						|
 | 
						|
#undef NS
 | 
						|
#ifdef QT_NAMESPACE
 | 
						|
#   define STRINGIFY0(s) #s
 | 
						|
#   define STRINGIFY1(s) STRINGIFY0(s)
 | 
						|
#   define NS STRINGIFY1(QT_NAMESPACE) "::"
 | 
						|
#else
 | 
						|
#   define NS ""
 | 
						|
#endif
 | 
						|
 | 
						|
using namespace Debugger;
 | 
						|
using namespace Debugger::Internal;
 | 
						|
 | 
						|
 
 | 
						|
static QByteArray stripped(QByteArray ba)
 | 
						|
{
 | 
						|
    for (int i = ba.size(); --i >= 0; ) {
 | 
						|
        if (ba.at(i) == '\n' || ba.at(i) == ' ')
 | 
						|
            ba.chop(1);
 | 
						|
        else
 | 
						|
            break;
 | 
						|
    }
 | 
						|
    return ba;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
class tst_Plugin : public QObject
 | 
						|
{
 | 
						|
    Q_OBJECT
 | 
						|
 | 
						|
public:
 | 
						|
    tst_Plugin() {}
 | 
						|
 | 
						|
 | 
						|
public slots:
 | 
						|
    void runQtc();
 | 
						|
 | 
						|
public slots:
 | 
						|
    void readStandardOutput();
 | 
						|
    void readStandardError();
 | 
						|
 | 
						|
private:
 | 
						|
    QProcess m_proc; // the Qt Creator process
 | 
						|
};
 | 
						|
 | 
						|
void tst_Plugin::readStandardOutput()
 | 
						|
{
 | 
						|
    qDebug() << "qtcreator-out: " << stripped(m_proc.readAllStandardOutput());
 | 
						|
}
 | 
						|
 | 
						|
void tst_Plugin::readStandardError()
 | 
						|
{
 | 
						|
    qDebug() << "qtcreator-err: " << stripped(m_proc.readAllStandardError());
 | 
						|
}
 | 
						|
 | 
						|
void tst_Plugin::runQtc()
 | 
						|
{
 | 
						|
    QString test = QFileInfo(qApp->arguments().at(0)).absoluteFilePath();
 | 
						|
    QString qtc = QFileInfo(test).absolutePath() + "/../../../bin/qtcreator.bin";
 | 
						|
    qtc = QFileInfo(qtc).absoluteFilePath();
 | 
						|
    QStringList env = QProcess::systemEnvironment();
 | 
						|
    env.append("QTC_DEBUGGER_TEST=" + test);
 | 
						|
    m_proc.setEnvironment(env);
 | 
						|
    connect(&m_proc, SIGNAL(readyReadStandardOutput()),
 | 
						|
        this, SLOT(readStandardOutput()));
 | 
						|
    connect(&m_proc, SIGNAL(readyReadStandardError()),
 | 
						|
        this, SLOT(readStandardError()));
 | 
						|
    m_proc.start(qtc);
 | 
						|
    m_proc.waitForStarted();
 | 
						|
    QCOMPARE(m_proc.state(), QProcess::Running);
 | 
						|
    m_proc.waitForFinished();
 | 
						|
    QCOMPARE(m_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();
 | 
						|
        app.exec();
 | 
						|
        return 0;
 | 
						|
    }
 | 
						|
 | 
						|
    tst_Plugin test;
 | 
						|
    return QTest::qExec(&test, argc, argv);
 | 
						|
}
 | 
						|
 | 
						|
#include "tst_plugin.moc"
 | 
						|
 |