From d11a724047c79c616e8ca4dbfbc09fc57c94d84d Mon Sep 17 00:00:00 2001 From: David Schulz Date: Tue, 16 Jan 2018 08:41:18 +0100 Subject: [PATCH] AutoTest: generalize create default result Add a pure virtual function to TestOutputReader returning a pointer to a default constructed result. Change-Id: Icd8090346f2c5115a7c548da7ba69ea54fe39fc4 Reviewed-by: Christian Stenger --- .../autotest/gtest/gtestoutputreader.cpp | 42 +++++++++---------- .../autotest/gtest/gtestoutputreader.h | 3 +- .../autotest/qtest/qttestoutputreader.cpp | 30 ++++++------- .../autotest/qtest/qttestoutputreader.h | 3 +- src/plugins/autotest/testoutputreader.h | 2 + 5 files changed, 40 insertions(+), 40 deletions(-) diff --git a/src/plugins/autotest/gtest/gtestoutputreader.cpp b/src/plugins/autotest/gtest/gtestoutputreader.cpp index 89f3e1a974f..cd6042f0131 100644 --- a/src/plugins/autotest/gtest/gtestoutputreader.cpp +++ b/src/plugins/autotest/gtest/gtestoutputreader.cpp @@ -92,15 +92,15 @@ void GTestOutputReader::processOutput(const QByteArray &outputLine) } if (testEnds.exactMatch(line)) { - GTestResult *testResult = createDefaultResult(); + TestResultPtr testResult = createDefaultResult(); testResult->setResult(Result::MessageTestCaseEnd); testResult->setDescription(tr("Test execution took %1").arg(testEnds.cap(2))); - reportResult(TestResultPtr(testResult)); + reportResult(testResult); m_currentTestName.clear(); m_currentTestSet.clear(); } else if (newTestStarts.exactMatch(line)) { setCurrentTestName(newTestStarts.cap(1)); - TestResultPtr testResult = TestResultPtr(createDefaultResult()); + TestResultPtr testResult = createDefaultResult(); testResult->setResult(Result::MessageTestCaseStart); if (m_iteration > 1) { testResult->setDescription(tr("Repeating test case %1 (iteration %2)") @@ -117,18 +117,18 @@ void GTestOutputReader::processOutput(const QByteArray &outputLine) reportResult(testResult); m_description.clear(); } else if (testSetSuccess.exactMatch(line)) { - GTestResult *testResult = createDefaultResult(); + TestResultPtr testResult = createDefaultResult(); testResult->setResult(Result::Pass); testResult->setDescription(m_description); - reportResult(TestResultPtr(testResult)); + reportResult(testResult); m_description.clear(); testResult = createDefaultResult(); testResult->setResult(Result::MessageInternal); testResult->setDescription(tr("Execution took %1.").arg(testSetSuccess.cap(2))); - reportResult(TestResultPtr(testResult)); + reportResult(testResult); m_futureInterface.setProgressValue(m_futureInterface.progressValue() + 1); } else if (testSetFail.exactMatch(line)) { - GTestResult *testResult = createDefaultResult(); + TestResultPtr testResult = createDefaultResult(); testResult->setResult(Result::Fail); m_description.chop(1); testResult->setDescription(m_description); @@ -149,27 +149,17 @@ void GTestOutputReader::processOutput(const QByteArray &outputLine) } } } - reportResult(TestResultPtr(testResult)); + reportResult(testResult); m_description.clear(); testResult = createDefaultResult(); testResult->setResult(Result::MessageInternal); testResult->setDescription(tr("Execution took %1.").arg(testSetFail.cap(2))); - reportResult(TestResultPtr(testResult)); + reportResult(testResult); m_futureInterface.setProgressValue(m_futureInterface.progressValue() + 1); } } -void GTestOutputReader::setCurrentTestSet(const QString &testSet) -{ - m_currentTestSet = testSet; -} - -void GTestOutputReader::setCurrentTestName(const QString &testName) -{ - m_currentTestName = testName; -} - -GTestResult *GTestOutputReader::createDefaultResult() const +TestResultPtr GTestOutputReader::createDefaultResult() const { GTestResult *result = new GTestResult(m_executable, m_projectFile, m_currentTestName); result->setTestSetName(m_currentTestSet); @@ -182,7 +172,17 @@ GTestResult *GTestOutputReader::createDefaultResult() const result->setLine(static_cast(testItem->line())); } - return result; + return TestResultPtr(result); +} + +void GTestOutputReader::setCurrentTestSet(const QString &testSet) +{ + m_currentTestSet = testSet; +} + +void GTestOutputReader::setCurrentTestName(const QString &testName) +{ + m_currentTestName = testName; } } // namespace Internal diff --git a/src/plugins/autotest/gtest/gtestoutputreader.h b/src/plugins/autotest/gtest/gtestoutputreader.h index ebe59cd64d4..c51faa08e3e 100644 --- a/src/plugins/autotest/gtest/gtestoutputreader.h +++ b/src/plugins/autotest/gtest/gtestoutputreader.h @@ -43,14 +43,13 @@ public: GTestOutputReader(const QFutureInterface &futureInterface, QProcess *testApplication, const QString &buildDirectory, const QString &projectFile); - protected: void processOutput(const QByteArray &outputLine) override; + TestResultPtr createDefaultResult() const override; private: void setCurrentTestSet(const QString &testSet); void setCurrentTestName(const QString &testName); - GTestResult *createDefaultResult() const; QString m_executable; QString m_projectFile; diff --git a/src/plugins/autotest/qtest/qttestoutputreader.cpp b/src/plugins/autotest/qtest/qttestoutputreader.cpp index b14b2d80fd7..05bea3a3cfc 100644 --- a/src/plugins/autotest/qtest/qttestoutputreader.cpp +++ b/src/plugins/autotest/qtest/qttestoutputreader.cpp @@ -152,6 +152,14 @@ void QtTestOutputReader::processOutput(const QByteArray &outputLine) } } +TestResultPtr QtTestOutputReader::createDefaultResult() const +{ + QtTestResult *result = new QtTestResult(m_executable, m_projectFile, m_testType, m_className); + result->setFunctionName(m_testCase); + result->setDataTag(m_dataTag); + return TestResultPtr(result); +} + void QtTestOutputReader::processXMLOutput(const QByteArray &outputLine) { static QStringList validEndTags = {QStringLiteral("Incident"), @@ -416,17 +424,9 @@ void QtTestOutputReader::processSummaryFinishOutput() m_lineNumber = 0; } -QtTestResult *QtTestOutputReader::createDefaultResult() const -{ - QtTestResult *result = new QtTestResult(m_executable, m_projectFile, m_testType, m_className); - result->setFunctionName(m_testCase); - result->setDataTag(m_dataTag); - return result; -} - void QtTestOutputReader::sendCompleteInformation() { - TestResultPtr testResult = TestResultPtr(createDefaultResult()); + TestResultPtr testResult = createDefaultResult(); testResult->setResult(m_result); if (m_lineNumber) { @@ -453,7 +453,7 @@ void QtTestOutputReader::sendMessageCurrentTest() void QtTestOutputReader::sendStartMessage(bool isFunction) { - TestResultPtr testResult = TestResultPtr(createDefaultResult()); + TestResultPtr testResult = createDefaultResult(); testResult->setResult(Result::MessageTestCaseStart); testResult->setDescription(isFunction ? tr("Executing test function %1").arg(m_testCase) : tr("Executing test case %1").arg(m_className)); @@ -467,7 +467,7 @@ void QtTestOutputReader::sendStartMessage(bool isFunction) void QtTestOutputReader::sendFinishMessage(bool isFunction) { - TestResultPtr testResult = TestResultPtr(createDefaultResult()); + TestResultPtr testResult = createDefaultResult(); testResult->setResult(Result::MessageTestCaseEnd); if (!m_duration.isEmpty()) { testResult->setDescription(isFunction ? tr("Execution took %1 ms.").arg(m_duration) @@ -482,18 +482,18 @@ void QtTestOutputReader::sendFinishMessage(bool isFunction) // TODO factor out tr() strings to avoid duplication (see XML processing of Characters) void QtTestOutputReader::handleAndSendConfigMessage(const QRegExp &config) { - QtTestResult *testResult = createDefaultResult(); + TestResultPtr testResult = createDefaultResult(); testResult->setResult(Result::MessageInternal); testResult->setDescription(tr("Qt version: %1").arg(config.cap(3))); - reportResult(TestResultPtr(testResult)); + reportResult(testResult); testResult = createDefaultResult(); testResult->setResult(Result::MessageInternal); testResult->setDescription(tr("Qt build: %1").arg(config.cap(2))); - reportResult(TestResultPtr(testResult)); + reportResult(testResult); testResult = createDefaultResult(); testResult->setResult(Result::MessageInternal); testResult->setDescription(tr("QTest version: %1").arg(config.cap(1))); - reportResult(TestResultPtr(testResult)); + reportResult(testResult); } } // namespace Internal diff --git a/src/plugins/autotest/qtest/qttestoutputreader.h b/src/plugins/autotest/qtest/qttestoutputreader.h index dd767b43707..1c18c88408f 100644 --- a/src/plugins/autotest/qtest/qttestoutputreader.h +++ b/src/plugins/autotest/qtest/qttestoutputreader.h @@ -50,9 +50,9 @@ public: QtTestOutputReader(const QFutureInterface &futureInterface, QProcess *testApplication, const QString &buildDirectory, const QString &projectFile, OutputMode mode, TestType type); - protected: void processOutput(const QByteArray &outputLine) override; + TestResultPtr createDefaultResult() const override; private: void processXMLOutput(const QByteArray &outputLine); @@ -61,7 +61,6 @@ private: void processLocationOutput(const QString &fileWithLine); void processSummaryFinishOutput(); // helper functions - QtTestResult *createDefaultResult() const; void sendCompleteInformation(); void sendMessageCurrentTest(); void sendStartMessage(bool isFunction); diff --git a/src/plugins/autotest/testoutputreader.h b/src/plugins/autotest/testoutputreader.h index c9fe9cd19a4..7d423feb41f 100644 --- a/src/plugins/autotest/testoutputreader.h +++ b/src/plugins/autotest/testoutputreader.h @@ -49,6 +49,8 @@ public: signals: void newOutputAvailable(const QByteArray &output); protected: + virtual TestResultPtr createDefaultResult() const = 0; + void reportResult(const TestResultPtr &result); QFutureInterface m_futureInterface; QProcess *m_testApplication; // not owned