diff options
author | Nikolai Kosjar <nikolai.kosjar@qt.io> | 2019-09-25 15:39:32 +0200 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@qt.io> | 2019-10-01 13:51:42 +0000 |
commit | d2648db9140a6959b9eb269c5381ac8040c3f246 (patch) | |
tree | 6cf6b6c18b18ad8a383b9789412efc1c4021ff8a /src/plugins/clangtools | |
parent | 44ddc028b52ba1271f146d288f220cf213c19896 (diff) | |
download | qt-creator-d2648db9140a6959b9eb269c5381ac8040c3f246.tar.gz |
ClangTools: Clean up plugin tests
We can provide the run settings explicitly instead of writing to the
settings.
Change-Id: Ibb9ef0280c14315ff7ba72be75dfd04c50d84484
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
Diffstat (limited to 'src/plugins/clangtools')
-rw-r--r-- | src/plugins/clangtools/clangtool.cpp | 17 | ||||
-rw-r--r-- | src/plugins/clangtools/clangtool.h | 10 | ||||
-rw-r--r-- | src/plugins/clangtools/clangtoolspreconfiguredsessiontests.cpp | 4 | ||||
-rw-r--r-- | src/plugins/clangtools/clangtoolsunittests.cpp | 46 |
4 files changed, 38 insertions, 39 deletions
diff --git a/src/plugins/clangtools/clangtool.cpp b/src/plugins/clangtools/clangtool.cpp index da9e022b03..3e4b3268d7 100644 --- a/src/plugins/clangtools/clangtool.cpp +++ b/src/plugins/clangtools/clangtool.cpp @@ -239,8 +239,9 @@ static FileInfos sortedFileInfos(const QVector<CppTools::ProjectPart::Ptr> &proj return fileInfos; } -static RunSettings runSettings(Project *project) +static RunSettings runSettings() { + Project *project = SessionManager::startupProject(); auto *projectSettings = ClangToolsProjectSettingsManager::getSettings(project); if (projectSettings->useGlobalSettings()) return ClangToolsSettings::instance()->runSettings(); @@ -399,7 +400,7 @@ ClangTool::ClangTool() menu->addAction(ActionManager::registerAction(action, "ClangTidyClazy.Action"), Debugger::Constants::G_ANALYZER_TOOLS); QObject::connect(action, &QAction::triggered, this, [this]() { - startTool(ClangTool::FileSelection::AskUser); + startTool(FileSelection::AskUser); }); QObject::connect(m_startAction, &QAction::triggered, action, &QAction::triggered); QObject::connect(m_startAction, &QAction::changed, action, [action, this] { @@ -407,7 +408,7 @@ ClangTool::ClangTool() }); QObject::connect(m_startOnCurrentFileAction, &QAction::triggered, this, [this] { - startTool(ClangTool::FileSelection::CurrentFile); + startTool(FileSelection::CurrentFile); }); m_perspective.addToolBarAction(m_startAction); @@ -439,6 +440,11 @@ void ClangTool::selectPerspective() void ClangTool::startTool(ClangTool::FileSelection fileSelection) { + startTool(runSettings(), fileSelection); +} + +void ClangTool::startTool(const RunSettings &runSettings, ClangTool::FileSelection fileSelection) +{ Project *project = SessionManager::startupProject(); QTC_ASSERT(project, return); QTC_ASSERT(project->activeTarget(), return); @@ -453,10 +459,7 @@ void ClangTool::startTool(ClangTool::FileSelection fileSelection) return; const bool preventBuild = fileSelection == FileSelection::CurrentFile; - auto clangTool = new ClangToolRunWorker(runControl, - runSettings(project), - fileInfos, - preventBuild); + auto clangTool = new ClangToolRunWorker(runControl, runSettings, fileInfos, preventBuild); m_stopAction->disconnect(); connect(m_stopAction, &QAction::triggered, runControl, [runControl] { diff --git a/src/plugins/clangtools/clangtool.h b/src/plugins/clangtools/clangtool.h index b61ed1ac44..8fb6140008 100644 --- a/src/plugins/clangtools/clangtool.h +++ b/src/plugins/clangtools/clangtool.h @@ -52,6 +52,7 @@ namespace Internal { class ClangToolsDiagnosticModel; class Diagnostic; class DiagnosticFilterModel; +class RunSettings; const char ClangTidyClazyPerspectiveId[] = "ClangTidyClazy.Perspective"; @@ -73,12 +74,13 @@ public: AskUser, }; void startTool(FileSelection fileSelection); + void startTool(const RunSettings &runSettings, FileSelection fileSelection); Diagnostics read(OutputFileFormat outputFileFormat, - const QString &logFilePath, - const QString &mainFilePath, - const QSet<Utils::FilePath> &projectFiles, - QString *errorMessage) const; + const QString &logFilePath, + const QString &mainFilePath, + const QSet<Utils::FilePath> &projectFiles, + QString *errorMessage) const; FileInfos collectFileInfos(ProjectExplorer::Project *project, FileSelection fileSelection) const; diff --git a/src/plugins/clangtools/clangtoolspreconfiguredsessiontests.cpp b/src/plugins/clangtools/clangtoolspreconfiguredsessiontests.cpp index 2ed19354f2..b76f5eefee 100644 --- a/src/plugins/clangtools/clangtoolspreconfiguredsessiontests.cpp +++ b/src/plugins/clangtools/clangtoolspreconfiguredsessiontests.cpp @@ -27,6 +27,7 @@ #include "clangtool.h" #include "clangtoolsdiagnostic.h" +#include "clangtoolssettings.h" #include "clangtoolsutils.h" #include <coreplugin/icore.h> @@ -121,7 +122,8 @@ void PreconfiguredSessionTests::testPreconfiguredSession() QVERIFY(switchToProjectAndTarget(project, target)); - ClangTool::instance()->startTool(ClangTool::FileSelection::AllFiles); + ClangTool::instance()->startTool(ClangToolsSettings::instance()->runSettings(), + ClangTool::FileSelection::AllFiles); QSignalSpy waitUntilAnalyzerFinished(ClangTool::instance(), SIGNAL(finished(bool))); QVERIFY(waitUntilAnalyzerFinished.wait(30000)); const QList<QVariant> arguments = waitUntilAnalyzerFinished.takeFirst(); diff --git a/src/plugins/clangtools/clangtoolsunittests.cpp b/src/plugins/clangtools/clangtoolsunittests.cpp index 79b7bfcc94..d0a48f4bc9 100644 --- a/src/plugins/clangtools/clangtoolsunittests.cpp +++ b/src/plugins/clangtools/clangtoolsunittests.cpp @@ -48,6 +48,7 @@ #include <QTimer> #include <QtTest> +using namespace CppTools; using namespace ProjectExplorer; using namespace Utils; @@ -69,7 +70,7 @@ void ClangToolsUnitTests::initTestCase() if (Core::ICore::clangExecutable(CLANG_BINDIR).isEmpty()) QSKIP("No clang suitable for analyzing found"); - m_tmpDir = new CppTools::Tests::TemporaryCopiedDir(QLatin1String(":/unit-tests")); + m_tmpDir = new Tests::TemporaryCopiedDir(QLatin1String(":/unit-tests")); QVERIFY(m_tmpDir->isValid()); } @@ -78,15 +79,15 @@ void ClangToolsUnitTests::cleanupTestCase() delete m_tmpDir; } -static CppTools::ClangDiagnosticConfig configFor(const QString &tidyChecks, +static ClangDiagnosticConfig configFor(const QString &tidyChecks, const QString &clazyChecks) { - CppTools::ClangDiagnosticConfig config; + ClangDiagnosticConfig config; config.setId("Test.MyTestConfig"); config.setDisplayName("Test"); config.setIsReadOnly(true); config.setClangOptions(QStringList{QStringLiteral("-Wno-everything")}); - config.setClangTidyMode(CppTools::ClangDiagnosticConfig::TidyMode::ChecksPrefixList); + config.setClangTidyMode(ClangDiagnosticConfig::TidyMode::ChecksPrefixList); const QString theTidyChecks = tidyChecks.isEmpty() ? tidyChecks : "-*," + tidyChecks; config.setClangTidyChecks(theTidyChecks); config.setClazyChecks(clazyChecks); @@ -97,46 +98,37 @@ void ClangToolsUnitTests::testProject() { QFETCH(QString, projectFilePath); QFETCH(int, expectedDiagCount); - QFETCH(CppTools::ClangDiagnosticConfig, diagnosticConfig); + QFETCH(ClangDiagnosticConfig, diagnosticConfig); if (projectFilePath.contains("mingw")) { - const ToolChain * const toolchain - = ToolChainKitAspect::toolChain(KitManager::kits().constFirst(), - Constants::CXX_LANGUAGE_ID); + const ToolChain *const toolchain + = ToolChainKitAspect::toolChain(KitManager::kits().constFirst(), + Constants::CXX_LANGUAGE_ID); if (toolchain->typeId() != ProjectExplorer::Constants::MINGW_TOOLCHAIN_TYPEID) QSKIP("This test is mingw specific, does not run for other toolchains"); } - CppTools::Tests::ProjectOpenerAndCloser projectManager; - const CppTools::ProjectInfo projectInfo = projectManager.open(projectFilePath, true); + Tests::ProjectOpenerAndCloser projectManager; + const ProjectInfo projectInfo = projectManager.open(projectFilePath, true); QVERIFY(projectInfo.isValid()); ClangTool *tool = ClangTool::instance(); // Change configs - QSharedPointer<CppTools::CppCodeModelSettings> cppToolsSettings = CppTools::codeModelSettings(); + QSharedPointer<CppCodeModelSettings> cppToolsSettings = codeModelSettings(); ClangToolsSettings *clangToolsSettings = ClangToolsSettings::instance(); - const CppTools::ClangDiagnosticConfigs originalConfigs = cppToolsSettings - ->clangCustomDiagnosticConfigs(); - const Core::Id originalId = clangToolsSettings->runSettings().diagnosticConfigId(); + const ClangDiagnosticConfigs originalConfigs = cppToolsSettings->clangCustomDiagnosticConfigs(); - CppTools::ClangDiagnosticConfigs modifiedConfigs = originalConfigs; + ClangDiagnosticConfigs modifiedConfigs = originalConfigs; modifiedConfigs.push_back(diagnosticConfig); - ExecuteOnDestruction executeOnDestruction([=]() { - // Restore configs + ExecuteOnDestruction restoreCustomConfigs([=]() { cppToolsSettings->setClangCustomDiagnosticConfigs(originalConfigs); - RunSettings runSettings = clangToolsSettings->runSettings(); - runSettings.setDiagnosticConfigId(originalId); - clangToolsSettings->setRunSettings(runSettings); - clangToolsSettings->writeSettings(); }); cppToolsSettings->setClangCustomDiagnosticConfigs(modifiedConfigs); RunSettings runSettings = clangToolsSettings->runSettings(); runSettings.setDiagnosticConfigId(diagnosticConfig.id()); - clangToolsSettings->setRunSettings(runSettings); - clangToolsSettings->writeSettings(); - tool->startTool(ClangTool::FileSelection::AllFiles); + tool->startTool(runSettings, ClangTool::FileSelection::AllFiles); QSignalSpy waiter(tool, SIGNAL(finished(bool))); QVERIFY(waiter.wait(30000)); @@ -149,10 +141,10 @@ void ClangToolsUnitTests::testProject_data() { QTest::addColumn<QString>("projectFilePath"); QTest::addColumn<int>("expectedDiagCount"); - QTest::addColumn<CppTools::ClangDiagnosticConfig>("diagnosticConfig"); + QTest::addColumn<ClangDiagnosticConfig>("diagnosticConfig"); // Test simple C++ project. - CppTools::ClangDiagnosticConfig config = configFor("modernize-use-nullptr", QString()); + ClangDiagnosticConfig config = configFor("modernize-use-nullptr", QString()); addTestRow("simple/simple.qbs", 1, config); addTestRow("simple/simple.pro", 1, config); @@ -186,7 +178,7 @@ void ClangToolsUnitTests::testProject_data() void ClangToolsUnitTests::addTestRow(const QByteArray &relativeFilePath, int expectedDiagCount, - const CppTools::ClangDiagnosticConfig &diagnosticConfig) + const ClangDiagnosticConfig &diagnosticConfig) { const QString absoluteFilePath = m_tmpDir->absolutePath(relativeFilePath); const QString fileName = QFileInfo(absoluteFilePath).fileName(); |