From ccef9c0294b8b705c3bfac1a12905287442a739b Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Tue, 4 Jul 2017 10:23:15 +0200 Subject: Valgrind: Fix plugin unit tests The original tests were written for an older version of valgrind. Additionally mark startup checks as expected to fail as the error codes are not processed at the moment. Change-Id: Iaad272b5977da3a3395064270d2c9442a3e2f313 Reviewed-by: hjk --- src/plugins/valgrind/valgrindtestrunnertest.cpp | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) (limited to 'src/plugins/valgrind/valgrindtestrunnertest.cpp') diff --git a/src/plugins/valgrind/valgrindtestrunnertest.cpp b/src/plugins/valgrind/valgrindtestrunnertest.cpp index d7360d60e83..02541bcdfbf 100644 --- a/src/plugins/valgrind/valgrindtestrunnertest.cpp +++ b/src/plugins/valgrind/valgrindtestrunnertest.cpp @@ -37,6 +37,8 @@ #include #include +#include + #include #include #include @@ -79,6 +81,7 @@ QString ValgrindTestRunnerTest::runTestBinary(const QString &binary, const QStri const QString &binPath = binPathFileInfo.canonicalFilePath(); debuggee.executable = binPath; debuggee.environment = Utils::Environment::systemEnvironment(); + m_runner->setLocalServerAddress(QHostAddress::LocalHost); m_runner->setValgrindArguments(QStringList() << "--num-callers=50" << "--track-origins=yes" << vArgs); m_runner->setDebuggee(debuggee); m_runner->setDevice(ProjectExplorer::DeviceManager::instance()->defaultDevice( @@ -270,11 +273,14 @@ void ValgrindTestRunnerTest::testLeak4() QVERIFY(m_logMessages.isEmpty()); - QCOMPARE(m_errors.count(), 3); + QVERIFY(m_errors.count() >= 3); //BEGIN first error { - const Error error = m_errors.first(); - QCOMPARE(error.kind(), int(Leak_IndirectlyLost)); + // depending on the valgrind version the errors can be different - try to find the correct one + const Error error = Utils::findOrDefault(m_errors, [](const Error &err) { + return err.kind() == Leak_IndirectlyLost; + }); + QCOMPARE(error.leakedBlocks(), qint64(1)); QCOMPARE(error.leakedBytes(), quint64(8)); QCOMPARE(error.stacks().count(), 1); @@ -309,8 +315,10 @@ void ValgrindTestRunnerTest::testLeak4() } //BEGIN second error { - const Error error = m_errors.at(1); - QCOMPARE(error.kind(), int(Leak_DefinitelyLost)); + const Error error = Utils::findOrDefault(m_errors, [](const Error &err) { + return err.kind() == Leak_DefinitelyLost; + }); + QCOMPARE(error.leakedBlocks(), qint64(1)); if (on64bit()) QCOMPARE(error.leakedBytes(), quint64(16)); @@ -337,7 +345,6 @@ void ValgrindTestRunnerTest::testLeak4() QCOMPARE(QDir::cleanPath(frame.directory()), srcDir); } } - // TODO add third error check } void ValgrindTestRunnerTest::testUninit1() @@ -595,7 +602,7 @@ void ValgrindTestRunnerTest::testFree1() QCOMPARE(m_errors.count(), 1); const Error error = m_errors.first(); QCOMPARE(error.kind(), int(InvalidFree)); - QCOMPARE(error.stacks().count(), 2); + QVERIFY(error.stacks().count() >= 2); //BEGIN first stack { const Stack stack = error.stacks().first(); @@ -618,7 +625,7 @@ void ValgrindTestRunnerTest::testFree1() } //BEGIN second stack { - const Stack stack = error.stacks().last(); + const Stack stack = error.stacks().at(1); QCOMPARE(stack.line(), qint64(-1)); QCOMPARE(stack.frames().count(), 2); -- cgit v1.2.3