diff options
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/cpptools/cppmodelmanager_test.cpp | 66 | ||||
-rw-r--r-- | src/plugins/cpptools/cpppreprocessor.cpp | 1 | ||||
-rw-r--r-- | src/plugins/cpptools/cpptoolsplugin.h | 3 |
3 files changed, 67 insertions, 3 deletions
diff --git a/src/plugins/cpptools/cppmodelmanager_test.cpp b/src/plugins/cpptools/cppmodelmanager_test.cpp index 7069262dd1..3805f157d2 100644 --- a/src/plugins/cpptools/cppmodelmanager_test.cpp +++ b/src/plugins/cpptools/cppmodelmanager_test.cpp @@ -74,6 +74,12 @@ public: return testDataDir(QLatin1String("sources")) + fileName; } + /// File from the test data directory (top leve) + QString file(const QString &fileName) const + { + return testDataDir(QString()) + fileName; + } + private: QString testDataDir(const QString& subdir, bool cleaned = true) const { @@ -166,7 +172,7 @@ void CppToolsPlugin::test_modelmanager_framework_headers() } /// QTCREATORBUG-9056 -void CppToolsPlugin::test_modelmanager_refresh() +void CppToolsPlugin::test_modelmanager_refresh_1() { ModelManagerTestHelper helper; CppModelManager *mm = CppModelManager::instance(); @@ -178,7 +184,7 @@ void CppToolsPlugin::test_modelmanager_refresh() const QString testHeader(testDataDir.fileFromSourcesDir( QLatin1String("test_modelmanager_refresh.h"))); - Project *project = helper.createProject(QLatin1String("test_modelmanager_refresh")); + Project *project = helper.createProject(QLatin1String("test_modelmanager_refresh_1")); ProjectInfo pi = mm->projectInfo(project); QCOMPARE(pi.project().data(), project); @@ -216,3 +222,59 @@ void CppToolsPlugin::test_modelmanager_refresh() QVERIFY(snapshot.contains(testHeader)); QVERIFY(snapshot.contains(testCpp)); } + +/// QTCREATORBUG-9205 +void CppToolsPlugin::test_modelmanager_refresh_2() +{ + ModelManagerTestHelper helper; + CppModelManager *mm = CppModelManager::instance(); + + const TestDataDirectory testDataDir(QLatin1String("testdata_refresh")); + + const QString testHeader1(testDataDir.file(QLatin1String("defines.h"))); + const QString testHeader2(testDataDir.file(QLatin1String("header.h"))); + const QString testCpp(testDataDir.file(QLatin1String("source.cpp"))); + + Project *project = helper.createProject(QLatin1String("test_modelmanager_refresh_2")); + ProjectInfo pi = mm->projectInfo(project); + QCOMPARE(pi.project().data(), project); + + ProjectPart::Ptr part(new ProjectPart); + pi.appendProjectPart(part); + part->cxxVersion = ProjectPart::CXX98; + part->qtVersion = ProjectPart::Qt5; + part->files.append(ProjectFile(testHeader1, ProjectFile::CXXHeader)); + part->files.append(ProjectFile(testHeader2, ProjectFile::CXXHeader)); + part->files.append(ProjectFile(testCpp, ProjectFile::CXXSource)); + + mm->updateProjectInfo(pi); + + CPlusPlus::Snapshot snapshot; + QStringList refreshedFiles; + CPlusPlus::Document::Ptr document; + + for (int i = 0; i < 2; ++i) { + mm->updateSourceFiles(QStringList() << testHeader1 << testHeader2 << testCpp); + refreshedFiles = helper.waitForRefreshedSourceFiles(); + + QCOMPARE(refreshedFiles.size(), 3); + QVERIFY(refreshedFiles.contains(testHeader1)); + QVERIFY(refreshedFiles.contains(testHeader2)); + QVERIFY(refreshedFiles.contains(testCpp)); + + snapshot = mm->snapshot(); + QVERIFY(snapshot.contains(testHeader1)); + QVERIFY(snapshot.contains(testHeader2)); + QVERIFY(snapshot.contains(testCpp)); + + // No diagnostic messages expected + document = snapshot.document(testHeader1); + QVERIFY(document->diagnosticMessages().isEmpty()); + + document = snapshot.document(testHeader2); + QVERIFY(document->diagnosticMessages().isEmpty()); + + document = snapshot.document(testCpp); + QVERIFY(document->diagnosticMessages().isEmpty()); + } +} diff --git a/src/plugins/cpptools/cpppreprocessor.cpp b/src/plugins/cpptools/cpppreprocessor.cpp index 5ab1c9a04e..5c5d1bd803 100644 --- a/src/plugins/cpptools/cpppreprocessor.cpp +++ b/src/plugins/cpptools/cpppreprocessor.cpp @@ -138,6 +138,7 @@ void CppPreprocessor::resetEnvironment() { m_env.reset(); m_processed.clear(); + m_included.clear(); } void CppPreprocessor::getFileContents(const QString &absoluteFilePath, diff --git a/src/plugins/cpptools/cpptoolsplugin.h b/src/plugins/cpptools/cpptoolsplugin.h index dd925121c1..d3eb847e30 100644 --- a/src/plugins/cpptools/cpptoolsplugin.h +++ b/src/plugins/cpptools/cpptoolsplugin.h @@ -141,7 +141,8 @@ private slots: void test_modelmanager_paths(); void test_modelmanager_framework_headers(); - void test_modelmanager_refresh(); + void test_modelmanager_refresh_1(); + void test_modelmanager_refresh_2(); private: void test_completion(); |