From a4e6d36427bfb316bacd09a4fa4d85d037740658 Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 17 Jan 2024 14:10:27 +0100 Subject: [PATCH] ProjectExplorer: Move outputparser test class creation class ... closer to the tested code. Change-Id: Icdc2efcae8bfa6129ed641116ca6e8c917d8c0f3 Reviewed-by: Christian Kandeler --- .../projectexplorer/outputparser_test.cpp | 65 +++++++++++++------ .../projectexplorer/outputparser_test.h | 18 ++--- .../projectexplorer/projectexplorer.cpp | 5 ++ src/plugins/projectexplorer/projectexplorer.h | 3 - 4 files changed, 53 insertions(+), 38 deletions(-) diff --git a/src/plugins/projectexplorer/outputparser_test.cpp b/src/plugins/projectexplorer/outputparser_test.cpp index e584a8c65cf..0b466c74fdf 100644 --- a/src/plugins/projectexplorer/outputparser_test.cpp +++ b/src/plugins/projectexplorer/outputparser_test.cpp @@ -1,17 +1,42 @@ // Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 +#ifdef WITH_TESTS + +#include "ioutputparser.h" #include "outputparser_test.h" -#include "projectexplorer.h" #include "task.h" #include "taskhub.h" -#if defined(WITH_TESTS) - #include namespace ProjectExplorer { +class TestTerminator final : public OutputTaskParser +{ +public: + explicit TestTerminator(OutputParserTester *t) + : m_tester(t) + { + if (!t->lineParsers().isEmpty()) { + for (const Utils::FilePath &searchDir : t->lineParsers().constFirst()->searchDirectories()) + addSearchDir(searchDir); + } + } + +private: + Result handleLine(const QString &line, Utils::OutputFormat type) final + { + if (type == Utils::StdOutFormat) + m_tester->m_receivedStdOutChildLine.append(line + '\n'); + else + m_tester->m_receivedStdErrChildLine.append(line + '\n'); + return Status::Done; + } + + OutputParserTester *m_tester = nullptr; +}; + static inline QByteArray msgFileComparisonFail(const Utils::FilePath &f1, const Utils::FilePath &f2) { const QString result = '"' + f1.toUserOutput() + "\" != \"" + f2.toUserOutput() + '"'; @@ -99,25 +124,16 @@ void OutputParserTester::reset() m_receivedOutput.clear(); } -TestTerminator::TestTerminator(OutputParserTester *t) : - m_tester(t) +class OutputParserTest final : public QObject { - if (!t->lineParsers().isEmpty()) { - for (const Utils::FilePath &searchDir : t->lineParsers().constFirst()->searchDirectories()) - addSearchDir(searchDir); - } -} + Q_OBJECT -Utils::OutputLineParser::Result TestTerminator::handleLine(const QString &line, Utils::OutputFormat type) -{ - if (type == Utils::StdOutFormat) - m_tester->m_receivedStdOutChildLine.append(line + '\n'); - else - m_tester->m_receivedStdErrChildLine.append(line + '\n'); - return Status::Done; -} +private slots: + void testAnsiFilterOutputParser_data(); + void testAnsiFilterOutputParser(); +}; -void ProjectExplorerPlugin::testAnsiFilterOutputParser_data() +void OutputParserTest::testAnsiFilterOutputParser_data() { QTest::addColumn("input"); QTest::addColumn("inputChannel"); @@ -162,7 +178,7 @@ void ProjectExplorerPlugin::testAnsiFilterOutputParser_data() << QString::fromLatin1("test\n") << QString(); } -void ProjectExplorerPlugin::testAnsiFilterOutputParser() +void OutputParserTest::testAnsiFilterOutputParser() { OutputParserTester testbench; QFETCH(QString, input); @@ -175,6 +191,13 @@ void ProjectExplorerPlugin::testAnsiFilterOutputParser() QString()); } +QObject *createOutputParserTest() +{ + return new OutputParserTest; +} + } // namespace ProjectExplorer -#endif +#include "outputparser_test.moc" + +#endif // WITH_TESTS diff --git a/src/plugins/projectexplorer/outputparser_test.h b/src/plugins/projectexplorer/outputparser_test.h index b1e709b6f0a..4b3fc0f1b06 100644 --- a/src/plugins/projectexplorer/outputparser_test.h +++ b/src/plugins/projectexplorer/outputparser_test.h @@ -3,13 +3,14 @@ #pragma once -#if defined(WITH_TESTS) +#ifdef WITH_TESTS #include "projectexplorer_export.h" -#include "ioutputparser.h" #include "task.h" +#include + namespace ProjectExplorer { class TestTerminator; @@ -52,18 +53,7 @@ private: friend class TestTerminator; }; -class TestTerminator : public OutputTaskParser -{ - Q_OBJECT - -public: - explicit TestTerminator(OutputParserTester *t); - -private: - Result handleLine(const QString &line, Utils::OutputFormat type) override; - - OutputParserTester *m_tester = nullptr; -}; +QObject *createOutputParserTest(); } // namespace ProjectExplorer diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 11e0fbb0f9f..db69f4e5b2a 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -53,6 +53,7 @@ #include "kitmanager.h" #include "miniprojecttargetselector.h" #include "namedwidget.h" +#include "outputparser_test.h" #include "parseissuesdialog.h" #include "processstep.h" #include "project.h" @@ -810,6 +811,10 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er { Q_UNUSED(error) +#ifdef WITH_TESTS + addTestCreator(createOutputParserTest); +#endif + setupGccToolchains(); setupMsvcToolchain(); setupClangClToolchain(); diff --git a/src/plugins/projectexplorer/projectexplorer.h b/src/plugins/projectexplorer/projectexplorer.h index c9b55143be6..12432cafafa 100644 --- a/src/plugins/projectexplorer/projectexplorer.h +++ b/src/plugins/projectexplorer/projectexplorer.h @@ -198,9 +198,6 @@ private slots: void testJsonWizardsComboBox(); void testJsonWizardsIconList(); - void testAnsiFilterOutputParser_data(); - void testAnsiFilterOutputParser(); - void testGccOutputParsers_data(); void testGccOutputParsers();