diff options
author | Ed Baak <ed.baak@nokia.com> | 2010-08-05 09:13:03 +1000 |
---|---|---|
committer | Ed Baak <ed.baak@nokia.com> | 2010-08-05 09:13:03 +1000 |
commit | a1f75440e1cd859e6b6ce77bdaa1b92bbc8aaaca (patch) | |
tree | 45218e3cb8e04781d4a38b6a34b68948853765ae | |
parent | b2ca522879615e0cbb97cf94876a3d3fcf3caccf (diff) | |
parent | 521c569277b0df2fa0e4c7849a8162823f53d3c9 (diff) |
Merge commit 'origin/master' into research
Conflicts:
interpreter/qscriptsystemtest.cpp
interpreter/qscriptsystemtest.h
libqsystemtest/libqsystemtest.pro
libqtuitest/libqtuitest.pri
-rw-r--r-- | coreplugin/coreplugin.pro | 6 | ||||
-rw-r--r-- | interpreter/qscriptsystemtest.cpp | 137 | ||||
-rw-r--r-- | interpreter/qscriptsystemtest.h | 9 | ||||
-rw-r--r-- | interpreter/qtscript_bindings.cpp | 5 | ||||
-rw-r--r-- | interpreter/scriptpreprocessor.cpp | 2 | ||||
-rw-r--r-- | libqsystemtest/customtestcontrol.cpp | 14 | ||||
-rw-r--r-- | libqsystemtest/desktoptestcontrol.cpp | 27 | ||||
-rw-r--r-- | libqsystemtest/libqsystemtest.pro | 4 | ||||
-rw-r--r-- | libqsystemtest/maemotestcontrol.cpp | 5 | ||||
-rw-r--r-- | libqsystemtest/meegotestcontrol.cpp | 12 | ||||
-rw-r--r-- | libqsystemtest/qsystemtest.cpp | 8 | ||||
-rw-r--r-- | libqsystemtest/qsystemtest.h | 2 | ||||
-rw-r--r-- | libqsystemtest/qtestlog.cpp | 12 | ||||
-rw-r--r-- | libqsystemtest/qtestlog.h | 4 | ||||
-rw-r--r-- | libqsystemtest/qtestprotocol_p.h | 3 | ||||
-rw-r--r-- | libqsystemtest/qtestremote_p.h | 2 | ||||
-rw-r--r-- | libqsystemtest/qtestresult.cpp | 29 | ||||
-rw-r--r-- | libqsystemtest/qtestresult.h | 16 | ||||
-rw-r--r-- | libqsystemtest/symbiantestcontrol.cpp | 13 | ||||
-rw-r--r-- | libqsystemtest/testcontrol.cpp | 35 | ||||
-rw-r--r-- | libqsystemtest/testcontrol.h | 5 |
21 files changed, 216 insertions, 134 deletions
diff --git a/coreplugin/coreplugin.pro b/coreplugin/coreplugin.pro index d847cc3..2712350 100644 --- a/coreplugin/coreplugin.pro +++ b/coreplugin/coreplugin.pro @@ -1,9 +1,13 @@ TEMPLATE = lib TARGET = Core DESTDIR = $$BUILDROOT/lib -CONFIG += static +target.path=$$[QT_INSTALL_LIBS] +INSTALLS+=target + +QT += network INCLUDEPATH += .. ../botan/build LIBS+=-L$$BUILDROOT/lib -lBotan +DEFINES+=CORE_LIBRARY HEADERS +=\ ssh/sftpchannel.h \ diff --git a/interpreter/qscriptsystemtest.cpp b/interpreter/qscriptsystemtest.cpp index 5c55bc3..d5ad7b0 100644 --- a/interpreter/qscriptsystemtest.cpp +++ b/interpreter/qscriptsystemtest.cpp @@ -330,14 +330,12 @@ FatalSignalHandler::~FatalSignalHandler() QScriptEngine *QScriptSystemTest::global_script_engine = 0; QScriptSystemTest::QScriptSystemTest() - : m_agent(new QtUiTestEngineAgent(&m_engine, this)), + : m_engine(0), + m_agent(0), m_contextDepth(0), testObject(0), m_checkOnly(false) { - // Ensure we process events periodically. - m_engine.setProcessEventsInterval(100); - global_script_engine = &m_engine; } QScriptSystemTest::~QScriptSystemTest() @@ -345,6 +343,48 @@ QScriptSystemTest::~QScriptSystemTest() global_script_engine = 0; } +void QScriptSystemTest::initEngine(bool createNewEngine) +{ + if (m_engine) { + if (createNewEngine) { + delete m_engine; + } else { + return; + } + } + + m_engine = new QScriptEngine(); + m_agent = new QtUiTestEngineAgent(m_engine, this); + global_script_engine = m_engine; + + // Ensure we process events periodically. + m_engine->setProcessEventsInterval(100); + + m_engine->importExtension("qt.core"); + setupEnums(m_engine); + + // include() imports scripts directly into the parent script. + m_engine->globalObject().setProperty + ("include", m_engine->newFunction(includeFunction, 1)); + m_engine->globalObject().setProperty + ("setFlags", m_engine->newFunction(setFlags, 3)); + + + m_engine->globalObject().setProperty("_dateToString", m_engine->newFunction(dateToString)); + m_engine->evaluate("_old_date_toString = Date.prototype.toString;" + "Date.prototype.toString = function() {" + " if (arguments[0] == undefined)" + " return _old_date_toString.apply(this, arguments);" + " return _dateToString.apply(this, arguments);" + "}"); + + m_engine->globalObject().setProperty("ParentTestObject", m_engine->newQObject(this)); + m_engine->globalObject().setProperty("ParentTestMetaObject", m_engine->newQMetaObject(metaObject())); + + loadBuiltins(m_engine); + importIntoGlobalNamespace(m_engine, "ParentTestObject"); +} + QString QScriptSystemTest::testCaseName() const { if (testObject) @@ -352,19 +392,19 @@ QString QScriptSystemTest::testCaseName() const return QAbstractTest::testCaseName(); } -void QScriptSystemTest::loadBuiltins(QScriptEngine &engine) +void QScriptSystemTest::loadBuiltins(QScriptEngine *engine) { QScriptEngine configEngine; - QScriptSystemTest::loadInternalScript("config.js", configEngine); + QScriptSystemTest::loadInternalScript("config.js", &configEngine); for (int i = 0; i < configEngine.globalObject().property("builtin_files").property("length").toInt32(); ++i) { QString file = configEngine.globalObject().property("builtin_files").property(i).toString(); QtScript::addInternalFile( QScriptSystemTest::loadInternalScript(file, engine, true) ); } } -void QScriptSystemTest::importIntoGlobalNamespace(QScriptEngine& engine, QString const& object) +void QScriptSystemTest::importIntoGlobalNamespace(QScriptEngine *engine, QString const& object) { - QScriptValue obj = engine.globalObject().property(object); + QScriptValue obj = engine->globalObject().property(object); QScriptValueIterator it(obj); while (it.hasNext()) { @@ -378,21 +418,21 @@ void QScriptSystemTest::importIntoGlobalNamespace(QScriptEngine& engine, QString // Import this property into the global object iff one doesn't already // exist with this name - if (engine.globalObject().property(name).isValid()) continue; + if (engine->globalObject().property(name).isValid()) continue; // For functions, to keep the QObject slot resolution working right, we // must wrap the property instead of simply copying it. if (it.value().isFunction()) { - engine.evaluate(QString("%1 = function(){ return %2.%1.apply(this, arguments); };") + engine->evaluate(QString("%1 = function(){ return %2.%1.apply(this, arguments); };") .arg(name) .arg(object)); } else { - engine.globalObject().setProperty(name, it.value()); + engine->globalObject().setProperty(name, it.value()); } } } -QString QScriptSystemTest::loadInternalScript(QString const &name, QScriptEngine &engine, bool withParentObject) +QString QScriptSystemTest::loadInternalScript(QString const &name, QScriptEngine *engine, bool withParentObject) { QString filename = QFileInfo(QString::fromAscii(__FILE__)).absolutePath() + "/" + name; if (!QFileInfo(filename).exists()) filename = ":/" + name; @@ -408,9 +448,9 @@ QString QScriptSystemTest::loadInternalScript(QString const &name, QScriptEngine data.append("\n}"); } - QScriptValue e = engine.evaluate(data, filename); + QScriptValue e = engine->evaluate(data, filename); if (e.isError()) { - QString backtrace = engine.uncaughtExceptionBacktrace().join("\n"); + QString backtrace = engine->uncaughtExceptionBacktrace().join("\n"); qWarning("In QtUiTest config file %s:\n%s\n%s", qPrintable(filename), qPrintable(e.toString()), qPrintable(backtrace)); } @@ -447,7 +487,7 @@ QString QScriptSystemTest::currentFile() QString fileName = QString(); int lineNumber = 0; - QtScript::getLocation(m_engine.currentContext(), &fileName, &lineNumber); + QtScript::getLocation(m_engine->currentContext(), &fileName, &lineNumber); return fileName; } @@ -457,14 +497,14 @@ int QScriptSystemTest::currentLine() QString fileName = QString(); int lineNumber = 0; - QtScript::getLocation(m_engine.currentContext(), &fileName, &lineNumber); + QtScript::getLocation(m_engine->currentContext(), &fileName, &lineNumber); return lineNumber; } void QScriptSystemTest::outputBacktrace() { - QScriptContext *ctx = m_engine.currentContext(); + QScriptContext *ctx = m_engine->currentContext(); QString bt("Backtrace:"); while (ctx) { QScriptContextInfo ctxInfo(ctx); @@ -480,7 +520,7 @@ void QScriptSystemTest::outputBacktrace() void QScriptSystemTest::skip(QString const &message, QSystemTest::SkipMode mode) { QSystemTest::skip(message, mode); - m_engine.evaluate("throw new QTestFailure('QSKIP');"); + m_engine->evaluate("throw new QTestFailure('QSKIP');"); } bool QScriptSystemTest::fail(QString const &message) @@ -491,7 +531,7 @@ bool QScriptSystemTest::fail(QString const &message) bool ret = QSystemTest::fail( message ); if (!ret) { outputBacktrace(); - m_engine.evaluate("throw new QTestFailure('QFAIL');"); + m_engine->evaluate("throw new QTestFailure('QFAIL');"); } return ret; } @@ -504,7 +544,7 @@ void QScriptSystemTest::verify(bool statement, QString const &message) if (!verify(statement, "<statement>", qPrintable(message), qPrintable(currentFile()), currentLine())) { outputBacktrace(); - m_engine.evaluate("throw new QTestFailure('QFAIL');"); + m_engine->evaluate("throw new QTestFailure('QFAIL');"); } } @@ -549,7 +589,7 @@ void QScriptSystemTest::compare(const QString &actual, const QString &expected) .arg(expected); test_result.addFailure(msg, currentFile(), currentLine()); outputBacktrace(); - m_engine.evaluate("throw new QTestFailure('QFAIL');"); + m_engine->evaluate("throw new QTestFailure('QFAIL');"); } else { test_result.addSuccess("actual and expected are the same", currentFile(), currentLine()); } @@ -573,7 +613,7 @@ void QScriptSystemTest::compare(const QStringList &actual, const QStringList &ex .arg(expected.count()); test_result.addFailure(msg, currentFile(), currentLine()); outputBacktrace(); - m_engine.evaluate("throw new QTestFailure('QFAIL');"); + m_engine->evaluate("throw new QTestFailure('QFAIL');"); return; } @@ -585,7 +625,7 @@ void QScriptSystemTest::compare(const QStringList &actual, const QStringList &ex .arg(expected[i]); test_result.addFailure(msg, currentFile(), currentLine()); outputBacktrace(); - m_engine.evaluate("throw new QTestFailure('QFAIL');"); + m_engine->evaluate("throw new QTestFailure('QFAIL');"); return; } } @@ -629,7 +669,7 @@ bool QScriptSystemTest::setQueryError( const QString &errString ) QSystemTest::setQueryError(errString); bool ret = fail(errString); if (!ret) { - m_engine.evaluate("throw new QTestFailure('QFAIL');"); + m_engine->evaluate("throw new QTestFailure('QFAIL');"); } return ret; } @@ -671,6 +711,7 @@ int QScriptSystemTest::runTest(const QString &fname, const QStringList ¶mete { m_run_environment = environment; + bool createNewEngine = (filename == fname); filename = fname; QFile file(filename); @@ -684,30 +725,8 @@ int QScriptSystemTest::runTest(const QString &fname, const QStringList ¶mete ScriptPreprocessor().preprocess(script); - setupEnums(&m_engine); - - // include() imports scripts directly into the parent script. - m_engine.globalObject().setProperty - ("include", m_engine.newFunction(includeFunction, 1)); - m_engine.globalObject().setProperty - ("setFlags", m_engine.newFunction(setFlags, 3)); - - - m_engine.setProcessEventsInterval(1); - - m_engine.globalObject().setProperty("_dateToString", m_engine.newFunction(dateToString)); - m_engine.evaluate("_old_date_toString = Date.prototype.toString;" - "Date.prototype.toString = function() {" - " if (arguments[0] == undefined)" - " return _old_date_toString.apply(this, arguments);" - " return _dateToString.apply(this, arguments);" - "}"); - - m_engine.globalObject().setProperty("ParentTestObject", m_engine.newQObject(this)); - m_engine.globalObject().setProperty("ParentTestMetaObject", m_engine.newQMetaObject(metaObject())); - - loadBuiltins(m_engine); - importIntoGlobalNamespace(m_engine, "ParentTestObject"); + initEngine(createNewEngine); + m_engine->setProcessEventsInterval(1); // Allow shebangs without giving syntax errors. if (script.startsWith("#!")) script.prepend("//"); @@ -717,7 +736,7 @@ int QScriptSystemTest::runTest(const QString &fname, const QStringList ¶mete if (!m_checkOnly) test_result.setCurrentTestCase(QFileInfo(filename).baseName()); - QtScriptTest tc(filename, script, &m_engine); + QtScriptTest tc(filename, script, m_engine); if (tc.status() != QtScriptTest::StatusNormal) { return -1; @@ -725,8 +744,8 @@ int QScriptSystemTest::runTest(const QString &fname, const QStringList ¶mete testObject = &tc; - qScriptRegisterMetaType(&m_engine, variantToScriptValue, variantFromScriptValue); - qScriptRegisterSequenceMetaType<QList<qint64> >(&m_engine); + qScriptRegisterMetaType(m_engine, variantToScriptValue, variantFromScriptValue); + qScriptRegisterSequenceMetaType<QList<qint64> >(m_engine); // Only set up the test data path if not explicitly set by user if (baseDataPath().isEmpty()) @@ -741,7 +760,7 @@ int QScriptSystemTest::runTest(const QString &fname, const QStringList ¶mete // If an IDE is connected, set the agent to enable script debugging if (QTestIDE::instance()->isConnected()) { - m_engine.setAgent(m_agent); + m_engine->setAgent(m_agent); } #if defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN) @@ -977,6 +996,8 @@ void QScriptSystemTest::invokeTestMethodDataEntry(const char *slot) } test_result.setCurrentTestLocation(test_result.CleanupFunc); + if (device_controller) + device_controller->killApplications(); invokeMethod(testObject, "cleanup()"); test_result.setCurrentTestLocation(test_result.NoWhere); } @@ -1128,7 +1149,7 @@ void QScriptSystemTest::dumpEngine() QString state; { - QScriptContext* ctx = m_engine.currentContext(); + QScriptContext* ctx = m_engine->currentContext(); state += "context: {"; int i = 0; QString sep; @@ -1144,7 +1165,7 @@ void QScriptSystemTest::dumpEngine() state += "\n};\n"; } - state += qDumpScriptValue("global", m_engine.globalObject()); + state += qDumpScriptValue("global", m_engine->globalObject()); state += ";"; fprintf(stderr, "%s\n", qPrintable(state)); @@ -1163,8 +1184,8 @@ void QScriptSystemTest::processMessage(const QTestMessage& message) map[key] = message[key]; QScriptValueList args; - args << m_engine.toScriptValue(message.event()); - args << m_engine.toScriptValue(map); + args << m_engine->toScriptValue(message.event()); + args << m_engine->toScriptValue(map); for (int i = 0; i < m_messageHandlers.count(); ++i) { QScriptValue out = m_messageHandlers[i].call(QScriptValue(), args); @@ -1201,7 +1222,7 @@ void QScriptSystemTest::scriptPositionChange(qint64 scriptId, int line, int colu Q_UNUSED(line); Q_UNUSED(column); - QScriptContextInfo ctxInfo(m_engine.currentContext()); + QScriptContextInfo ctxInfo(m_engine->currentContext()); if (!ctxInfo.fileName().isEmpty() && !builtins.contains(ctxInfo.fileName())) { QString functionName; if (ctxInfo.functionName().isEmpty()) { @@ -1210,7 +1231,7 @@ void QScriptSystemTest::scriptPositionChange(qint64 scriptId, int line, int colu functionName = ctxInfo.functionName(); } if (QTestIDE::instance()->queryBreakpoint(ctxInfo.fileName(), ctxInfo.lineNumber(), functionName, m_contextDepth)) { - QTestIDE::instance()->breakpointContext(m_engine.currentContext()); + QTestIDE::instance()->breakpointContext(m_engine->currentContext()); } } } diff --git a/interpreter/qscriptsystemtest.h b/interpreter/qscriptsystemtest.h index 46deb3c..7b22f5f 100644 --- a/interpreter/qscriptsystemtest.h +++ b/interpreter/qscriptsystemtest.h @@ -65,9 +65,9 @@ public: QScriptSystemTest(); virtual ~QScriptSystemTest(); - static QString loadInternalScript(QString const &name, QScriptEngine &engine, bool withParentObject = false); - static void loadBuiltins(QScriptEngine &engine); - static void importIntoGlobalNamespace(QScriptEngine&, QString const&); + static QString loadInternalScript(QString const &name, QScriptEngine *engine, bool withParentObject = false); + static void loadBuiltins(QScriptEngine *engine); + static void importIntoGlobalNamespace(QScriptEngine*, QString const&); virtual QString testCaseName() const; void scriptPositionChange(qint64, int, int); @@ -97,6 +97,7 @@ public slots: void dumpEngine(); protected: + virtual void initEngine(bool); virtual QString currentFile(); virtual int currentLine(); virtual void outputBacktrace(); @@ -123,7 +124,7 @@ protected: private: QString filename; static QScriptEngine *global_script_engine; - QScriptEngine m_engine; + QScriptEngine *m_engine; QScriptEngineAgent *m_agent; int m_contextDepth; QList<QScriptValue> m_messageHandlers; diff --git a/interpreter/qtscript_bindings.cpp b/interpreter/qtscript_bindings.cpp index 9661c65..d21d8fc 100644 --- a/interpreter/qtscript_bindings.cpp +++ b/interpreter/qtscript_bindings.cpp @@ -247,8 +247,7 @@ QtScriptTest::QtScriptTest(QString const &testFilePath, QString const &scriptDat if (m_testFilePath.isEmpty()) m_testFilePath="testcase.qtt"; - if (!m_engine) m_engine = new QScriptEngine(this); - m_engine->importExtension("qt.core"); +// m_engine->importExtension("qt.core"); QScriptValue qtestObject = m_engine->newObject(); qtestObject.setProperty("SkipSingle", QScriptValue(m_engine, QTestBase::SkipSingle)); @@ -315,6 +314,7 @@ QtScriptTest::QtScriptTest(QString const &testFilePath, QString const &scriptDat } QVector<uint> *data = qt_meta_data_QtScriptTest(); + data->clear(); // content: *data << 1 // revision << 0 // classname @@ -327,6 +327,7 @@ QtScriptTest::QtScriptTest(QString const &testFilePath, QString const &scriptDat QString testcaseName = QFileInfo(m_testFilePath).baseName(); QVector<char> *stringdata = qt_meta_stringdata_QtScriptTest(); + stringdata->clear(); appendCString(stringdata, testcaseName.toLocal8Bit() ); int namelen = stringdata->size(); appendCString(stringdata, ""); diff --git a/interpreter/scriptpreprocessor.cpp b/interpreter/scriptpreprocessor.cpp index d89f176..42a413b 100644 --- a/interpreter/scriptpreprocessor.cpp +++ b/interpreter/scriptpreprocessor.cpp @@ -50,7 +50,7 @@ ScriptPreprocessor::ScriptPreprocessor() { QScriptEngine engine; - QScriptSystemTest::loadInternalScript("config.js", engine); + QScriptSystemTest::loadInternalScript("config.js", &engine); QScriptValue settings = engine.globalObject().property("preprocess"); if (!settings.isObject()) return; diff --git a/libqsystemtest/customtestcontrol.cpp b/libqsystemtest/customtestcontrol.cpp index 0ba2573..84bec94 100644 --- a/libqsystemtest/customtestcontrol.cpp +++ b/libqsystemtest/customtestcontrol.cpp @@ -9,7 +9,7 @@ using namespace Qt4Test; CustomTestControl::CustomTestControl() : TestControl() { - + app_name = ""; } CustomTestControl::~CustomTestControl() @@ -19,18 +19,22 @@ CustomTestControl::~CustomTestControl() bool CustomTestControl::deviceConfiguration( QString &reply ) { + Q_UNUSED(reply); return false; } bool CustomTestControl::startApplication( const QString &application, const QStringList &arguments, bool styleQtUITest, const QStringList &environment, QString &reply ) { + Q_UNUSED(environment); + QProcess proc; QStringList args = arguments; args.prepend(application); + args.append(styleQtUITest ? "-style=qtuitest" : ""); static QByteArray startProcess = qgetenv("QTUITEST_START_PROCESS"); if (startProcess.isEmpty()) { - qDebug() << QString("Could not start remote process '%1', QTUITEST_START_PROCESS not defined.").arg(application); + reply = QString("Could not start remote process '%1', QTUITEST_START_PROCESS not defined.").arg(application); return false; } @@ -41,6 +45,8 @@ bool CustomTestControl::startApplication( const QString &application, const QStr return false; } + app_name = application; + return true; } @@ -50,11 +56,10 @@ bool CustomTestControl::killApplication( const QString &application, QString &re QProcess proc; QStringList args; args << application; - args << QString("-style=qtuitest"); static QByteArray stopProcess = qgetenv("QTUITEST_STOP_PROCESS"); if (stopProcess.isEmpty()) { - qDebug() << QString("Could not stop remote process '%1', QTUITEST_STOP_PROCESS not defined.").arg(application); + reply = QString("Could not stop remote process '%1', QTUITEST_STOP_PROCESS not defined.").arg(application); return false; } @@ -64,5 +69,6 @@ bool CustomTestControl::killApplication( const QString &application, QString &re if (!proc.waitForFinished(5000)) return false; } + app_name = ""; return true; } diff --git a/libqsystemtest/desktoptestcontrol.cpp b/libqsystemtest/desktoptestcontrol.cpp index 085a220..43a55d8 100644 --- a/libqsystemtest/desktoptestcontrol.cpp +++ b/libqsystemtest/desktoptestcontrol.cpp @@ -6,16 +6,17 @@ using namespace Qt4Test; -DesktopTestControl* DesktopTestControl::instance() -{ - static DesktopTestControl instance; - return &instance; -} +//DesktopTestControl* DesktopTestControl::instance() +//{ +// static DesktopTestControl instance; +// return &instance; +//} DesktopTestControl::DesktopTestControl() : TestControl() { proc = 0; + app_name = ""; } DesktopTestControl::~DesktopTestControl() @@ -25,6 +26,7 @@ DesktopTestControl::~DesktopTestControl() bool DesktopTestControl::deviceConfiguration( QString &reply ) { + Q_UNUSED(reply); return false; } @@ -40,7 +42,7 @@ bool DesktopTestControl::startApplication( const QString &application, const QSt args << "-style"; args << "qtuitest"; } -/* + QByteArray defArgs = qgetenv("QTUITEST_DEFAULT_AUT_ARGS"); if (defArgs.length()) { QList<QByteArray> defaultArgs = defArgs.split(' '); @@ -48,21 +50,24 @@ bool DesktopTestControl::startApplication( const QString &application, const QSt args << arg; } } - // For WinCE it does not support env variables - args << "-autport" << QString::number(m_aut_port); -*/ proc->start(application, args); if (!proc->waitForStarted()) { reply = QString("Failed to start process '%1': %2").arg(application).arg(proc->errorString()); delete proc; + proc = 0; return false; } + + app_name = application; + return true; } bool DesktopTestControl::killApplication( const QString &application, QString &reply ) { + Q_UNUSED(application); + Q_UNUSED(reply); if (!proc) return false; @@ -71,6 +76,10 @@ bool DesktopTestControl::killApplication( const QString &application, QString &r proc->kill(); proc->waitForFinished(5000); } + + delete proc; + proc = 0; + app_name = ""; return true; } diff --git a/libqsystemtest/libqsystemtest.pro b/libqsystemtest/libqsystemtest.pro index 60d8987..d125a5a 100644 --- a/libqsystemtest/libqsystemtest.pro +++ b/libqsystemtest/libqsystemtest.pro @@ -49,11 +49,7 @@ TEMPLATE=lib TARGET=qsystemtest TARGET=$$qtLibraryTarget($$TARGET) HEADERS*=$$SEMI_PRIVATE_HEADERS $$PRIVATE_HEADERS -<<<<<<< HEAD #INCLUDEPATH+=$$SRCROOT/libqtuitest -======= -CONFIG+=qtestlib staticlib ->>>>>>> origin/master QT+=network script LIBS+=-L$$BUILDROOT/lib -lBotan -lCore diff --git a/libqsystemtest/maemotestcontrol.cpp b/libqsystemtest/maemotestcontrol.cpp index 982abf2..44f561e 100644 --- a/libqsystemtest/maemotestcontrol.cpp +++ b/libqsystemtest/maemotestcontrol.cpp @@ -19,6 +19,7 @@ MaemoTestControl::MaemoTestControl( Core::SshConnectionParameters &sshParam ) { ssh_param = sshParam; control_mode = Idle; + app_name = ""; } MaemoTestControl::~MaemoTestControl() @@ -78,6 +79,9 @@ bool MaemoTestControl::startApplication( const QString &application, const QStri runBlockingCommand( CustomCommand, cmd, 10000); reply = reply_txt; + + if (reply_ok) app_name = application; + return reply_ok; } @@ -87,6 +91,7 @@ bool MaemoTestControl::killApplication( const QString &application, QString &rep // m_testProcess->kill(); // } + app_name = ""; return runCustomCommand( "killall " + application, 1000, reply); } diff --git a/libqsystemtest/meegotestcontrol.cpp b/libqsystemtest/meegotestcontrol.cpp index 2cfef89..b6e887e 100644 --- a/libqsystemtest/meegotestcontrol.cpp +++ b/libqsystemtest/meegotestcontrol.cpp @@ -5,7 +5,7 @@ using namespace Qt4Test; MeeGoTestControl::MeeGoTestControl() : TestControl() { - + app_name = ""; } MeeGoTestControl::~MeeGoTestControl() @@ -15,17 +15,27 @@ MeeGoTestControl::~MeeGoTestControl() bool MeeGoTestControl::deviceConfiguration( QString &reply ) { + Q_UNUSED(reply); return false; } bool MeeGoTestControl::startApplication( const QString &application, const QStringList &arguments, bool styleQtUITest, const QStringList &environment, QString &reply ) { + Q_UNUSED(arguments); + Q_UNUSED(styleQtUITest); + Q_UNUSED(environment); + Q_UNUSED(reply); + + app_name = application; return false; } bool MeeGoTestControl::killApplication( const QString &application, QString &reply ) { + Q_UNUSED(application); + Q_UNUSED(reply); + app_name = ""; return false; } diff --git a/libqsystemtest/qsystemtest.cpp b/libqsystemtest/qsystemtest.cpp index 22948e1..5f70f97 100644 --- a/libqsystemtest/qsystemtest.cpp +++ b/libqsystemtest/qsystemtest.cpp @@ -2193,12 +2193,7 @@ void QSystemTest::startApplication( const QString &application, const QStringLis return; } - if (test_result.currentTestFailed()) { - qDebug() << "curtest failed"; - return; - } if (test_result.currentTestFailed() || test_result.shouldAbort()) { - qDebug() << "should abort"; return; } @@ -2222,9 +2217,6 @@ void QSystemTest::startApplication( const QString &application, const QStringLis device_controller = new Qt4Test::TestController(Qt4Test::TestController::Maemo, &ssh_param); } - if (device_controller) - device_controller->killApplications(); - // setup configuration for target, used by configTarget() later QByteArray defTargetID = qgetenv("QTUITEST_TARGETID"); if (!defTargetID.isEmpty()) diff --git a/libqsystemtest/qsystemtest.h b/libqsystemtest/qsystemtest.h index d553cd1..8ac6b91 100644 --- a/libqsystemtest/qsystemtest.h +++ b/libqsystemtest/qsystemtest.h @@ -475,6 +475,7 @@ signals: protected: QStringList m_run_environment; + Qt4Test::TestController *device_controller; private: friend class QSystemTestMaster; @@ -528,7 +529,6 @@ private: bool isConnected(); // the following parameters are used to start an Application_Under_Test - Qt4Test::TestController *device_controller; Core::SshConnectionParameters ssh_param; quint16 m_aut_port; bool m_keep_aut; diff --git a/libqsystemtest/qtestlog.cpp b/libqsystemtest/qtestlog.cpp index f64a3ee..c797b65 100644 --- a/libqsystemtest/qtestlog.cpp +++ b/libqsystemtest/qtestlog.cpp @@ -40,7 +40,7 @@ QTestLog::QTestLog() log_file = 0; log_stream = 0; logging_disabled = FALSE; - logging_mode = LogXml; + logging_mode = LogText; is_gui_mode = FALSE; cache_enabled = FALSE; } @@ -202,9 +202,14 @@ void QTestLog::writeLog( const QKeyString &tmp ) writeLog( rec ); } -void QTestLog::writeLog( QTestResultRecord rec ) +void QTestLog::writeLog( const QTestResultRecord &rec ) { // qDebug() << "QTestLog::writeLog()" << rec.keyString(); + if (is_gui_mode) { + emit testResult( rec ); + return; + } + if (loggingDisabled()) return; @@ -224,13 +229,14 @@ void QTestLog::writeLog( QTestResultRecord rec ) if (S.isEmpty()) return; if (is_gui_mode) { - emit logResult( S ); +// emit logResult( S ); } else if (isLogging() ) { if (log_stream != 0) { *log_stream << S << "\n"; log_stream->flush(); } } else { + S+= "\n"; printf(S.toLatin1()); } } diff --git a/libqsystemtest/qtestlog.h b/libqsystemtest/qtestlog.h index 64a53d7..7976e94 100644 --- a/libqsystemtest/qtestlog.h +++ b/libqsystemtest/qtestlog.h @@ -103,7 +103,7 @@ public: int verboseLevel() {return 0;} //FIXME - void writeLog( QTestResultRecord rec ); + void writeLog( const QTestResultRecord &rec ); void writeLog( QTestBase::TestResult result, const QString &test, const QString &reason, @@ -135,7 +135,7 @@ public: void selectGUIMode(); signals: - void logResult( const QString &s ); + void testResult( const QTestResultRecord &rec ); private: QFile *log_file; diff --git a/libqsystemtest/qtestprotocol_p.h b/libqsystemtest/qtestprotocol_p.h index d2c2dc3..0fcd582 100644 --- a/libqsystemtest/qtestprotocol_p.h +++ b/libqsystemtest/qtestprotocol_p.h @@ -51,10 +51,11 @@ #include <QtNetwork/QTcpSocket> #include <QtNetwork/QTcpServer> #include <QtCore/QElapsedTimer> +#include "qtuitestglobal.h" #define REMOTE_CONNECT_ERROR 99 -class QTestMessage +class QSYSTEMTEST_EXPORT QTestMessage { public: QTestMessage(QString const &event = QString(), QVariantMap const &map = QVariantMap() ); diff --git a/libqsystemtest/qtestremote_p.h b/libqsystemtest/qtestremote_p.h index 0acec07..4d732a6 100644 --- a/libqsystemtest/qtestremote_p.h +++ b/libqsystemtest/qtestremote_p.h @@ -43,7 +43,7 @@ #define QTESTREMOTE_P_H #include "qtestprotocol_p.h" -#include <qtuitestglobal.h> +#include "qtuitestglobal.h" class QString; diff --git a/libqsystemtest/qtestresult.cpp b/libqsystemtest/qtestresult.cpp index 2c06737..d55bcfb 100644 --- a/libqsystemtest/qtestresult.cpp +++ b/libqsystemtest/qtestresult.cpp @@ -1298,7 +1298,7 @@ QTestResultRecord::QTestResultRecord( QTestBase::TestResult result, const QStrin this->comment = comment; } -QString QTestResultRecord::keyString() +QString QTestResultRecord::keyString() const { QKeyString key_string; key_string.addKey( "RESULT", result ); @@ -1320,22 +1320,22 @@ QString QTestResultRecord::keyString() return key_string; } -QString QTestResultRecord::xmlTfStart() +QString QTestResultRecord::xmlTfStart() const { return QString("<TestFunction name=\"%1\">\n").arg(testFunc); } -QString QTestResultRecord::xmlTfEnd() +QString QTestResultRecord::xmlTfEnd() const { return "</TestFunction>\n"; } -QString QTestResultRecord::xmlFileAndLine() +QString QTestResultRecord::xmlFileAndLine() const { return QString("file=\"%1\" line=\"%2\"").arg(file).arg(line); } -QString QTestResultRecord::xmlFailIncident() +QString QTestResultRecord::xmlFailIncident() const { QString ret = QString("<Incident type=\"%1\" %2>\n") .arg(QTestResult::resultToXmlStr( result )) @@ -1352,7 +1352,7 @@ QString QTestResultRecord::xmlFailIncident() return ret; } -QString QTestResultRecord::xmlString() +QString QTestResultRecord::xmlString() const { QString ret; switch (result) @@ -1414,7 +1414,22 @@ QString QTestResultRecord::xmlString() return ret; } -QString QTestResultRecord::normalString() +QString QTestResultRecord::resultStr() const +{ + return QTestResult::resultToStr( result ); +} + +QString QTestResultRecord::details() const +{ + return QString("%1::%2(%3) %4 %5") + .arg(testCase) + .arg(testFunc) + .arg(dataTag) + .arg(reason) + .arg(comment); +} + +QString QTestResultRecord::normalString() const { QString test = testCase; if (!testFunc.isEmpty()) diff --git a/libqsystemtest/qtestresult.h b/libqsystemtest/qtestresult.h index 8fa559b..29221d5 100644 --- a/libqsystemtest/qtestresult.h +++ b/libqsystemtest/qtestresult.h @@ -37,25 +37,27 @@ public: QString testName(); bool passed(); - QString normalString(); - QString xmlString(); - QString keyString(); + QString normalString() const; + QString xmlString() const; + QString keyString() const; bool decode( const QString &logText ); QString testCase; QString testFunc; QString dataTag; TestResult result; + QString resultStr() const; QString reason; QString file; int line; QString comment; + QString details() const; protected: - QString xmlTfStart(); - QString xmlTfEnd(); - QString xmlFileAndLine(); - QString xmlFailIncident(); + QString xmlTfStart() const; + QString xmlTfEnd() const; + QString xmlFileAndLine() const; + QString xmlFailIncident() const; }; class QTestResultSuite : public QObject diff --git a/libqsystemtest/symbiantestcontrol.cpp b/libqsystemtest/symbiantestcontrol.cpp index d1586bc..f0b00ef 100644 --- a/libqsystemtest/symbiantestcontrol.cpp +++ b/libqsystemtest/symbiantestcontrol.cpp @@ -5,7 +5,7 @@ using namespace Qt4Test; SymbianTestControl::SymbianTestControl() : TestControl() { - + app_name = ""; } SymbianTestControl::~SymbianTestControl() @@ -15,17 +15,28 @@ SymbianTestControl::~SymbianTestControl() bool SymbianTestControl::deviceConfiguration( QString &reply ) { + Q_UNUSED(reply); return false; } bool SymbianTestControl::startApplication( const QString &application, const QStringList &arguments, bool styleQtUITest, const QStringList &environment, QString &reply ) { + Q_UNUSED(arguments); + Q_UNUSED(styleQtUITest); + Q_UNUSED(environment); + Q_UNUSED(reply); + + app_name = application; + return false; } bool SymbianTestControl::killApplication( const QString &application, QString &reply ) { + Q_UNUSED(reply); + Q_UNUSED(application); + app_name = ""; return false; } diff --git a/libqsystemtest/testcontrol.cpp b/libqsystemtest/testcontrol.cpp index 75cf279..9c7d114 100644 --- a/libqsystemtest/testcontrol.cpp +++ b/libqsystemtest/testcontrol.cpp @@ -82,19 +82,14 @@ TestControl* TestController::controlFactory() { if (test_device_type == Maemo) return new MaemoTestControl(ssh_param); -// return MaemoTestControl::instance(ssh_param); else if (test_device_type == Desktop) -// return new DesktopTestControl(); - return DesktopTestControl::instance(); + return new DesktopTestControl(); else if (test_device_type == MeeGo) return new MeeGoTestControl(); -// return MeeGoTestControl::instance(); else if (test_device_type == Custom) return new CustomTestControl(); -// return CustomTestControl::instance(); else if (test_device_type == Symbian) return new SymbianTestControl(); -// return SymbianTestControl::instance(); return 0; } @@ -111,9 +106,8 @@ bool TestController::startApplication( const QString &application, const QString { TestControl *ctrl = controlFactory(); if (ctrl) { -// device_controls.append(ctrl); + device_controls.append(ctrl); if (ctrl->startApplication(application, arguments, styleQtUITest, environment, reply)) { - started_applications += application; return true; } } @@ -122,24 +116,29 @@ bool TestController::startApplication( const QString &application, const QString bool TestController::killApplication( const QString &application, QString &reply ) { - TestControl *ctrl = controlFactory(); - if (ctrl) { -// device_controls.append(ctrl); - return ctrl->killApplication(application, reply); + qDebug() << "TestController::killApplication()" << application; + TestControl *ctrl = 0; + for (int i=0; i<device_controls.count(); i++) { + ctrl = device_controls.at(i); + if (ctrl && ctrl->application() == application) { + return ctrl->killApplication(application, reply); + } } return false; } void TestController::killApplications() { - if (started_applications.count() == 0) - return; - + qDebug() << "TestController::killApplications()"; QString reply; - foreach (QString app, started_applications) { - killApplication(app, reply); + TestControl *ctrl = 0; + for (int i=0; i<device_controls.count(); i++) { + ctrl = device_controls.at(i); + if (ctrl && !ctrl->application().isEmpty()) { + qDebug() << "TestController::killApplications()" << ctrl->application(); + ctrl->killApplication(ctrl->application(), reply); + } } - started_applications.clear(); } } // namespace Qt4Test diff --git a/libqsystemtest/testcontrol.h b/libqsystemtest/testcontrol.h index fba2e89..efe85e1 100644 --- a/libqsystemtest/testcontrol.h +++ b/libqsystemtest/testcontrol.h @@ -50,10 +50,14 @@ public: TestControl(); virtual ~TestControl(); + virtual QString application() { return app_name; } virtual bool deviceConfiguration( QString &reply ) = 0; virtual bool startApplication( const QString &application, const QStringList &arguments, bool styleQtUITest, const QStringList &environment, QString &reply ) = 0; virtual bool killApplication( const QString &application, QString &reply ) = 0; + +protected: + QString app_name; }; /** @@ -84,7 +88,6 @@ protected: private: QList<TestControl*> device_controls; - QStringList started_applications; }; |