summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEd Baak <ed.baak@nokia.com>2010-08-05 09:13:03 +1000
committerEd Baak <ed.baak@nokia.com>2010-08-05 09:13:03 +1000
commita1f75440e1cd859e6b6ce77bdaa1b92bbc8aaaca (patch)
tree45218e3cb8e04781d4a38b6a34b68948853765ae
parentb2ca522879615e0cbb97cf94876a3d3fcf3caccf (diff)
parent521c569277b0df2fa0e4c7849a8162823f53d3c9 (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.pro6
-rw-r--r--interpreter/qscriptsystemtest.cpp137
-rw-r--r--interpreter/qscriptsystemtest.h9
-rw-r--r--interpreter/qtscript_bindings.cpp5
-rw-r--r--interpreter/scriptpreprocessor.cpp2
-rw-r--r--libqsystemtest/customtestcontrol.cpp14
-rw-r--r--libqsystemtest/desktoptestcontrol.cpp27
-rw-r--r--libqsystemtest/libqsystemtest.pro4
-rw-r--r--libqsystemtest/maemotestcontrol.cpp5
-rw-r--r--libqsystemtest/meegotestcontrol.cpp12
-rw-r--r--libqsystemtest/qsystemtest.cpp8
-rw-r--r--libqsystemtest/qsystemtest.h2
-rw-r--r--libqsystemtest/qtestlog.cpp12
-rw-r--r--libqsystemtest/qtestlog.h4
-rw-r--r--libqsystemtest/qtestprotocol_p.h3
-rw-r--r--libqsystemtest/qtestremote_p.h2
-rw-r--r--libqsystemtest/qtestresult.cpp29
-rw-r--r--libqsystemtest/qtestresult.h16
-rw-r--r--libqsystemtest/symbiantestcontrol.cpp13
-rw-r--r--libqsystemtest/testcontrol.cpp35
-rw-r--r--libqsystemtest/testcontrol.h5
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 &paramete
{
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 &paramete
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 &paramete
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 &paramete
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 &paramete
// 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;
};