diff options
author | Erik Verbruggen <erik.verbruggen@digia.com> | 2013-04-11 12:51:06 +0200 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@digia.com> | 2013-04-16 11:56:18 +0200 |
commit | a0d6df7bd85bf88e4ac3643d97d35e04389f6309 (patch) | |
tree | ea52bcf565d13eacf7646b1b89403e072c3e311e /src/plugins/cpptools/cppmodelmanager_test.cpp | |
parent | c39b582e58922c8329fff710fb57b7e8fa516a49 (diff) | |
download | qt-creator-a0d6df7bd85bf88e4ac3643d97d35e04389f6309.tar.gz |
C++: also refresh files not in the project when project changes.
System headers and other file which are not explicitly mentioned in the
project must be reparsed when the project changes.
Task-number: QTCREATORBUG-9056
Change-Id: I32f1206d241a078a4d9b15fac5813f365a1ba303
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
Diffstat (limited to 'src/plugins/cpptools/cppmodelmanager_test.cpp')
-rw-r--r-- | src/plugins/cpptools/cppmodelmanager_test.cpp | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/plugins/cpptools/cppmodelmanager_test.cpp b/src/plugins/cpptools/cppmodelmanager_test.cpp index 4525b95a35..2a9462674f 100644 --- a/src/plugins/cpptools/cppmodelmanager_test.cpp +++ b/src/plugins/cpptools/cppmodelmanager_test.cpp @@ -138,3 +138,51 @@ void CppToolsPlugin::test_modelmanager_framework_headers() QVERIFY(chars.startsWith("success")); } } + +/// QTCREATORBUG-9056 +void CppToolsPlugin::test_modelmanager_refresh() +{ + ModelManagerTestHelper helper; + CppModelManager *mm = CppModelManager::instance(); + + const QString testCpp(testSource(QLatin1String("test_modelmanager_refresh.cpp"))); + const QString testHeader(testSource(QLatin1String("test_modelmanager_refresh.h"))); + + Project *project = helper.createProject(QLatin1String("test_modelmanager_refresh")); + 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->defines = QByteArray("#define OH_BEHAVE -1\n"); + part->includePaths = QStringList() << testIncludeDir(false); + part->files.append(ProjectFile(testCpp, ProjectFile::CXXSource)); + + mm->updateProjectInfo(pi); + mm->updateSourceFiles(QStringList() << testCpp); + + QStringList refreshedFiles = helper.waitForRefreshedSourceFiles(); + + QCOMPARE(refreshedFiles.size(), 1); + QVERIFY(refreshedFiles.contains(testCpp)); + CPlusPlus::Snapshot snapshot = mm->snapshot(); + QVERIFY(snapshot.contains(testHeader)); + QVERIFY(snapshot.contains(testCpp)); + + part->defines = QByteArray(); + mm->updateProjectInfo(pi); + snapshot = mm->snapshot(); + QVERIFY(!snapshot.contains(testHeader)); + QVERIFY(!snapshot.contains(testCpp)); + + mm->updateSourceFiles(QStringList() << testCpp); + refreshedFiles = helper.waitForRefreshedSourceFiles(); + + QCOMPARE(refreshedFiles.size(), 1); + QVERIFY(refreshedFiles.contains(testCpp)); + snapshot = mm->snapshot(); + QVERIFY(snapshot.contains(testHeader)); + QVERIFY(snapshot.contains(testCpp)); +} |