From 482fd5f0fde81d76652eade9dc19ae3e54909fe0 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Wed, 7 Dec 2016 08:24:33 +0100 Subject: [PATCH] Valgrind: Use external test data if available External data files will be tried to search inside a path that is specified by the environment variable QTC_TEST_EXTRADATALOCATION and need to be present inside a subdirectory called 'valgrind'. Change-Id: I8f192b2862e4c269ed17b7a81000eb3dabfc2efb Reviewed-by: hjk --- .../valgrind/valgrindmemcheckparsertest.cpp | 46 +++++++++++++------ 1 file changed, 33 insertions(+), 13 deletions(-) diff --git a/src/plugins/valgrind/valgrindmemcheckparsertest.cpp b/src/plugins/valgrind/valgrindmemcheckparsertest.cpp index ad2c3c8d2b3..3bb2ba4ebfe 100644 --- a/src/plugins/valgrind/valgrindmemcheckparsertest.cpp +++ b/src/plugins/valgrind/valgrindmemcheckparsertest.cpp @@ -111,6 +111,18 @@ static QString dataFile(const QString &file) return QString(PARSERTESTS_DATA_DIR) + '/' + file; } +static QString extraDataFile(const QString &file) +{ + static QString prefix = QString::fromLocal8Bit(qgetenv("QTC_TEST_EXTRADATALOCATION")); + if (prefix.isEmpty()) + return QString(); + + QFileInfo fi(QString(prefix + "/valgrind"), file); + if (fi.exists()) + return fi.canonicalFilePath(); + return QString(); +} + void ValgrindMemcheckParserTest::initTestCase() { m_server = new QTcpServer(this); @@ -131,7 +143,7 @@ void ValgrindMemcheckParserTest::initTest(const QString &testfile, const QString m_process->start( fakeValgrind, QStringList({QString("--xml-socket=127.0.0.1:%1").arg(m_server->serverPort()), "-i", - dataFile(testfile)}) << otherArgs); + testfile}) << otherArgs); QVERIFY(m_process->waitForStarted(5000)); QCOMPARE(m_process->state(), QProcess::Running); @@ -155,9 +167,11 @@ void ValgrindMemcheckParserTest::cleanup() void ValgrindMemcheckParserTest::testHelgrindSample1() { - QSKIP("testfile does not exist"); + const QString file = extraDataFile("helgrind-output-sample1.xml"); + if (file.isEmpty()) + QSKIP("test file does not exist"); - initTest("helgrind-output-sample1.xml"); + initTest(file); QList expectedErrors; { @@ -251,7 +265,7 @@ void ValgrindMemcheckParserTest::testHelgrindSample1() void ValgrindMemcheckParserTest::testMemcheckSample1() { - initTest("memcheck-output-sample1.xml"); + initTest(dataFile("memcheck-output-sample1.xml")); QList expectedErrors; { @@ -327,9 +341,11 @@ void ValgrindMemcheckParserTest::testMemcheckSample1() void ValgrindMemcheckParserTest::testMemcheckSample2() { - QSKIP("testfile does not exist"); + const QString file = extraDataFile("memcheck-output-sample2.xml"); + if (file.isEmpty()) + QSKIP("test file does not exist"); - initTest("memcheck-output-sample2.xml"); + initTest(file); Parser parser; Recorder rec(&parser); @@ -353,9 +369,11 @@ void ValgrindMemcheckParserTest::testMemcheckSample2() void ValgrindMemcheckParserTest::testMemcheckSample3() { - QSKIP("testfile does not exist"); + const QString file = extraDataFile("memcheck-output-sample3.xml"); + if (file.isEmpty()) + QSKIP("test file does not exist"); - initTest("memcheck-output-sample3.xml"); + initTest(file); Parser parser; Recorder rec(&parser); @@ -405,10 +423,12 @@ void ValgrindMemcheckParserTest::testMemcheckSample3() void ValgrindMemcheckParserTest::testMemcheckCharm() { - QSKIP("testfile does not exist"); - // a somewhat larger file, to make sure buffering and partial I/O works ok - initTest("memcheck-output-untitled.xml"); + const QString file = extraDataFile("memcheck-output-charm.xml"); + if (file.isEmpty()) + QSKIP("test file does not exist"); + + initTest(file); Parser parser; Recorder rec(&parser); @@ -426,7 +446,7 @@ void ValgrindMemcheckParserTest::testMemcheckCharm() void ValgrindMemcheckParserTest::testValgrindCrash() { - initTest("memcheck-output-sample1.xml", QStringList("--crash")); + initTest(dataFile("memcheck-output-sample1.xml"), QStringList("--crash")); Parser parser; parser.parse(m_socket); @@ -441,7 +461,7 @@ void ValgrindMemcheckParserTest::testValgrindCrash() void ValgrindMemcheckParserTest::testValgrindGarbage() { - initTest("memcheck-output-sample1.xml", QStringList("--garbage")); + initTest(dataFile("memcheck-output-sample1.xml"), QStringList("--garbage")); Parser parser; parser.parse(m_socket);