From ecd8fd1198fe174da2e6abe05f97422dba94a5ed Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Tue, 8 Aug 2017 15:42:03 +0200 Subject: [PATCH] AutoTest: Ensure reparse even for unlisted Qml files Files containing Quick tests are not necessarily listed inside the project file. If such an unlisted file is updated we have to scan for tests even if it is not part of the project otherwise it would not get updated inside the test tree. Task-number: QTCREATORBUG-18692 Change-Id: I4c4c67d50b4fff13138b0ab3c884f5ea48a7b8bf Reviewed-by: Oliver Wolff --- src/plugins/autotest/testcodeparser.cpp | 7 ++++--- src/plugins/autotest/testcodeparser.h | 3 ++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/plugins/autotest/testcodeparser.cpp b/src/plugins/autotest/testcodeparser.cpp index 907b61be0f5..ce0a655c2c6 100644 --- a/src/plugins/autotest/testcodeparser.cpp +++ b/src/plugins/autotest/testcodeparser.cpp @@ -199,7 +199,7 @@ static bool parsingHasFailed; /****** threaded parsing stuff *******/ -void TestCodeParser::onDocumentUpdated(const QString &fileName) +void TestCodeParser::onDocumentUpdated(const QString &fileName, bool isQmlFile) { if (m_codeModelParsing || m_fullUpdatePostponed) return; @@ -207,7 +207,8 @@ void TestCodeParser::onDocumentUpdated(const QString &fileName) Project *project = SessionManager::startupProject(); if (!project) return; - if (!SessionManager::projectContainsFile(project, Utils::FileName::fromString(fileName))) + // Quick tests: qml files aren't necessarily listed inside project files + if (!isQmlFile && !SessionManager::projectContainsFile(project, Utils::FileName::fromString(fileName))) return; scanForTests(QStringList(fileName)); @@ -222,7 +223,7 @@ void TestCodeParser::onQmlDocumentUpdated(const QmlJS::Document::Ptr &document) { const QString fileName = document->fileName(); if (!fileName.endsWith(".qbs")) - onDocumentUpdated(fileName); + onDocumentUpdated(fileName, true); } void TestCodeParser::onStartupProjectChanged(Project *project) diff --git a/src/plugins/autotest/testcodeparser.h b/src/plugins/autotest/testcodeparser.h index e06563d18a6..4dbacc7ad72 100644 --- a/src/plugins/autotest/testcodeparser.h +++ b/src/plugins/autotest/testcodeparser.h @@ -88,7 +88,8 @@ private: bool postponed(const QStringList &fileList); void scanForTests(const QStringList &fileList = QStringList(), ITestParser *parser = nullptr); - void onDocumentUpdated(const QString &fileName); + // qml files must be handled slightly different + void onDocumentUpdated(const QString &fileName, bool isQmlFile = false); void onTaskStarted(Core::Id type); void onAllTasksFinished(Core::Id type); void onFinished();