Skip to content

Commit

Permalink
CodeCoverage: Fixes regression.
Browse files Browse the repository at this point in the history
Fixes segmentation fault introduced by qtbase change:
36f5cc848de2525

Coverage data are now saved in QTestLog::stopLogging. Also the current
application name needs to be set for a quick test as well.

Remove also code coverage call to installCodeCoverage from quicktest
due to refactor of the code coverage setup in qtestlib. This should be less
error-prone. See qtbase change:
949b7452e0d2402

Change-Id: I13566cc43dfb3af264d3b2be2e5f2617128f4801
Reviewed-by: Caroline Chao <caroline.chao@nokia.com>
  • Loading branch information
Caroline Chao authored and Qt by Nokia committed Feb 22, 2012
1 parent 3dd4584 commit 5b3d57e
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 34 deletions.
39 changes: 5 additions & 34 deletions src/qmltest/quicktest.cpp
Expand Up @@ -68,36 +68,6 @@
#include <QtCore/QTranslator>
QT_BEGIN_NAMESPACE

static void installCoverageTool(const char * appname, const char * testname)
{
#ifdef __COVERAGESCANNER__
// Install Coverage Tool
__coveragescanner_install(appname);
__coveragescanner_testname(testname);
__coveragescanner_clear();
#else
Q_UNUSED(appname);
Q_UNUSED(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
}


class QTestRootObject : public QObject
{
Q_OBJECT
Expand Down Expand Up @@ -224,10 +194,13 @@ int quick_test_main(int argc, char **argv, const char *name, quick_test_viewport
argc = outargc;

// Parse the command-line arguments.
QuickTestResult::parseArgs(argc, argv);

// Setting currentAppname and currentTestObjectName (via setProgramName) are needed
// for the code coverage analysis. Must be done before parseArgs is called.
QuickTestResult::setCurrentAppname(argv[0]);
QuickTestResult::setProgramName(name);

installCoverageTool(argv[0], name);
QuickTestResult::parseArgs(argc, argv);

QTranslator translator;
if (!translationFile.isEmpty()) {
Expand Down Expand Up @@ -338,8 +311,6 @@ int quick_test_main(int argc, char **argv, const char *name, quick_test_viewport
// Flush the current logging stream.
QuickTestResult::setProgramName(0);

saveCoverageTool(argv[0], QuickTestResult::exitCode() != 0);

//Sometimes delete app cause crash here with some qpa plugins,
//so we comment the follow line out to make them happy.
//delete app;
Expand Down
5 changes: 5 additions & 0 deletions src/qmltest/quicktestresult.cpp
Expand Up @@ -564,6 +564,11 @@ void QuickTestResult::setProgramName(const char *name)
QTestResult::setCurrentTestObject(globalProgramName);
}

void QuickTestResult::setCurrentAppname(const char *appname)
{
QTestResult::setCurrentAppname(appname);
}

int QuickTestResult::exitCode()
{
#if defined(QTEST_NOEXITCODE)
Expand Down
1 change: 1 addition & 0 deletions src/qmltest/quicktestresult_p.h
Expand Up @@ -143,6 +143,7 @@ public Q_SLOTS:
// Helper functions for the C++ main() shell.
static void parseArgs(int argc, char *argv[]);
static void setProgramName(const char *name);
static void setCurrentAppname(const char *appname);
static int exitCode();

Q_SIGNALS:
Expand Down

0 comments on commit 5b3d57e

Please sign in to comment.