Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc-Andre Laperle2020-10-10 02:20:29 +0000
committerMarc-André Laperle2020-10-12 16:15:43 +0000
commitbc76b0a7c3bfa9dbd80a2a9b07c6c8577a199a04 (patch)
treecead18974a99f549869b637b17224d3e903aa6aa /core/org.eclipse.cdt.ui.tests
parent3a6fd58665391c4a571b250624005c99d504ccdd (diff)
downloadorg.eclipse.cdt-bc76b0a7c3bfa9dbd80a2a9b07c6c8577a199a04.tar.gz
org.eclipse.cdt-bc76b0a7c3bfa9dbd80a2a9b07c6c8577a199a04.tar.xz
org.eclipse.cdt-bc76b0a7c3bfa9dbd80a2a9b07c6c8577a199a04.zip
Bug 567778 - [Include Browser] Cannot open the Include Browser on file outside source folder
CoreModelUtil.findTranslationUnit only returns CElement in the populated CModel of a project. This shouldn't change as a large majority of client code need to see the model this way and not consider files that are outside source folders. So for a file not under a source folder (and therefore not in the CModel), we can just create a new translation unit instance for it. This is actually how the editor deals with it too. Change-Id: I8898822e94cac8562edcc0a726fdd8680119faca Signed-off-by: Marc-Andre Laperle <malaperle@gmail.com>
Diffstat (limited to 'core/org.eclipse.cdt.ui.tests')
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/includebrowser/BasicIncludeBrowserTest.java38
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/includebrowser/IncludeBrowserBaseTest.java10
2 files changed, 44 insertions, 4 deletions
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/includebrowser/BasicIncludeBrowserTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/includebrowser/BasicIncludeBrowserTest.java
index 231a76af2db..f21ca23eaf7 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/includebrowser/BasicIncludeBrowserTest.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/includebrowser/BasicIncludeBrowserTest.java
@@ -16,7 +16,10 @@ package org.eclipse.cdt.ui.tests.includebrowser;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.dom.IPDOMManager;
+import org.eclipse.cdt.core.model.CoreModel;
+import org.eclipse.cdt.core.model.ICContainer;
import org.eclipse.cdt.core.model.ICProject;
+import org.eclipse.cdt.core.model.IPathEntry;
import org.eclipse.cdt.core.testplugin.CProjectHelper;
import org.eclipse.cdt.core.testplugin.TestScannerProvider;
import org.eclipse.core.resources.IFile;
@@ -104,4 +107,39 @@ public class BasicIncludeBrowserTest extends IncludeBrowserBaseTest {
CProjectHelper.delete(op);
}
}
+
+ // // source
+ // #include "user.h"
+ public void testInclusionOutsideSourceFolder() throws Exception {
+ ICProject cproject = CProjectHelper.createCCProject("__ibTest_outside_src__", "bin",
+ IPDOMManager.ID_FAST_INDEXER);
+ try {
+ ICContainer srcFolder = CProjectHelper.addCContainer(cproject, "src");
+ IPathEntry newEntry = CoreModel.newSourceEntry(srcFolder.getPath());
+
+ IPathEntry[] entries = new IPathEntry[] { CoreModel.newSourceEntry(srcFolder.getPath()) };
+ cproject.setRawPathEntries(entries, null);
+
+ StringBuilder[] contents = getContentsForTest(1);
+ IProject project = cproject.getProject();
+ IFile user = createFile(project, "user.h", "");
+ IFile source = createFile(srcFolder.getResource(), "source.cpp", contents[0].toString());
+ CCorePlugin.getIndexManager().reindex(cproject);
+ waitForIndexer(cproject);
+
+ openIncludeBrowser(source);
+ Tree tree = getIBTree();
+ TreeItem node = checkTreeNode(tree, 0, "source.cpp");
+ checkTreeNode(tree, 0, 0, "user.h");
+ assertEquals(1, node.getItemCount());
+
+ // The tree has to be reversed
+ openIncludeBrowser(user, true);
+ checkTreeNode(tree, 0, "user.h");
+ checkTreeNode(tree, 0, 0, "source.cpp");
+
+ } finally {
+ CProjectHelper.delete(cproject);
+ }
+ }
}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/includebrowser/IncludeBrowserBaseTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/includebrowser/IncludeBrowserBaseTest.java
index 62594194730..e8a7dc243e0 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/includebrowser/IncludeBrowserBaseTest.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/includebrowser/IncludeBrowserBaseTest.java
@@ -13,13 +13,15 @@
*******************************************************************************/
package org.eclipse.cdt.ui.tests.includebrowser;
+import java.util.Optional;
+
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.dom.IPDOMManager;
import org.eclipse.cdt.core.index.IIndex;
-import org.eclipse.cdt.core.model.CoreModelUtil;
import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.cdt.core.testplugin.CProjectHelper;
+import org.eclipse.cdt.internal.ui.includebrowser.IBConversions;
import org.eclipse.cdt.internal.ui.includebrowser.IBViewPart;
import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.cdt.ui.tests.BaseUITestCase;
@@ -77,13 +79,13 @@ public abstract class IncludeBrowserBaseTest extends BaseUITestCase {
}
private IBViewPart doOpenIncludeBrowser(IFile file) throws PartInitException {
- ITranslationUnit tu = CoreModelUtil.findTranslationUnit(file);
- if (tu == null) {
+ Optional<ITranslationUnit> tu = IBConversions.fileToTU(file);
+ if (tu.isEmpty()) {
fail(file.getFullPath().toString() + " is no translation unit!");
}
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
IBViewPart result = (IBViewPart) page.showView(CUIPlugin.ID_INCLUDE_BROWSER);
- result.setInput(tu);
+ result.setInput(tu.get());
return result;
}

Back to the top