KUrl ContextBuilder::findModulePath(const QString& name) { QStringList modulePath = name.split("."); KUrl currentPath = currentContext()->url().toUrl(); Q_ASSERT(currentPath.url().length()); kDebug() << " >>>>>>>>> Got URL: " << currentPath.upUrl().url(KUrl::RemoveTrailingSlash); IProject* currentProject = ICore::self()->projectController()->findProjectForUrl(currentPath); if ( ! currentProject ) { kError() << "Cannot import module contexts without a project opened."; return KUrl(); } // easiest case: current directory KUrl filename(currentPath.directory(KUrl::AppendTrailingSlash) + modulePath.first() + ".py"); kDebug() << "filename url: " << filename; if ( currentProject->filesForUrl(filename).length() > 0 ) { ProjectFileItem* result = currentProject->filesForUrl(filename).first(); kDebug() << "Found! " << result->url(); return result->url(); } return KUrl(); }
void QuickOpenTest::testProjectFileFilter() { KTempDir dir; TestProject* project = new TestProject(KUrl(dir.name())); ProjectFolderItem* foo = createChild<ProjectFolderItem>(project->projectItem(), "foo"); createChild<ProjectFileItem>(foo, "bar"); createChild<ProjectFileItem>(foo, "asdf"); ProjectFolderItem* asdf = createChild<ProjectFolderItem>(project->projectItem(), "asdf"); createChild<ProjectFileItem>(asdf, "bar"); QTemporaryFile tmpFile; tmpFile.setFileName(dir.name() + "aaaa"); QVERIFY(tmpFile.open()); ProjectFileItem* aaaa = new ProjectFileItem(project, KUrl(tmpFile.fileName()), project->projectItem()); QCOMPARE(project->fileSet().size(), 4); ProjectFileDataProvider provider; QCOMPARE(provider.itemCount(), 0u); projectController->addProject(project); const QStringList original = QStringList() << "aaaa" << "asdf/bar" << "foo/asdf" << "foo/bar"; // lazy load QCOMPARE(provider.itemCount(), 0u); provider.reset(); QCOMPARE(items(provider), original); QCOMPARE(provider.itemText(provider.items().first()), aaaa->url().pathOrUrl()); QCOMPARE(provider.data(0)->text(), QString("aaaa")); // don't show opened file QVERIFY(core->documentController()->openDocument(KUrl(tmpFile.fileName()))); // lazy load again QCOMPARE(items(provider), original); provider.reset(); QCOMPARE(items(provider), QStringList() << "asdf/bar" << "foo/asdf" << "foo/bar"); // prefer files starting with filter provider.setFilterText("as"); qDebug() << items(provider); QCOMPARE(items(provider), QStringList() << "foo/asdf" << "asdf/bar"); // clear filter provider.reset(); QCOMPARE(items(provider), QStringList() << "asdf/bar" << "foo/asdf" << "foo/bar"); // update on document close, lazy load again core->documentController()->closeAllDocuments(); QCOMPARE(items(provider), QStringList() << "asdf/bar" << "foo/asdf" << "foo/bar"); provider.reset(); QCOMPARE(items(provider), original); ProjectFileItem* blub = createChild<ProjectFileItem>(project->projectItem(), "blub"); // lazy load QCOMPARE(provider.itemCount(), 4u); provider.reset(); QCOMPARE(provider.itemCount(), 5u); // ensure we don't add stuff multiple times QMetaObject::invokeMethod(&provider, "fileAddedToSet", Q_ARG(KDevelop::IProject*, project), Q_ARG(KDevelop::IndexedString, blub->indexedUrl())); QCOMPARE(provider.itemCount(), 5u); provider.reset(); QCOMPARE(provider.itemCount(), 5u); // lazy load in this implementation delete blub; QCOMPARE(provider.itemCount(), 5u); provider.reset(); QCOMPARE(provider.itemCount(), 4u); QCOMPARE(items(provider), original); projectController->closeProject(project); provider.reset(); QVERIFY(!provider.itemCount()); }