summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/testlib/qtestcase.cpp25
-rw-r--r--src/testlib/qtestlog.cpp17
-rw-r--r--src/testlib/qtestresult.cpp12
-rw-r--r--src/testlib/qtestresult_p.h3
4 files changed, 37 insertions, 20 deletions
diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp
index 8a1d4bf44a..b76ff39de4 100644
--- a/src/testlib/qtestcase.cpp
+++ b/src/testlib/qtestcase.cpp
@@ -947,22 +947,6 @@ static void installCoverageTool(const char * appname, const char * testname)
#endif
}
-static void saveCoverageTool(const char * appname, bool testfailed)
-{
-#ifdef __COVERAGESCANNER__
- // install again to make sure the filename is correct.
- // without this, a plugin or similar may have changed the filename.
- __coveragescanner_install(appname);
- __coveragescanner_teststate(testfailed ? "FAILED" : "PASSED");
- __coveragescanner_save();
- __coveragescanner_testname("");
- __coveragescanner_clear();
-#else
- Q_UNUSED(appname);
- Q_UNUSED(testfailed);
-#endif
-}
-
namespace QTest
{
static QObject *currentTestObject = 0;
@@ -1970,10 +1954,13 @@ int QTest::qExec(QObject *testObject, int argc, char **argv)
const QMetaObject *metaObject = testObject->metaObject();
QTEST_ASSERT(metaObject);
- installCoverageTool(argv[0], metaObject->className());
-
QTestResult::setCurrentTestObject(metaObject->className());
+ QTestResult::setCurrentAppname(argv[0]);
+
qtest_qParseArgs(argc, argv, false);
+
+ installCoverageTool(argv[0], metaObject->className());
+
#ifdef QTESTLIB_USE_VALGRIND
if (QBenchmarkGlobalData::current->mode() == QBenchmarkGlobalData::CallgrindParentProcess) {
const QStringList origAppArgs(QCoreApplication::arguments());
@@ -2025,8 +2012,6 @@ int QTest::qExec(QObject *testObject, int argc, char **argv)
}
#endif
- saveCoverageTool(argv[0], QTestLog::failCount());
-
#ifdef QTESTLIB_USE_VALGRIND
if (QBenchmarkGlobalData::current->mode() == QBenchmarkGlobalData::CallgrindParentProcess)
return callgrindChildExitCode;
diff --git a/src/testlib/qtestlog.cpp b/src/testlib/qtestlog.cpp
index 7a4358a393..1d66101a0f 100644
--- a/src/testlib/qtestlog.cpp
+++ b/src/testlib/qtestlog.cpp
@@ -56,6 +56,22 @@
QT_BEGIN_NAMESPACE
+static void saveCoverageTool(const char * appname, bool testfailed)
+{
+#ifdef __COVERAGESCANNER__
+ // install again to make sure the filename is correct.
+ // without this, a plugin or similar may have changed the filename.
+ __coveragescanner_install(appname);
+ __coveragescanner_teststate(testfailed ? "FAILED" : "PASSED");
+ __coveragescanner_save();
+ __coveragescanner_testname("");
+ __coveragescanner_clear();
+#else
+ Q_UNUSED(appname);
+ Q_UNUSED(testfailed);
+#endif
+}
+
namespace QTest {
int fails = 0;
@@ -368,6 +384,7 @@ void QTestLog::stopLogging()
QTest::TestLoggers::stopLogging();
QTest::TestLoggers::destroyLoggers();
QTest::loggerUsingStdout = false;
+ saveCoverageTool(QTestResult::currentAppname(), failCount() != 0);
}
void QTestLog::addLogger(LogMode mode, const char *filename)
diff --git a/src/testlib/qtestresult.cpp b/src/testlib/qtestresult.cpp
index 1fb5bddcbb..d6846f363b 100644
--- a/src/testlib/qtestresult.cpp
+++ b/src/testlib/qtestresult.cpp
@@ -64,6 +64,8 @@ namespace QTest
static const char *expectFailComment = 0;
static int expectFailMode = 0;
+
+ static const char *currentAppname = 0;
}
void QTestResult::reset()
@@ -313,4 +315,14 @@ bool QTestResult::skipCurrentTest()
return QTest::skipCurrentTest;
}
+void QTestResult::setCurrentAppname(const char *appname)
+{
+ QTest::currentAppname = appname;
+}
+
+const char *QTestResult::currentAppname()
+{
+ return QTest::currentAppname;
+}
+
QT_END_NAMESPACE
diff --git a/src/testlib/qtestresult_p.h b/src/testlib/qtestresult_p.h
index fc7f834756..5bbb7e2d27 100644
--- a/src/testlib/qtestresult_p.h
+++ b/src/testlib/qtestresult_p.h
@@ -95,6 +95,9 @@ public:
static void setSkipCurrentTest(bool value);
static bool skipCurrentTest();
+ static void setCurrentAppname(const char *appname);
+ static const char *currentAppname();
+
private:
Q_DISABLE_COPY(QTestResult)
};