summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorCaroline Chao <caroline.chao@nokia.com>2012-01-23 12:55:21 +0100
committerQt by Nokia <qt-info@nokia.com>2012-02-07 12:43:34 +0100
commit36f5cc848de25251bfb1cae2ddeea0871ded1fac (patch)
tree465fb9cdcdfa93de540abb412219e32f9e2b9216 /src
parent6a75785f49ad11ab1cd026dc8cc2c765f003031f (diff)
CodeCoverage: Save coverage data in QTestLog::stopLogging()
Currently when tests are crashing, aborting or hanging, their status are reported with a status "Unknown" because SaveCoverageTool is never called for them. The status of the test given by the coverage tool should be the same as the one reported in the log output when the test is run. This change will allow more accuracy in the status reported. Add QTestResult::setCurrentAppname and QTestResult::currentAppname. To retrieve the name of the current application running. Task-number: QTQAINFRA-460 Change-Id: Icc476dc2d6cb28185e5447f1e79da6a8a31cad54 Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com> Reviewed-by: Jason McDonald <jason.mcdonald@nokia.com>
Diffstat (limited to 'src')
-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)
};