diff --git a/src/plugins/valgrind/unit_testdata/memcheck-output-sample1.xml b/src/plugins/valgrind/unit_testdata/memcheck-output-sample1.xml
new file mode 100644
index 00000000000..e4278497c9d
--- /dev/null
+++ b/src/plugins/valgrind/unit_testdata/memcheck-output-sample1.xml
@@ -0,0 +1,370 @@
+
+
+
+
+4
+memcheck
+
+
+ Memcheck, a memory error detector
+ Copyright (C) 2002-2009, and GNU GPL'd, by Julian Seward et al.
+ Using Valgrind-3.6.0.SVN-Debian and LibVEX; rerun with -h for copyright info
+ Command: kate
+
+
+22733
+17584
+memcheck
+
+
+
+ /usr/bin/valgrind.bin
+ --suppressions=/usr/lib/valgrind/debian-libc6-dbg.supp
+ --xml=yes
+ --xml-file=test.xml
+ --track-origins=yes
+
+
+ kate
+
+
+
+
+ RUNNING
+
+
+
+
+ 0x9
+ 1
+ InvalidRead
+ Invalid read of size 4
+
+
+ 0x6E47964
+ /usr/lib/libQtGui.so.4.7.0
+ QFrame::frameStyle() const
+ /build/buildd/qt4-x11-4.7.0/src/gui/widgets
+ qframe.cpp
+ 252
+
+
+ 0x118F2AF7
+ /usr/lib/kde4/plugins/styles/oxygen.so
+
+
+ 0x6A81671
+ /usr/lib/libQtGui.so.4.7.0
+ QWidget::event(QEvent*)
+ /build/buildd/qt4-x11-4.7.0/src/gui/kernel
+ qwidget.cpp
+ 8273
+
+
+ 0x6A2B6EB
+ /usr/lib/libQtGui.so.4.7.0
+ QApplicationPrivate::notify_helper(QObject*, QEvent*)
+ /build/buildd/qt4-x11-4.7.0/src/gui/kernel
+ qapplication.cpp
+ 4396
+
+
+
+ Address 0x11527cb8 is not stack'd, malloc'd or (recently) free'd
+
+
+
+
+ FINISHED
+
+
+
+
+ 0x13
+ 1
+ Leak_PossiblyLost
+
+ 2 bytes in 1 blocks are possibly lost in loss record 2 of 2,003
+ 2
+ 1
+
+
+
+ 0x4C284A8
+ /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so
+ malloc
+ /build/buildd/valgrind-3.6.0~svn20100212/coregrind/m_replacemalloc
+ vg_replace_malloc.c
+ 236
+
+
+ 0xD4D7754
+ /lib/libglib-2.0.so.0.2400.1
+ g_malloc
+
+
+ 0xD4EF11D
+ /lib/libglib-2.0.so.0.2400.1
+ g_strdup
+
+
+ 0xD503DC4
+ /lib/libglib-2.0.so.0.2400.1
+ g_get_language_names
+
+
+ 0xD4F89A9
+ /lib/libglib-2.0.so.0.2400.1
+ g_thread_init_glib
+
+
+ 0x8396569
+ /usr/lib/libQtCore.so.4.7.0
+ QEventDispatcherGlibPrivate::QEventDispatcherGlibPrivate(_GMainContext*)
+ /build/buildd/qt4-x11-4.7.0/src/corelib/kernel
+ qeventdispatcher_glib.cpp
+ 299
+
+
+ 0x6ADDBEE
+ /usr/lib/libQtGui.so.4.7.0
+ QGuiEventDispatcherGlibPrivate::QGuiEventDispatcherGlibPrivate()
+ /build/buildd/qt4-x11-4.7.0/src/gui/kernel
+ qguieventdispatcher_glib.cpp
+ 171
+
+
+ 0x6ADDCDD
+ /usr/lib/libQtGui.so.4.7.0
+ QGuiEventDispatcherGlib::QGuiEventDispatcherGlib(QObject*)
+ /build/buildd/qt4-x11-4.7.0/src/gui/kernel
+ qguieventdispatcher_glib.cpp
+ 186
+
+
+ 0x6AA5152
+ /usr/lib/libQtGui.so.4.7.0
+ QApplicationPrivate::createEventDispatcher()
+ /build/buildd/qt4-x11-4.7.0/src/gui/kernel
+ qapplication_x11.cpp
+ 605
+
+
+ 0x836D069
+ /usr/lib/libQtCore.so.4.7.0
+ QCoreApplication::init()
+ /build/buildd/qt4-x11-4.7.0/src/corelib/kernel
+ qcoreapplication.cpp
+ 552
+
+
+ 0x836D134
+ /usr/lib/libQtCore.so.4.7.0
+ QCoreApplication::QCoreApplication(QCoreApplicationPrivate&)
+ /build/buildd/qt4-x11-4.7.0/src/corelib/kernel
+ qcoreapplication.cpp
+ 477
+
+
+ 0x6A3815A
+ /usr/lib/libQtGui.so.4.7.0
+ QApplication::QApplication(int&, char**, bool, int)
+ /build/buildd/qt4-x11-4.7.0/src/gui/kernel
+ qapplication.cpp
+ 745
+
+
+
+
+
+ 0x7e4
+ 1
+ Leak_DefinitelyLost
+
+ 544,542 (56 direct, 544,486 indirect) bytes in 1 blocks are definitely lost in loss record 2,003 of 2,003
+ 544542
+ 1
+
+
+
+ 0x4C284A8
+ /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so
+ malloc
+ /build/buildd/valgrind-3.6.0~svn20100212/coregrind/m_replacemalloc
+ vg_replace_malloc.c
+ 236
+
+
+ 0x82A1A6C
+ /usr/lib/libQtCore.so.4.7.0
+ QMapData::node_create(QMapData::Node**, int, int)
+ /build/buildd/qt4-x11-4.7.0/src/corelib/tools
+ qmap.cpp
+ 140
+
+
+ 0x8336F68
+ /usr/lib/libQtCore.so.4.7.0
+ QMap<QSettingsKey, QVariant>::detach_helper()
+ /build/buildd/qt4-x11-4.7.0/src/corelib/../../include/QtCore/../../src/corelib/tools
+ qmap.h
+ 449
+
+
+ 0x832C564
+ /usr/lib/libQtCore.so.4.7.0
+ QConfFile::mergedKeyMap() const
+ /build/buildd/qt4-x11-4.7.0/src/corelib/../../include/QtCore/../../src/corelib/tools
+ qmap.h
+ 202
+
+
+ 0x833305A
+ /usr/lib/libQtCore.so.4.7.0
+ QConfFileSettingsPrivate::syncConfFile(int)
+ /build/buildd/qt4-x11-4.7.0/src/corelib/io
+ qsettings.cpp
+ 1569
+
+
+ 0x8333D5B
+ /usr/lib/libQtCore.so.4.7.0
+ QConfFileSettingsPrivate::sync()
+ /build/buildd/qt4-x11-4.7.0/src/corelib/io
+ qsettings.cpp
+ 1386
+
+
+ 0x83260D9
+ /usr/lib/libQtCore.so.4.7.0
+ QSettingsPrivate::update()
+ /build/buildd/qt4-x11-4.7.0/src/corelib/io
+ qsettings.cpp
+ 415
+
+
+ 0x83267C7
+ /usr/lib/libQtCore.so.4.7.0
+ QSettings::event(QEvent*)
+ /build/buildd/qt4-x11-4.7.0/src/corelib/io
+ qsettings.cpp
+ 3326
+
+
+ 0x6A2B6EB
+ /usr/lib/libQtGui.so.4.7.0
+ QApplicationPrivate::notify_helper(QObject*, QEvent*)
+ /build/buildd/qt4-x11-4.7.0/src/gui/kernel
+ qapplication.cpp
+ 4396
+
+
+ 0x6A311DC
+ /usr/lib/libQtGui.so.4.7.0
+ QApplication::notify(QObject*, QEvent*)
+ /build/buildd/qt4-x11-4.7.0/src/gui/kernel
+ qapplication.cpp
+ 4277
+
+
+ 0x6443535
+ /usr/lib/libkdeui.so.5.5.0
+ KApplication::notify(QObject*, QEvent*)
+
+
+ 0x83690AB
+ /usr/lib/libQtCore.so.4.7.0
+ QCoreApplication::notifyInternal(QObject*, QEvent*)
+ /build/buildd/qt4-x11-4.7.0/src/corelib/kernel
+ qcoreapplication.cpp
+ 732
+
+
+
+
+
+
+ 2
+ 0x9
+
+
+
+
+
+ 12
+ X on SUSE11 writev uninit padding
+
+
+ 2
+ dl-hack3-cond-1
+
+
+ 2
+ glibc-2.5.x-on-SUSE-10.2-(PPC)-2a
+
+
+
+
+
diff --git a/src/plugins/valgrind/valgrind.pro b/src/plugins/valgrind/valgrind.pro
index e7c82174fe4..504a9123cc2 100644
--- a/src/plugins/valgrind/valgrind.pro
+++ b/src/plugins/valgrind/valgrind.pro
@@ -55,3 +55,16 @@ FORMS += \
RESOURCES += \
valgrind.qrc
+
+equals(TEST, 1) {
+ DEFINES += "PARSERTESTS_DATA_DIR=\\\"$$_PRO_FILE_PWD_/unit_testdata\\\""
+ DEFINES += "VALGRIND_FAKE_PATH=\\\"$$IDE_BUILD_TREE/src/tools/valgrindfake\\\""
+ DEFINES += "TESTRUNNER_SRC_DIR=\\\"$$_PRO_FILE_PWD_/../../../tests/auto/valgrind/memcheck/testapps\\\""
+ DEFINES += "TESTRUNNER_APP_DIR=\\\"$(PWD)/../../../tests/auto/valgrind/memcheck/testapps\\\""
+
+ HEADERS += valgrindmemcheckparsertest.h \
+ valgrindtestrunnertest.h
+
+ SOURCES += valgrindmemcheckparsertest.cpp \
+ valgrindtestrunnertest.cpp
+}
diff --git a/src/plugins/valgrind/valgrind.qbs b/src/plugins/valgrind/valgrind.qbs
index beaf1bb830e..9bffc87ef95 100644
--- a/src/plugins/valgrind/valgrind.qbs
+++ b/src/plugins/valgrind/valgrind.qbs
@@ -88,4 +88,15 @@ QtcPlugin {
"threadedparser.cpp", "threadedparser.h",
]
}
+
+ Group {
+ name: "Test sources"
+ condition: qtc.testsEnabled
+ files: [
+ "valgrindmemcheckparsertest.cpp",
+ "valgrindmemcheckparsertest.h",
+ "valgrindtestrunnertest.cpp",
+ "valgrindtestrunnertest.h",
+ ]
+ }
}
diff --git a/tests/auto/valgrind/memcheck/parsertests.cpp b/src/plugins/valgrind/valgrindmemcheckparsertest.cpp
similarity index 86%
rename from tests/auto/valgrind/memcheck/parsertests.cpp
rename to src/plugins/valgrind/valgrindmemcheckparsertest.cpp
index 4d700e599be..58000ca2a4e 100644
--- a/tests/auto/valgrind/memcheck/parsertests.cpp
+++ b/src/plugins/valgrind/valgrindmemcheckparsertest.cpp
@@ -24,31 +24,26 @@
**
****************************************************************************/
-#include
-#include
-#include
-#include
+#include "valgrindmemcheckparsertest.h"
+#include "xmlprotocol/frame.h"
+#include "xmlprotocol/parser.h"
+#include "xmlprotocol/stack.h"
+#include "xmlprotocol/suppression.h"
+
+#include
#include
#include
-#include
-#include "parsertests.h"
-
-#include
-#include
#include
#include
+#include
#include
#include
#include
#include
#include
-#include
-#include
-
-using namespace Valgrind;
using namespace Valgrind::XmlProtocol;
QT_BEGIN_NAMESPACE
@@ -64,7 +59,10 @@ inline bool qCompare(int const &t1, MemcheckErrorKind const &t2,
} // namespace QTest
QT_END_NAMESPACE
-void dumpFrame(const Frame &f)
+namespace Valgrind {
+namespace Test {
+
+static void dumpFrame(const Frame &f)
{
qDebug() << f.instructionPointer() << f.directory() << f.fileName() << f.functionName()
<< f.line() << f.object();
@@ -74,10 +72,10 @@ void dumpError(const Error &e)
{
qDebug() << e.kind() << e.leakedBlocks() << e.leakedBytes() << e.what() << e.tid() << e.unique();
qDebug() << "stacks:" << e.stacks().size();
- Q_FOREACH(const Stack& s, e.stacks()) {
+ for (const Stack &s : e.stacks()) {
qDebug() << s.auxWhat() << s.directory() << s.file() << s.line() << s.helgrindThreadId();
qDebug() << "frames:";
- Q_FOREACH(const Frame& f, s.frames()) {
+ for (const Frame &f : s.frames()) {
dumpFrame(f);
}
}
@@ -85,7 +83,17 @@ void dumpError(const Error &e)
static QString fakeValgrindExecutable()
{
- return QLatin1String(VALGRIND_FAKE_PATH);
+ QString valgrindFakePath(VALGRIND_FAKE_PATH);
+ if (Utils::HostOsInfo::isWindowsHost()) {
+ QFileInfo fi(QString(valgrindFakePath + "/debug"), "valgrind-fake.exe");
+ if (fi.exists())
+ return fi.canonicalFilePath();
+ fi = QFileInfo(QString(valgrindFakePath + "/release"), "valgrind-fake.exe");
+ if (fi.exists())
+ return fi.canonicalFilePath();
+ qFatal("Neither debug nor release build valgrind-fake found.");
+ }
+ return valgrindFakePath + "/valgrind-fake";
}
static QString dataFile(const QLatin1String &file)
@@ -93,10 +101,8 @@ static QString dataFile(const QLatin1String &file)
return QLatin1String(PARSERTESTS_DATA_DIR) + QLatin1String("/") + file;
}
-void ParserTests::initTestCase()
+void ValgrindMemcheckParserTest::initTestCase()
{
- new ExtensionSystem::PluginManager;
- new ProjectExplorer::ProjectExplorerPlugin;
m_server = new QTcpServer(this);
QVERIFY(m_server->listen());
@@ -104,7 +110,7 @@ void ParserTests::initTestCase()
m_process = 0;
}
-void ParserTests::initTest(const QLatin1String &testfile, const QStringList &otherArgs)
+void ValgrindMemcheckParserTest::initTest(const QLatin1String &testfile, const QStringList &otherArgs)
{
QVERIFY(!m_server->hasPendingConnections());
@@ -132,7 +138,7 @@ void ParserTests::initTest(const QLatin1String &testfile, const QStringList &oth
QVERIFY(m_socket);
}
-void ParserTests::cleanup()
+void ValgrindMemcheckParserTest::cleanup()
{
if (m_socket) {
delete m_socket;
@@ -144,7 +150,7 @@ void ParserTests::cleanup()
}
}
-void ParserTests::testHelgrindSample1()
+void ValgrindMemcheckParserTest::testHelgrindSample1()
{
QSKIP("testfile does not exist");
@@ -240,7 +246,7 @@ void ParserTests::testHelgrindSample1()
// QCOMPARE(rec.suppcounts, expectedSuppCounts);
}
-void ParserTests::testMemcheckSample1()
+void ValgrindMemcheckParserTest::testMemcheckSample1()
{
initTest(QLatin1String("memcheck-output-sample1.xml"));
@@ -316,7 +322,7 @@ void ParserTests::testMemcheckSample1()
QCOMPARE(rec.suppcounts, expectedSuppCounts);
}
-void ParserTests::testMemcheckSample2()
+void ValgrindMemcheckParserTest::testMemcheckSample2()
{
QSKIP("testfile does not exist");
@@ -342,7 +348,7 @@ void ParserTests::testMemcheckSample2()
QCOMPARE(stacks.last().auxWhat(), QLatin1String("Address 0x11b66c50 is 0 bytes inside a block of size 16 free'd"));
}
-void ParserTests::testMemcheckSample3()
+void ValgrindMemcheckParserTest::testMemcheckSample3()
{
QSKIP("testfile does not exist");
@@ -394,7 +400,7 @@ void ParserTests::testMemcheckSample3()
QCOMPARE(rec.suppcounts.at(2).second, qint64(3));
}
-void ParserTests::testMemcheckCharm()
+void ValgrindMemcheckParserTest::testMemcheckCharm()
{
QSKIP("testfile does not exist");
@@ -415,7 +421,7 @@ void ParserTests::testMemcheckCharm()
QVERIFY2(parser.errorString().isEmpty(), qPrintable(parser.errorString()));
}
-void ParserTests::testValgrindCrash()
+void ValgrindMemcheckParserTest::testValgrindCrash()
{
initTest(QLatin1String("memcheck-output-sample1.xml"), QStringList() << "--crash");
@@ -430,7 +436,7 @@ void ParserTests::testValgrindCrash()
QCOMPARE(parser.errorString(), m_socket->errorString());
}
-void ParserTests::testValgrindGarbage()
+void ValgrindMemcheckParserTest::testValgrindGarbage()
{
initTest(QLatin1String("memcheck-output-sample1.xml"), QStringList() << "--garbage");
@@ -444,7 +450,7 @@ void ParserTests::testValgrindGarbage()
qDebug() << parser.errorString();
}
-void ParserTests::testParserStop()
+void ValgrindMemcheckParserTest::testParserStop()
{
ThreadedParser parser;
Memcheck::MemcheckRunner runner;
@@ -455,31 +461,39 @@ void ParserTests::testParserStop()
<< "--wait" << "5");
runner.setProcessChannelMode(QProcess::ForwardedChannels);
+ runner.setDevice(ProjectExplorer::DeviceManager::instance()->defaultDevice(
+ Core::Id(ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE)));
runner.start();
QTest::qWait(500);
runner.stop();
}
-void ParserTests::testRealValgrind()
+void ValgrindMemcheckParserTest::testRealValgrind()
{
+ const Utils::Environment &sysEnv = Utils::Environment::systemEnvironment();
+ auto fileName = sysEnv.searchInPath("valgrind");
+ if (fileName.isEmpty())
+ QSKIP("This test needs valgrind in PATH");
QString executable = QProcessEnvironment::systemEnvironment().value("VALGRIND_TEST_BIN", fakeValgrindExecutable());
qDebug() << "running exe:" << executable << " HINT: set VALGRIND_TEST_BIN to change this";
ThreadedParser parser;
ProjectExplorer::StandardRunnable debuggee;
debuggee.executable = executable;
-
+ debuggee.environment = sysEnv;
Memcheck::MemcheckRunner runner;
runner.setValgrindExecutable(QLatin1String("valgrind"));
runner.setDebuggee(debuggee);
+ runner.setDevice(ProjectExplorer::DeviceManager::instance()->defaultDevice(
+ Core::Id(ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE)));
runner.setParser(&parser);
RunnerDumper dumper(&runner, &parser);
runner.start();
runner.waitForFinished();
}
-void ParserTests::testValgrindStartError_data()
+void ValgrindMemcheckParserTest::testValgrindStartError_data()
{
QTest::addColumn("valgrindExe");
QTest::addColumn("valgrindArgs");
@@ -497,24 +511,27 @@ void ParserTests::testValgrindStartError_data()
<< fakeValgrindExecutable() << QString();
}
-void ParserTests::testValgrindStartError()
+void ValgrindMemcheckParserTest::testValgrindStartError()
{
QFETCH(QString, valgrindExe);
QFETCH(QStringList, valgrindArgs);
- QFETCH(QString, debuggeeExecutable);
+ QFETCH(QString, debuggee);
QFETCH(QString, debuggeeArgs);
ThreadedParser parser;
- ProjectExplorer::StandardRunnable debuggee;
- debuggee.executable = debuggeeExecutable;
- debuggee.commandLineArguments = debuggeeArgs;
+ ProjectExplorer::StandardRunnable debuggeeExecutable;
+ debuggeeExecutable.executable = debuggee;
+ debuggeeExecutable.environment = Utils::Environment::systemEnvironment();
+ debuggeeExecutable.commandLineArguments = debuggeeArgs;
Memcheck::MemcheckRunner runner;
runner.setParser(&parser);
runner.setValgrindExecutable(valgrindExe);
runner.setValgrindArguments(valgrindArgs);
- runner.setDebuggee(debuggee);
+ runner.setDebuggee(debuggeeExecutable);
+ runner.setDevice(ProjectExplorer::DeviceManager::instance()->defaultDevice(
+ Core::Id(ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE)));
RunnerDumper dumper(&runner, &parser);
runner.start();
runner.waitForFinished();
@@ -522,4 +539,5 @@ void ParserTests::testValgrindStartError()
// just finish without deadlock and we are fine
}
-QTEST_MAIN(ParserTests)
+} // namespace Test
+} // namespace Valgrind
diff --git a/tests/auto/valgrind/memcheck/parsertests.h b/src/plugins/valgrind/valgrindmemcheckparsertest.h
similarity index 92%
rename from tests/auto/valgrind/memcheck/parsertests.h
rename to src/plugins/valgrind/valgrindmemcheckparsertest.h
index cb65dd85577..f4c8f75676a 100644
--- a/tests/auto/valgrind/memcheck/parsertests.h
+++ b/src/plugins/valgrind/valgrindmemcheckparsertest.h
@@ -32,11 +32,11 @@
#include
#include
-#include
-#include
-#include
-#include
-#include
+#include "xmlprotocol/error.h"
+#include "xmlprotocol/status.h"
+#include "xmlprotocol/threadedparser.h"
+#include "xmlprotocol/parser.h"
+#include "memcheck/memcheckrunner.h"
QT_BEGIN_NAMESPACE
class QTcpServer;
@@ -44,6 +44,10 @@ class QTcpSocket;
class QProcess;
QT_END_NAMESPACE
+
+namespace Valgrind {
+namespace Test {
+
void dumpError(const Valgrind::XmlProtocol::Error &e);
class Recorder : public QObject
@@ -134,7 +138,7 @@ public:
};
-class ParserTests : public QObject
+class ValgrindMemcheckParserTest : public QObject
{
Q_OBJECT
@@ -159,7 +163,10 @@ private Q_SLOTS:
private:
void initTest(const QLatin1String &testfile, const QStringList &otherArgs = QStringList());
- QTcpServer *m_server;
- QProcess *m_process;
- QTcpSocket *m_socket;
+ QTcpServer *m_server = 0;
+ QProcess *m_process = 0;
+ QTcpSocket *m_socket = 0;
};
+
+} // namespace Test
+} // namespace Valgrind
diff --git a/src/plugins/valgrind/valgrindplugin.cpp b/src/plugins/valgrind/valgrindplugin.cpp
index 4ae0a361c85..ce58373512a 100644
--- a/src/plugins/valgrind/valgrindplugin.cpp
+++ b/src/plugins/valgrind/valgrindplugin.cpp
@@ -32,6 +32,11 @@
#include "valgrindsettings.h"
#include "valgrindconfigwidget.h"
+#ifdef WITH_TESTS
+# include "valgrindmemcheckparsertest.h"
+# include "valgrindtestrunnertest.h"
+#endif
+
#include
#include
#include
@@ -117,5 +122,14 @@ ValgrindGlobalSettings *ValgrindPlugin::globalSettings()
return theGlobalSettings;
}
+QList ValgrindPlugin::createTestObjects() const
+{
+ QList tests;
+#ifdef WITH_TESTS
+ tests << new Test::ValgrindMemcheckParserTest << new Test::ValgrindTestRunnerTest;
+#endif
+ return tests;
+}
+
} // namespace Internal
} // namespace Valgrind
diff --git a/src/plugins/valgrind/valgrindplugin.h b/src/plugins/valgrind/valgrindplugin.h
index b3f8cd2bd6e..e6a4fbd8eee 100644
--- a/src/plugins/valgrind/valgrindplugin.h
+++ b/src/plugins/valgrind/valgrindplugin.h
@@ -48,6 +48,8 @@ public:
ShutdownFlag aboutToShutdown() override;
static ValgrindGlobalSettings *globalSettings();
+private:
+ QList createTestObjects() const override;
};
} // namespace Internal
diff --git a/tests/auto/valgrind/memcheck/testrunner.cpp b/src/plugins/valgrind/valgrindtestrunnertest.cpp
similarity index 81%
rename from tests/auto/valgrind/memcheck/testrunner.cpp
rename to src/plugins/valgrind/valgrindtestrunnertest.cpp
index 06bf1c05122..8e930bc3b6e 100644
--- a/tests/auto/valgrind/memcheck/testrunner.cpp
+++ b/src/plugins/valgrind/valgrindtestrunnertest.cpp
@@ -24,76 +24,78 @@
**
****************************************************************************/
-#include "testrunner.h"
+#include "valgrindtestrunnertest.h"
-#include
-#include
-#include
-#include
-#include
-#include
+#include "xmlprotocol/frame.h"
+#include "xmlprotocol/stack.h"
+#include "xmlprotocol/suppression.h"
+#include "xmlprotocol/threadedparser.h"
+#include "xmlprotocol/parser.h"
+#include "memcheck/memcheckrunner.h"
+#include
#include
#include
-#include
#include
#include
#include
#include
-const QString appSrcDir(TESTRUNNER_SRC_DIR);
-const QString appBinDir(TESTRUNNER_APP_DIR);
+#define HEADER_LENGTH 25
-#define HEADER_LENGTH 30
+using namespace Valgrind::XmlProtocol;
+using namespace Valgrind::Memcheck;
-bool on64bit()
+namespace Valgrind {
+namespace Test {
+
+//BEGIN Test Helpers and boilerplate code
+
+static const QString appSrcDir(TESTRUNNER_SRC_DIR);
+static const QString appBinDir(TESTRUNNER_APP_DIR);
+
+static bool on64bit()
{
return sizeof(char*) == 8;
}
-QString srcDirForApp(const QString &app)
+static QString srcDirForApp(const QString &app)
{
- return appSrcDir + QLatin1Char('/') + app;
+ return QDir::cleanPath(appSrcDir + QLatin1Char('/') + app);
}
-QTEST_MAIN(Valgrind::TestRunner)
-
-using namespace Valgrind;
-using namespace Valgrind::XmlProtocol;
-using namespace Valgrind::Memcheck;
-
-//BEGIN Test Helpers and boilerplate code
-
-TestRunner::TestRunner(QObject *parent)
- : QObject(parent),
- m_parser(0),
- m_runner(0)
+ValgrindTestRunnerTest::ValgrindTestRunnerTest(QObject *parent)
+ : QObject(parent)
{
qRegisterMetaType();
}
-QString TestRunner::runTestBinary(const QString &binary, const QStringList &vArgs)
+QString ValgrindTestRunnerTest::runTestBinary(const QString &binary, const QStringList &vArgs)
{
- const QString binPath = appBinDir + QLatin1Char('/') + binary;
- if (!QFileInfo(binPath).isExecutable())
- qFatal("No such test app: %s", qPrintable(binPath));
+ const QFileInfo binPathFileInfo(appBinDir, binary);
+ if (!binPathFileInfo.isExecutable())
+ return QString();
ProjectExplorer::StandardRunnable debuggee;
+ const QString &binPath = binPathFileInfo.canonicalFilePath();
debuggee.executable = binPath;
+ debuggee.environment = Utils::Environment::systemEnvironment();
m_runner->setValgrindArguments(QStringList() << "--num-callers=50" << "--track-origins=yes" << vArgs);
m_runner->setDebuggee(debuggee);
+ m_runner->setDevice(ProjectExplorer::DeviceManager::instance()->defaultDevice(
+ Core::Id(ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE)));
m_runner->start();
m_runner->waitForFinished();
return binPath;
}
-void TestRunner::logMessageReceived(const QByteArray &message)
+void ValgrindTestRunnerTest::logMessageReceived(const QByteArray &message)
{
qDebug() << "log message received:" << message;
m_logMessages << message;
}
-void TestRunner::internalError(const QString &error)
+void ValgrindTestRunnerTest::internalError(const QString &error)
{
if (!m_expectCrash)
QFAIL(qPrintable(error));
@@ -101,12 +103,12 @@ void TestRunner::internalError(const QString &error)
qDebug() << "expected crash:" << error;
}
-void TestRunner::error(const Error &error)
+void ValgrindTestRunnerTest::error(const Error &error)
{
m_errors << error;
}
-void TestRunner::cleanup()
+void ValgrindTestRunnerTest::cleanup()
{
Q_ASSERT(m_runner);
delete m_runner;
@@ -120,14 +122,12 @@ void TestRunner::cleanup()
m_expectCrash = false;
}
-void TestRunner::initTestCase()
-{
- new ExtensionSystem::PluginManager;
- new ProjectExplorer::ProjectExplorerPlugin;
-}
-
-void TestRunner::init()
+void ValgrindTestRunnerTest::init()
{
+ const Utils::Environment &sysEnv = Utils::Environment::systemEnvironment();
+ auto fileName = sysEnv.searchInPath("valgrind");
+ if (fileName.isEmpty())
+ QSKIP("This test needs valgrind in PATH");
Q_ASSERT(m_logMessages.isEmpty());
Q_ASSERT(!m_runner);
@@ -135,24 +135,27 @@ void TestRunner::init()
m_runner->setValgrindExecutable(QLatin1String("valgrind"));
m_runner->setProcessChannelMode(QProcess::ForwardedChannels);
connect(m_runner, &MemcheckRunner::logMessageReceived,
- this, &TestRunner::logMessageReceived);
+ this, &ValgrindTestRunnerTest::logMessageReceived);
connect(m_runner, &ValgrindRunner::processErrorReceived,
- this, &TestRunner::internalError);
+ this, &ValgrindTestRunnerTest::internalError);
Q_ASSERT(!m_parser);
m_parser = new ThreadedParser;
connect(m_parser, &ThreadedParser::internalError,
- this, &TestRunner::internalError);
+ this, &ValgrindTestRunnerTest::internalError);
connect(m_parser, &ThreadedParser::error,
- this, &TestRunner::error);
+ this, &ValgrindTestRunnerTest::error);
m_runner->setParser(m_parser);
}
//BEGIN: Actual test cases
-void TestRunner::testLeak1()
+void ValgrindTestRunnerTest::testLeak1()
{
const QString binary = runTestBinary(QLatin1String("leak1/leak1"));
+ if (binary.isEmpty())
+ QSKIP("You need to pass BUILD_TESTS when building Qt Creator or build valgrind testapps "
+ "manually before executing this test.");
QVERIFY(m_logMessages.isEmpty());
@@ -183,9 +186,12 @@ void TestRunner::testLeak1()
}
}
-void TestRunner::testLeak2()
+void ValgrindTestRunnerTest::testLeak2()
{
const QString binary = runTestBinary(QLatin1String("leak2/leak2"));
+ if (binary.isEmpty())
+ QSKIP("You need to pass BUILD_TESTS when building Qt Creator or build valgrind testapps "
+ "manually before executing this test.");
QVERIFY(m_logMessages.isEmpty());
QCOMPARE(m_errors.count(), 1);
@@ -220,10 +226,12 @@ void TestRunner::testLeak2()
}
}
-void TestRunner::testLeak3()
+void ValgrindTestRunnerTest::testLeak3()
{
const QString binary = runTestBinary(QLatin1String("leak3/leak3"), QStringList() << "--show-reachable=yes");
-
+ if (binary.isEmpty())
+ QSKIP("You need to pass BUILD_TESTS when building Qt Creator or build valgrind testapps "
+ "manually before executing this test.");
QVERIFY(m_logMessages.isEmpty());
QCOMPARE(m_errors.count(), 1);
@@ -258,16 +266,19 @@ void TestRunner::testLeak3()
}
}
-void TestRunner::testLeak4()
+void ValgrindTestRunnerTest::testLeak4()
{
const QString app("leak4");
const QString binary = runTestBinary(app + QLatin1Char('/') + app,
QStringList() << "--show-reachable=yes");
+ if (binary.isEmpty())
+ QSKIP("You need to pass BUILD_TESTS when building Qt Creator or build valgrind testapps "
+ "manually before executing this test.");
const QString srcDir = srcDirForApp("leak4");
QVERIFY(m_logMessages.isEmpty());
- QCOMPARE(m_errors.count(), 2);
+ QCOMPARE(m_errors.count(), 3);
//BEGIN first error
{
const Error error = m_errors.first();
@@ -306,7 +317,7 @@ void TestRunner::testLeak4()
}
//BEGIN second error
{
- const Error error = m_errors.last();
+ const Error error = m_errors.at(1);
QCOMPARE(error.kind(), int(Leak_DefinitelyLost));
QCOMPARE(error.leakedBlocks(), qint64(1));
if (on64bit())
@@ -334,12 +345,16 @@ void TestRunner::testLeak4()
QCOMPARE(QDir::cleanPath(frame.directory()), srcDir);
}
}
+ // TODO add third error check
}
-void TestRunner::uninit1()
+void ValgrindTestRunnerTest::testUninit1()
{
const QString app("uninit1");
const QString binary = runTestBinary(app + QLatin1Char('/') + app);
+ if (binary.isEmpty())
+ QSKIP("You need to pass BUILD_TESTS when building Qt Creator or build valgrind testapps "
+ "manually before executing this test.");
const QString srcDir = srcDirForApp(app);
QVERIFY(m_logMessages.isEmpty());
@@ -378,11 +393,14 @@ void TestRunner::uninit1()
}
}
-void TestRunner::uninit2()
+void ValgrindTestRunnerTest::testUninit2()
{
const QString app("uninit2");
m_expectCrash = true;
const QString binary = runTestBinary(app + QLatin1Char('/') + app);
+ if (binary.isEmpty())
+ QSKIP("You need to pass BUILD_TESTS when building Qt Creator or build valgrind testapps "
+ "manually before executing this test.");
const QString srcDir = srcDirForApp(app);
QVERIFY(m_logMessages.isEmpty());
@@ -442,11 +460,14 @@ void TestRunner::uninit2()
}
}
-void TestRunner::uninit3()
+void ValgrindTestRunnerTest::testUninit3()
{
const QString app("uninit3");
m_expectCrash = true;
const QString binary = runTestBinary(app + QLatin1Char('/') + app);
+ if (binary.isEmpty())
+ QSKIP("You need to pass BUILD_TESTS when building Qt Creator or build valgrind testapps "
+ "manually before executing this test.");
const QString srcDir = srcDirForApp(app);
QVERIFY(m_logMessages.isEmpty());
@@ -506,10 +527,13 @@ void TestRunner::uninit3()
}
}
-void TestRunner::syscall()
+void ValgrindTestRunnerTest::testSyscall()
{
const QString app("syscall");
const QString binary = runTestBinary(app + QLatin1Char('/') + app);
+ if (binary.isEmpty())
+ QSKIP("You need to pass BUILD_TESTS when building Qt Creator or build valgrind testapps "
+ "manually before executing this test.");
const QString srcDir = srcDirForApp(app);
QVERIFY(m_logMessages.isEmpty());
@@ -565,10 +589,13 @@ void TestRunner::syscall()
}
}
-void TestRunner::free1()
+void ValgrindTestRunnerTest::testFree1()
{
const QString app("free1");
const QString binary = runTestBinary(app + QLatin1Char('/') + app);
+ if (binary.isEmpty())
+ QSKIP("You need to pass BUILD_TESTS when building Qt Creator or build valgrind testapps "
+ "manually before executing this test.");
const QString srcDir = srcDirForApp(app);
QVERIFY(m_logMessages.isEmpty());
@@ -619,10 +646,13 @@ void TestRunner::free1()
}
}
-void TestRunner::free2()
+void ValgrindTestRunnerTest::testFree2()
{
const QString app("free2");
const QString binary = runTestBinary(app + QLatin1Char('/') + app);
+ if (binary.isEmpty())
+ QSKIP("You need to pass BUILD_TESTS when building Qt Creator or build valgrind testapps "
+ "manually before executing this test.");
const QString srcDir = srcDirForApp(app);
QVERIFY(m_logMessages.isEmpty());
@@ -677,12 +707,14 @@ void TestRunner::free2()
}
}
-void TestRunner::invalidjump()
+void ValgrindTestRunnerTest::testInvalidjump()
{
const QString app("invalidjump");
m_expectCrash = true;
const QString binary = runTestBinary(app + QLatin1Char('/') + app);
- const QString srcDir = srcDirForApp(app);
+ if (binary.isEmpty())
+ QSKIP("You need to pass BUILD_TESTS when building Qt Creator or build valgrind testapps "
+ "manually before executing this test.");
QVERIFY(m_logMessages.isEmpty());
@@ -705,11 +737,14 @@ void TestRunner::invalidjump()
}
-void TestRunner::overlap()
+void ValgrindTestRunnerTest::testOverlap()
{
const QString app("overlap");
m_expectCrash = true;
const QString binary = runTestBinary(app + QLatin1Char('/') + app);
+ if (binary.isEmpty())
+ QSKIP("You need to pass BUILD_TESTS when building Qt Creator or build valgrind testapps "
+ "manually before executing this test.");
const QString srcDir = srcDirForApp(app);
QVERIFY(m_logMessages.isEmpty());
@@ -735,3 +770,6 @@ void TestRunner::overlap()
QCOMPARE(QDir::cleanPath(frame.directory()), srcDir);
}
}
+
+} // namespace Test
+} // namespace Valgrind
diff --git a/tests/auto/valgrind/memcheck/testrunner.h b/src/plugins/valgrind/valgrindtestrunnertest.h
similarity index 79%
rename from tests/auto/valgrind/memcheck/testrunner.h
rename to src/plugins/valgrind/valgrindtestrunnertest.h
index 79eccf675a6..263f8e58760 100644
--- a/tests/auto/valgrind/memcheck/testrunner.h
+++ b/src/plugins/valgrind/valgrindtestrunnertest.h
@@ -29,7 +29,7 @@
#include
#include
-#include
+#include "xmlprotocol/error.h"
namespace Valgrind {
@@ -41,15 +41,16 @@ namespace Memcheck {
class MemcheckRunner;
}
-class TestRunner : public QObject
+namespace Test {
+
+class ValgrindTestRunnerTest : public QObject
{
Q_OBJECT
public:
- explicit TestRunner(QObject *parent = 0);
+ explicit ValgrindTestRunnerTest(QObject *parent = 0);
-private Q_SLOTS:
- void initTestCase();
+private slots:
void init();
void cleanup();
@@ -58,18 +59,17 @@ private Q_SLOTS:
void testLeak3();
void testLeak4();
- void uninit1();
- void uninit2();
- void uninit3();
+ void testUninit1();
+ void testUninit2();
+ void testUninit3();
- void free1();
- void free2();
+ void testFree1();
+ void testFree2();
- void invalidjump();
- void syscall();
- void overlap();
+ void testInvalidjump();
+ void testSyscall();
+ void testOverlap();
-private Q_SLOTS:
void logMessageReceived(const QByteArray &message);
void internalError(const QString &error);
void error(const Valgrind::XmlProtocol::Error &error);
@@ -77,11 +77,12 @@ private Q_SLOTS:
private:
QString runTestBinary(const QString &binary, const QStringList &vArgs = QStringList());
- XmlProtocol::ThreadedParser *m_parser;
- Memcheck::MemcheckRunner *m_runner;
+ XmlProtocol::ThreadedParser *m_parser = 0;
+ Memcheck::MemcheckRunner *m_runner = 0;
QList m_logMessages;
QList m_errors;
- bool m_expectCrash;
+ bool m_expectCrash = false;
};
+} // namespace Test
} // namespace Valgrind
diff --git a/tests/auto/valgrind/memcheck/data/memcheck-output-untitled.xml b/tests/auto/valgrind/memcheck/data/memcheck-output-untitled.xml
deleted file mode 100644
index d4678d6592d..00000000000
--- a/tests/auto/valgrind/memcheck/data/memcheck-output-untitled.xml
+++ /dev/null
@@ -1,984 +0,0 @@
-
-
-
-
-4
-memcheck
-
-
- Memcheck, a memory error detector
- Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al.
- Using Valgrind-3.6.1 and LibVEX; rerun with -h for copyright info
- Command: /home/chris/untitled/untitled
-
-
-20854
-20386
-memcheck
-
-
-
- /usr/bin/valgrind.bin
- --suppressions=/usr/lib/valgrind/debian-libc6-dbg.supp
- --xml=yes
- --xml-file=/tmp/bla
-
-
- /home/chris/untitled/untitled
-
-
-
-
- RUNNING
-
-
-
-
-
- FINISHED
-
-
-
-
- 0x107
- 1
- Leak_PossiblyLost
-
- 120 bytes in 1 blocks are possibly lost in loss record 184 of 270
- 120
- 1
-
-
-
- 0x402517B
- /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so
- memalign
- /build/buildd/valgrind-3.6.1/coregrind/m_replacemalloc
- vg_replace_malloc.c
- 581
-
-
- 0x40251D8
- /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so
- posix_memalign
- /build/buildd/valgrind-3.6.1/coregrind/m_replacemalloc
- vg_replace_malloc.c
- 709
-
-
- 0x42BE546
- /lib/i386-linux-gnu/libglib-2.0.so.0.2800.6
-
-
- 0x42BFA2F
- /lib/i386-linux-gnu/libglib-2.0.so.0.2800.6
- g_slice_alloc
-
-
- 0x42C06DD
- /lib/i386-linux-gnu/libglib-2.0.so.0.2800.6
- g_slist_prepend
-
-
- 0x42C368E
- /lib/i386-linux-gnu/libglib-2.0.so.0.2800.6
- g_strsplit
-
-
- 0x42D9393
- /lib/i386-linux-gnu/libglib-2.0.so.0.2800.6
- g_get_language_names
-
-
- 0x42D98E6
- /lib/i386-linux-gnu/libglib-2.0.so.0.2800.6
-
-
- 0x42CB919
- /lib/i386-linux-gnu/libglib-2.0.so.0.2800.6
- g_thread_init_glib
-
-
- 0x4254506
- /usr/lib/i386-linux-gnu/libgthread-2.0.so.0.2800.6
- g_thread_init
-
-
- 0x8D4D458
- /home/chris/untitled/untitled
- QEventDispatcherGlibPrivate::QEventDispatcherGlibPrivate(_GMainContext*)
-
-
- 0x85C7CA5
- /home/chris/untitled/untitled
- QGuiEventDispatcherGlibPrivate::QGuiEventDispatcherGlibPrivate()
-
-
-
-
-
- 0x109
- 1
- Leak_DefinitelyLost
-
- 122 (56 direct, 66 indirect) bytes in 1 blocks are definitely lost in loss record 186 of 270
- 122
- 1
-
-
-
- 0x402641D
- /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so
- operator new(unsigned int)
- /build/buildd/valgrind-3.6.1/coregrind/m_replacemalloc
- vg_replace_malloc.c
- 255
-
-
- 0x8D0FC45
- /home/chris/untitled/untitled
- QLibraryPrivate::findOrCreate(QString const&, QString const&)
-
-
- 0x8D10347
- /home/chris/untitled/untitled
- QLibrary::setFileNameAndVersion(QString const&, int)
-
-
- 0x8D10404
- /home/chris/untitled/untitled
- QLibrary::QLibrary(QString const&, int, QObject*)
-
-
- 0x859BD96
- /home/chris/untitled/untitled
- qt_load_library_runtime(char const*, int, int, char const*)
-
-
- 0x859C93C
- /home/chris/untitled/untitled
- qt_init(QApplicationPrivate*, int, _XDisplay*, unsigned long, unsigned long)
-
-
- 0x853EEDC
- /home/chris/untitled/untitled
- QApplicationPrivate::construct(_XDisplay*, unsigned long, unsigned long)
-
-
- 0x853F766
- /home/chris/untitled/untitled
- QApplication::QApplication(int&, char**, int)
-
-
- 0x805209E
- /home/chris/untitled/untitled
- createApplication(int&, char**)
- /home/chris/untitled/qmlapplicationviewer
- qmlapplicationviewer.cpp
- 175
-
-
- 0x805185F
- /home/chris/untitled/untitled
- main
- /home/chris/untitled
- main.cpp
- 6
-
-
-
-
-
- 0x10a
- 1
- Leak_DefinitelyLost
-
- 124 bytes in 1 blocks are definitely lost in loss record 187 of 270
- 124
- 1
-
-
-
- 0x4026864
- /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so
- malloc
- /build/buildd/valgrind-3.6.1/coregrind/m_replacemalloc
- vg_replace_malloc.c
- 236
-
-
- 0x4635902
- /usr/lib/i386-linux-gnu/libxcb.so.1.1.0
- get_peer_sock_name
- /build/buildd/libxcb-1.7/obj-i686-linux-gnu/src/../../src
- xcb_auth.c
- 259
-
-
- 0x4635A04
- /usr/lib/i386-linux-gnu/libxcb.so.1.1.0
- _xcb_get_auth_info
- /build/buildd/libxcb-1.7/obj-i686-linux-gnu/src/../../src
- xcb_auth.c
- 302
-
-
- 0x46353D1
- /usr/lib/i386-linux-gnu/libxcb.so.1.1.0
- xcb_connect_to_display_with_auth_info
- /build/buildd/libxcb-1.7/obj-i686-linux-gnu/src/../../src
- xcb_util.c
- 424
-
-
- 0x46355DB
- /usr/lib/i386-linux-gnu/libxcb.so.1.1.0
- xcb_connect
- /build/buildd/libxcb-1.7/obj-i686-linux-gnu/src/../../src
- xcb_util.c
- 395
-
-
- 0x4169A22
- /usr/lib/i386-linux-gnu/libX11.so.6.3.0
- _XConnectXCB
-
-
- 0x41598F3
- /usr/lib/i386-linux-gnu/libX11.so.6.3.0
- XOpenDisplay
-
-
- 0x859E45F
- /home/chris/untitled/untitled
- qt_init(QApplicationPrivate*, int, _XDisplay*, unsigned long, unsigned long)
-
-
- 0x853EEDC
- /home/chris/untitled/untitled
- QApplicationPrivate::construct(_XDisplay*, unsigned long, unsigned long)
-
-
- 0x853F766
- /home/chris/untitled/untitled
- QApplication::QApplication(int&, char**, int)
-
-
- 0x805209E
- /home/chris/untitled/untitled
- createApplication(int&, char**)
- /home/chris/untitled/qmlapplicationviewer
- qmlapplicationviewer.cpp
- 175
-
-
- 0x805185F
- /home/chris/untitled/untitled
- main
- /home/chris/untitled
- main.cpp
- 6
-
-
-
-
-
- 0x10f
- 1
- Leak_DefinitelyLost
-
- 138 (56 direct, 82 indirect) bytes in 1 blocks are definitely lost in loss record 192 of 270
- 138
- 1
-
-
-
- 0x402641D
- /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so
- operator new(unsigned int)
- /build/buildd/valgrind-3.6.1/coregrind/m_replacemalloc
- vg_replace_malloc.c
- 255
-
-
- 0x8D0FC45
- /home/chris/untitled/untitled
- QLibraryPrivate::findOrCreate(QString const&, QString const&)
-
-
- 0x8D10347
- /home/chris/untitled/untitled
- QLibrary::setFileNameAndVersion(QString const&, int)
-
-
- 0x8D10404
- /home/chris/untitled/untitled
- QLibrary::QLibrary(QString const&, int, QObject*)
-
-
- 0x859BD96
- /home/chris/untitled/untitled
- qt_load_library_runtime(char const*, int, int, char const*)
-
-
- 0x859DE94
- /home/chris/untitled/untitled
- qt_init(QApplicationPrivate*, int, _XDisplay*, unsigned long, unsigned long)
-
-
- 0x853EEDC
- /home/chris/untitled/untitled
- QApplicationPrivate::construct(_XDisplay*, unsigned long, unsigned long)
-
-
- 0x853F766
- /home/chris/untitled/untitled
- QApplication::QApplication(int&, char**, int)
-
-
- 0x805209E
- /home/chris/untitled/untitled
- createApplication(int&, char**)
- /home/chris/untitled/qmlapplicationviewer
- qmlapplicationviewer.cpp
- 175
-
-
- 0x805185F
- /home/chris/untitled/untitled
- main
- /home/chris/untitled
- main.cpp
- 6
-
-
-
-
-
- 0x114
- 1
- Leak_DefinitelyLost
-
- 158 (56 direct, 102 indirect) bytes in 1 blocks are definitely lost in loss record 197 of 270
- 158
- 1
-
-
-
- 0x402641D
- /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so
- operator new(unsigned int)
- /build/buildd/valgrind-3.6.1/coregrind/m_replacemalloc
- vg_replace_malloc.c
- 255
-
-
- 0x8D0FC45
- /home/chris/untitled/untitled
- QLibraryPrivate::findOrCreate(QString const&, QString const&)
-
-
- 0x8D1023F
- /home/chris/untitled/untitled
- QLibrary::setFileNameAndVersion(QString const&, QString const&)
-
-
- 0x8D102A4
- /home/chris/untitled/untitled
- QLibrary::QLibrary(QString const&, QString const&, QObject*)
-
-
- 0x8C8FCCD
- /home/chris/untitled/untitled
- qt_initIcu(QString const&)
-
-
- 0x8C4B0CF
- /home/chris/untitled/untitled
- QLocalePrivate::updateSystemPrivate()
-
-
- 0x8C4B3C6
- /home/chris/untitled/untitled
- systemPrivate()
-
-
- 0x8C4B40C
- /home/chris/untitled/untitled
- defaultPrivate()
-
-
- 0x8C4B55F
- /home/chris/untitled/untitled
- QLocale::QLocale()
-
-
- 0x8CCF6F3
- /home/chris/untitled/untitled
- QResourceFileEngine::QResourceFileEngine(QString const&)
-
-
- 0x8CF87DC
- /home/chris/untitled/untitled
- _q_resolveEntryAndCreateLegacyEngine_recursive(QFileSystemEntry&, QFileSystemMetaData&, QAbstractFileEngine*&, bool)
-
-
- 0x8CF8947
- /home/chris/untitled/untitled
- QFileSystemEngine::resolveEntryAndCreateLegacyEngine(QFileSystemEntry&, QFileSystemMetaData&)
-
-
-
-
-
- 0x116
- 1
- Leak_PossiblyLost
-
- 160 bytes in 1 blocks are possibly lost in loss record 199 of 270
- 160
- 1
-
-
-
- 0x4025315
- /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so
- calloc
- /build/buildd/valgrind-3.6.1/coregrind/m_replacemalloc
- vg_replace_malloc.c
- 467
-
-
- 0x4010CD7
- /lib/i386-linux-gnu/ld-2.13.so
- allocate_dtv
- /build/buildd/eglibc-2.13/elf
- dl-tls.c
- 300
-
-
- 0x401146B
- /lib/i386-linux-gnu/ld-2.13.so
- _dl_allocate_tls
- /build/buildd/eglibc-2.13/elf
- dl-tls.c
- 464
-
-
- 0x433E5C6
- /lib/i386-linux-gnu/libpthread-2.13.so
- pthread_create@@GLIBC_2.1
- /build/buildd/eglibc-2.13/nptl
- allocatestack.c
- 570
-
-
- 0x83A6BED
- /home/chris/untitled/untitled
- QTWTF::TCMalloc_PageHeap::initializeScavenger()
-
-
- 0x83A92E9
- /home/chris/untitled/untitled
- QTWTF::TCMalloc_ThreadCache::InitModule()
-
-
- 0x83AA188
- /home/chris/untitled/untitled
- QTWTF::fastMalloc(unsigned int)
-
-
- 0x83AEE4B
- /home/chris/untitled/untitled
- QTWTF::initializeThreading()
-
-
- 0x8338CBF
- /home/chris/untitled/untitled
- QTJSC::initializeThreading()
-
-
- 0x82897BE
- /home/chris/untitled/untitled
- QScriptEnginePrivate::QScriptEnginePrivate()
-
-
- 0x828AAB2
- /home/chris/untitled/untitled
- QScriptEngine::QScriptEngine()
-
-
- 0x8063261
- /home/chris/untitled/untitled
- QDeclarativeScriptEngine::QDeclarativeScriptEngine(QDeclarativeEnginePrivate*)
-
-
-
-
-
- 0x117
- 1
- Leak_DefinitelyLost
-
- 160 (40 direct, 120 indirect) bytes in 1 blocks are definitely lost in loss record 200 of 270
- 160
- 1
-
-
-
- 0x4026864
- /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so
- malloc
- /build/buildd/valgrind-3.6.1/coregrind/m_replacemalloc
- vg_replace_malloc.c
- 236
-
-
- 0x4565FAB
- /lib/i386-linux-gnu/libc-2.13.so
- nss_parse_service_list
- /build/buildd/eglibc-2.13/nss
- nsswitch.c
- 626
-
-
- 0x4566584
- /lib/i386-linux-gnu/libc-2.13.so
- __nss_database_lookup
- /build/buildd/eglibc-2.13/nss
- nsswitch.c
- 167
-
-
- 0x6BAAE9B
-
-
- 0x6BAC9F4
-
-
- 0x451C7EA
- /lib/i386-linux-gnu/libc-2.13.so
- getpwuid_r@@GLIBC_2.1.2
- /build/buildd/eglibc-2.13/pwd/../nss
- getXXbyYY_r.c
- 256
-
-
- 0x85A34E4
- /home/chris/untitled/untitled
- sm_performSaveYourself(QSessionManagerPrivate*)
-
-
- 0x85A3F56
- /home/chris/untitled/untitled
- sm_saveYourselfCallback(_SmcConn*, void*, int, int, int, int)
-
-
- 0x4047727
- /usr/lib/i386-linux-gnu/libSM.so.6.0.1
- _SmcProcessMessage
-
-
- 0x405D1B5
- /usr/lib/i386-linux-gnu/libICE.so.6.3.0
- IceProcessMessages
-
-
- 0x858FE67
- /home/chris/untitled/untitled
- QSmSocketReceiver::socketActivated(int)
-
-
- 0x8D3A9C1
- /home/chris/untitled/untitled
- QMetaObject::activate(QObject*, QMetaObject const*, int, void**)
-
-
-
-
-
- 0x118
- 1
- Leak_DefinitelyLost
-
- 166 (56 direct, 110 indirect) bytes in 1 blocks are definitely lost in loss record 201 of 270
- 166
- 1
-
-
-
- 0x402641D
- /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so
- operator new(unsigned int)
- /build/buildd/valgrind-3.6.1/coregrind/m_replacemalloc
- vg_replace_malloc.c
- 255
-
-
- 0x8D0FC45
- /home/chris/untitled/untitled
- QLibraryPrivate::findOrCreate(QString const&, QString const&)
-
-
- 0x8D1023F
- /home/chris/untitled/untitled
- QLibrary::setFileNameAndVersion(QString const&, QString const&)
-
-
- 0x8D102A4
- /home/chris/untitled/untitled
- QLibrary::QLibrary(QString const&, QString const&, QObject*)
-
-
- 0x8C8FA56
- /home/chris/untitled/untitled
- qt_initIcu(QString const&)
-
-
- 0x8C4B0CF
- /home/chris/untitled/untitled
- QLocalePrivate::updateSystemPrivate()
-
-
- 0x8C4B3C6
- /home/chris/untitled/untitled
- systemPrivate()
-
-
- 0x8C4B40C
- /home/chris/untitled/untitled
- defaultPrivate()
-
-
- 0x8C4B55F
- /home/chris/untitled/untitled
- QLocale::QLocale()
-
-
- 0x8CCF6F3
- /home/chris/untitled/untitled
- QResourceFileEngine::QResourceFileEngine(QString const&)
-
-
- 0x8CF87DC
- /home/chris/untitled/untitled
- _q_resolveEntryAndCreateLegacyEngine_recursive(QFileSystemEntry&, QFileSystemMetaData&, QAbstractFileEngine*&, bool)
-
-
- 0x8CF8947
- /home/chris/untitled/untitled
- QFileSystemEngine::resolveEntryAndCreateLegacyEngine(QFileSystemEntry&, QFileSystemMetaData&)
-
-
-
-
-
- 0x11d
- 1
- Leak_DefinitelyLost
-
- 216 bytes in 1 blocks are definitely lost in loss record 206 of 270
- 216
- 1
-
-
-
- 0x4026864
- /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so
- malloc
- /build/buildd/valgrind-3.6.1/coregrind/m_replacemalloc
- vg_replace_malloc.c
- 236
-
-
- 0x4193FB2
- /usr/lib/i386-linux-gnu/libX11.so.6.3.0
- _XimOpenIM
-
-
- 0x4193BCF
- /usr/lib/i386-linux-gnu/libX11.so.6.3.0
- _XimRegisterIMInstantiateCallback
-
-
- 0x41789A7
- /usr/lib/i386-linux-gnu/libX11.so.6.3.0
- XRegisterIMInstantiateCallback
-
-
- 0x89FB291
- /home/chris/untitled/untitled
- QXIMInputContext::QXIMInputContext()
-
-
- 0x89F9450
- /home/chris/untitled/untitled
- QInputContextFactory::create(QString const&, QObject*)
-
-
- 0x85361C7
- /home/chris/untitled/untitled
- QApplication::inputContext() const
-
-
- 0x85662A7
- /home/chris/untitled/untitled
- QWidgetPrivate::inputContext() const
-
-
- 0x8571D7C
- /home/chris/untitled/untitled
- QWidget::setAttribute(Qt::WidgetAttribute, bool)
-
-
- 0x8A54527
- /home/chris/untitled/untitled
- QGraphicsViewPrivate::updateInputMethodSensitivity()
-
-
- 0x8A55E1A
- /home/chris/untitled/untitled
- QGraphicsView::setScene(QGraphicsScene*)
-
-
- 0x805273E
- /home/chris/untitled/untitled
- QDeclarativeViewPrivate::init()
-
-
-
-
-
- 0x126
- 1
- Leak_PossiblyLost
-
- 360 bytes in 3 blocks are possibly lost in loss record 215 of 270
- 360
- 3
-
-
-
- 0x402517B
- /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so
- memalign
- /build/buildd/valgrind-3.6.1/coregrind/m_replacemalloc
- vg_replace_malloc.c
- 581
-
-
- 0x40251D8
- /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so
- posix_memalign
- /build/buildd/valgrind-3.6.1/coregrind/m_replacemalloc
- vg_replace_malloc.c
- 709
-
-
- 0x42BE546
- /lib/i386-linux-gnu/libglib-2.0.so.0.2800.6
-
-
- 0x42BFA4C
- /lib/i386-linux-gnu/libglib-2.0.so.0.2800.6
- g_slice_alloc
-
-
- 0x42C06DD
- /lib/i386-linux-gnu/libglib-2.0.so.0.2800.6
- g_slist_prepend
-
-
- 0x42C368E
- /lib/i386-linux-gnu/libglib-2.0.so.0.2800.6
- g_strsplit
-
-
- 0x42D9393
- /lib/i386-linux-gnu/libglib-2.0.so.0.2800.6
- g_get_language_names
-
-
- 0x42D98E6
- /lib/i386-linux-gnu/libglib-2.0.so.0.2800.6
-
-
- 0x42CB919
- /lib/i386-linux-gnu/libglib-2.0.so.0.2800.6
- g_thread_init_glib
-
-
- 0x4254506
- /usr/lib/i386-linux-gnu/libgthread-2.0.so.0.2800.6
- g_thread_init
-
-
- 0x8D4D458
- /home/chris/untitled/untitled
- QEventDispatcherGlibPrivate::QEventDispatcherGlibPrivate(_GMainContext*)
-
-
- 0x85C7CA5
- /home/chris/untitled/untitled
- QGuiEventDispatcherGlibPrivate::QGuiEventDispatcherGlibPrivate()
-
-
-
-
-
- 0x128
- 1
- Leak_DefinitelyLost
-
- 396 (256 direct, 140 indirect) bytes in 2 blocks are definitely lost in loss record 217 of 270
- 396
- 2
-
-
-
- 0x4026864
- /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so
- malloc
- /build/buildd/valgrind-3.6.1/coregrind/m_replacemalloc
- vg_replace_malloc.c
- 236
-
-
- 0x4086087
- /usr/lib/i386-linux-gnu/libfontconfig.so.1.4.4
-
-
- 0x4086F7C
- /usr/lib/i386-linux-gnu/libfontconfig.so.1.4.4
-
-
- 0x4087073
- /usr/lib/i386-linux-gnu/libfontconfig.so.1.4.4
-
-
- 0x408C6EB
- /usr/lib/i386-linux-gnu/libfontconfig.so.1.4.4
-
-
- 0x4607790
- /lib/i386-linux-gnu/libexpat.so.1.5.2
-
-
- 0x4608670
- /lib/i386-linux-gnu/libexpat.so.1.5.2
-
-
- 0x4608F92
- /lib/i386-linux-gnu/libexpat.so.1.5.2
-
-
- 0x460A7D9
- /lib/i386-linux-gnu/libexpat.so.1.5.2
-
-
- 0x460C5F2
- /lib/i386-linux-gnu/libexpat.so.1.5.2
- XML_ParseBuffer
-
-
- 0x408B2B2
- /usr/lib/i386-linux-gnu/libfontconfig.so.1.4.4
- FcConfigParseAndLoad
-
-
- 0x408B60B
- /usr/lib/i386-linux-gnu/libfontconfig.so.1.4.4
- FcConfigParseAndLoad
-
-
-
-
-
- 0x144
- 1
- Leak_PossiblyLost
-
- 1,240 bytes in 5 blocks are possibly lost in loss record 245 of 270
- 1240
- 5
-
-
-
- 0x402517B
- /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so
- memalign
- /build/buildd/valgrind-3.6.1/coregrind/m_replacemalloc
- vg_replace_malloc.c
- 581
-
-
- 0x40251D8
- /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so
- posix_memalign
- /build/buildd/valgrind-3.6.1/coregrind/m_replacemalloc
- vg_replace_malloc.c
- 709
-
-
- 0x42BE546
- /lib/i386-linux-gnu/libglib-2.0.so.0.2800.6
-
-
- 0x42BFA4C
- /lib/i386-linux-gnu/libglib-2.0.so.0.2800.6
- g_slice_alloc
-
-
- 0x42729D8
- /lib/i386-linux-gnu/libglib-2.0.so.0.2800.6
- g_array_sized_new
-
-
- 0x4272AB2
- /lib/i386-linux-gnu/libglib-2.0.so.0.2800.6
- g_array_new
-
-
- 0x42CB7FE
- /lib/i386-linux-gnu/libglib-2.0.so.0.2800.6
- g_static_private_set
-
-
- 0x4282D0E
- /lib/i386-linux-gnu/libglib-2.0.so.0.2800.6
- g_get_filename_charsets
-
-
- 0x4282D9C
- /lib/i386-linux-gnu/libglib-2.0.so.0.2800.6
-
-
- 0x42CB909
- /lib/i386-linux-gnu/libglib-2.0.so.0.2800.6
- g_thread_init_glib
-
-
- 0x4254506
- /usr/lib/i386-linux-gnu/libgthread-2.0.so.0.2800.6
- g_thread_init
-
-
- 0x8D4D458
- /home/chris/untitled/untitled
- QEventDispatcherGlibPrivate::QEventDispatcherGlibPrivate(_GMainContext*)
-
-
-
-
-
-
-
-
-
- 80
- U1004-ARM-_dl_relocate_object
-
-
-
-
-
diff --git a/tests/auto/valgrind/memcheck/memcheck.pro b/tests/auto/valgrind/memcheck/memcheck.pro
index 89ac9529618..ca8134e6264 100644
--- a/tests/auto/valgrind/memcheck/memcheck.pro
+++ b/tests/auto/valgrind/memcheck/memcheck.pro
@@ -1,16 +1,9 @@
TEMPLATE = subdirs
-parsertests.file = parsertests.pro
-
# avoid race conditions when compiling shadowbuild and having more than one compile job
-modeldemo.depends = parsertests
modeldemo.file = modeldemo.pro
+testapps.depends = modeldemo
-testapps.depends = modeldemo parsertests
-
-testrunner.file = testrunner.pro
-testrunner.depends = testapps
-
-SUBDIRS += parsertests modeldemo testapps testrunner
+SUBDIRS += modeldemo testapps
diff --git a/tests/auto/valgrind/memcheck/memcheck.qbs b/tests/auto/valgrind/memcheck/memcheck.qbs
index 531319c8117..c633a605a39 100644
--- a/tests/auto/valgrind/memcheck/memcheck.qbs
+++ b/tests/auto/valgrind/memcheck/memcheck.qbs
@@ -4,8 +4,6 @@ Project {
name: "Memcheck autotests"
references: [
"testapps/testapps.qbs",
- "modeldemo.qbs",
- "parsertests.qbs",
- "testrunner.qbs"
+ "modeldemo.qbs"
]
}
diff --git a/tests/auto/valgrind/memcheck/parsertests.pro b/tests/auto/valgrind/memcheck/parsertests.pro
deleted file mode 100644
index b4f829804df..00000000000
--- a/tests/auto/valgrind/memcheck/parsertests.pro
+++ /dev/null
@@ -1,14 +0,0 @@
-QTC_LIB_DEPENDS += utils ssh
-QTC_PLUGIN_DEPENDS += debugger projectexplorer
-include(../../qttest.pri)
-include($$IDE_SOURCE_TREE/src/plugins/valgrind/valgrind_test.pri)
-
-TARGET = tst_parsertests
-
-QT += network
-
-DEFINES += "PARSERTESTS_DATA_DIR=\\\"$$_PRO_FILE_PWD_/data\\\""
-DEFINES += "VALGRIND_FAKE_PATH=\\\"$$IDE_BUILD_TREE/src/tools/valgrindfake/valgrind-fake\\\""
-
-SOURCES += parsertests.cpp
-HEADERS += parsertests.h
diff --git a/tests/auto/valgrind/memcheck/parsertests.qbs b/tests/auto/valgrind/memcheck/parsertests.qbs
deleted file mode 100644
index 99d6f6474f8..00000000000
--- a/tests/auto/valgrind/memcheck/parsertests.qbs
+++ /dev/null
@@ -1,13 +0,0 @@
-import qbs
-import "../valgrindautotest.qbs" as ValgrindAutotest
-
-ValgrindAutotest {
- name: "Memcheck parser autotest"
- Depends { name: "valgrind-fake" }
- Depends { name: "Qt.network" }
- files: ["parsertests.h", "parsertests.cpp"]
- cpp.defines: base.concat([
- 'PARSERTESTS_DATA_DIR="' + path + '/data"',
- 'VALGRIND_FAKE_PATH="' + project.buildDirectory + '/' + qtc.ide_bin_path + '/valgrind-fake"'
- ])
-}
diff --git a/tests/auto/valgrind/memcheck/testrunner.pro b/tests/auto/valgrind/memcheck/testrunner.pro
deleted file mode 100644
index b0b07ea394d..00000000000
--- a/tests/auto/valgrind/memcheck/testrunner.pro
+++ /dev/null
@@ -1,12 +0,0 @@
-QTC_LIB_DEPENDS += utils ssh
-QTC_PLUGIN_DEPENDS += debugger projectexplorer
-include(../../qttest.pri)
-include($$IDE_SOURCE_TREE/src/plugins/valgrind/valgrind_test.pri)
-
-TARGET = tst_testrunner
-
-DEFINES += "TESTRUNNER_SRC_DIR=\\\"$$_PRO_FILE_PWD_/testapps\\\""
-DEFINES += "TESTRUNNER_APP_DIR=\\\"$(PWD)/testapps\\\""
-
-SOURCES += testrunner.cpp
-HEADERS += testrunner.h
diff --git a/tests/auto/valgrind/memcheck/testrunner.qbs b/tests/auto/valgrind/memcheck/testrunner.qbs
deleted file mode 100644
index 4d0e76cb028..00000000000
--- a/tests/auto/valgrind/memcheck/testrunner.qbs
+++ /dev/null
@@ -1,24 +0,0 @@
-import qbs
-import "../valgrindautotest.qbs" as ValgrindAutotest
-
-ValgrindAutotest {
- name: "Memcheck test runner"
- Depends { name: "Memcheck free1 autotest" }
- Depends { name: "Memcheck free2 autotest" }
- Depends { name: "Memcheck invalidjump autotest" }
- Depends { name: "Memcheck leak1 autotest" }
- Depends { name: "Memcheck leak2 autotest" }
- Depends { name: "Memcheck leak3 autotest" }
- Depends { name: "Memcheck leak4 autotest" }
- Depends { name: "Memcheck overlap autotest" }
- Depends { name: "Memcheck syscall autotest" }
- Depends { name: "Memcheck uninit1 autotest" }
- Depends { name: "Memcheck uninit2 autotest" }
- Depends { name: "Memcheck uninit3 autotest" }
- files: ["testrunner.h", "testrunner.cpp"]
- destinationDirectory: qtc.ide_bin_path
- cpp.defines: base.concat([
- 'TESTRUNNER_SRC_DIR="' + path + '/testapps"',
- 'TESTRUNNER_APP_DIR="' + project.buildDirectory + '/' + destinationDirectory + '/testapps"'
- ])
-}