From ccef9c0294b8b705c3bfac1a12905287442a739b Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Tue, 4 Jul 2017 10:23:15 +0200 Subject: [PATCH] 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 --- .../valgrind/valgrindmemcheckparsertest.cpp | 1 + .../valgrind/valgrindtestrunnertest.cpp | 23 ++++++++++++------- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/plugins/valgrind/valgrindmemcheckparsertest.cpp b/src/plugins/valgrind/valgrindmemcheckparsertest.cpp index a4b3d3cccac..ad4f5a45d05 100644 --- a/src/plugins/valgrind/valgrindmemcheckparsertest.cpp +++ b/src/plugins/valgrind/valgrindmemcheckparsertest.cpp @@ -527,6 +527,7 @@ void ValgrindMemcheckParserTest::testValgrindStartError() RunnerDumper dumper(&runner); runner.start(); runner.waitForFinished(); + QEXPECT_FAIL("", "Error codes of valgrind startup are currently unprocessed", Continue); //FIXME QVERIFY(dumper.m_errorReceived); // just finish without deadlock and we are fine } 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);