diff --git a/build/org.eclipse.cdt.managedbuilder.ui.tests/META-INF/MANIFEST.MF b/build/org.eclipse.cdt.managedbuilder.ui.tests/META-INF/MANIFEST.MF index 07e2a24ad8b..c4114bca42f 100644 --- a/build/org.eclipse.cdt.managedbuilder.ui.tests/META-INF/MANIFEST.MF +++ b/build/org.eclipse.cdt.managedbuilder.ui.tests/META-INF/MANIFEST.MF @@ -13,7 +13,8 @@ Require-Bundle: org.eclipse.ui, org.junit, org.eclipse.cdt.managedbuilder.core, org.eclipse.cdt.core, - org.eclipse.core.resources + org.eclipse.core.resources, + org.eclipse.cdt.managedbuilder.core.tests Bundle-ActivationPolicy: lazy Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Export-Package: org.eclipse.cdt.managedbuilder.ui.tests, diff --git a/build/org.eclipse.cdt.managedbuilder.ui.tests/plugin.xml b/build/org.eclipse.cdt.managedbuilder.ui.tests/plugin.xml index cb7d4257433..d344a2f2724 100644 --- a/build/org.eclipse.cdt.managedbuilder.ui.tests/plugin.xml +++ b/build/org.eclipse.cdt.managedbuilder.ui.tests/plugin.xml @@ -46,6 +46,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/org.eclipse.cdt.managedbuilder.ui.tests/src/org/eclipse/cdt/managedbuilder/ui/tests/properties/HideEmptyOptionCategoryApplicabilityCalculator.java b/build/org.eclipse.cdt.managedbuilder.ui.tests/src/org/eclipse/cdt/managedbuilder/ui/tests/properties/HideEmptyOptionCategoryApplicabilityCalculator.java new file mode 100644 index 00000000000..f24d9bd4e20 --- /dev/null +++ b/build/org.eclipse.cdt.managedbuilder.ui.tests/src/org/eclipse/cdt/managedbuilder/ui/tests/properties/HideEmptyOptionCategoryApplicabilityCalculator.java @@ -0,0 +1,34 @@ +/******************************************************************************* + * Copyright (c) 2018 STMicroelectronics and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * STMicroelectronics + *******************************************************************************/ +package org.eclipse.cdt.managedbuilder.ui.tests.properties; + +import java.util.Arrays; + +import org.eclipse.cdt.managedbuilder.core.IBuildObject; +import org.eclipse.cdt.managedbuilder.core.IHoldsOptions; +import org.eclipse.cdt.managedbuilder.core.IOptionCategory; +import org.eclipse.cdt.managedbuilder.core.IOptionCategoryApplicability; + +public class HideEmptyOptionCategoryApplicabilityCalculator implements IOptionCategoryApplicability { + + public HideEmptyOptionCategoryApplicabilityCalculator() { + } + + @Override + public boolean isOptionCategoryVisible(IBuildObject configuration, IHoldsOptions optHolder, + IOptionCategory category) { + // Check that the category contains at least one option + return Arrays.asList(optHolder.getOptions()) + .stream() + .map((opt) -> opt.getCategory()) + .anyMatch((cat) -> cat != null && cat.equals(category)); + } +} diff --git a/build/org.eclipse.cdt.managedbuilder.ui.tests/src/org/eclipse/cdt/managedbuilder/ui/tests/properties/ToolListContentProviderTests.java b/build/org.eclipse.cdt.managedbuilder.ui.tests/src/org/eclipse/cdt/managedbuilder/ui/tests/properties/ToolListContentProviderTests.java new file mode 100644 index 00000000000..81bca2aba95 --- /dev/null +++ b/build/org.eclipse.cdt.managedbuilder.ui.tests/src/org/eclipse/cdt/managedbuilder/ui/tests/properties/ToolListContentProviderTests.java @@ -0,0 +1,92 @@ +/******************************************************************************* + * Copyright (c) 2018 STMicroelectronics and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * STMicroelectronics + *******************************************************************************/ +package org.eclipse.cdt.managedbuilder.ui.tests.properties; + +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.cdt.managedbuilder.core.IConfiguration; +import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo; +import org.eclipse.cdt.managedbuilder.core.IOptionCategory; +import org.eclipse.cdt.managedbuilder.core.ITool; +import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager; +import org.eclipse.cdt.managedbuilder.testplugin.ManagedBuildTestHelper; +import org.eclipse.cdt.managedbuilder.ui.properties.ToolListContentProvider; +import org.eclipse.cdt.managedbuilder.ui.properties.ToolListElement; +import org.eclipse.core.resources.IProject; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +public class ToolListContentProviderTests extends TestCase { + + private static final String testName = "ToolListContentProvider"; //$NON-NLS-1$ + private static boolean fHandleValueCalled; + + public static Test suite() { + return new TestSuite(ToolListContentProviderTests.class); + } + + private void resetValueHandler(){ + fHandleValueCalled = false; + } + + public void testToolListContentProvider(){ + resetValueHandler(); + + IProject project = ManagedBuildTestHelper.createProject(testName, + "cdt.managedbuild.target.ToolListContentProvider.exe"); //$NON-NLS-1$ + + IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project); + IConfiguration cfg = info.getManagedProject().getConfigurations()[0]; + assertFalse(fHandleValueCalled); + + doTestToolListContentProvider(cfg); + + ManagedBuildTestHelper.removeProject(testName); + } + + private void doTestToolListContentProvider(IConfiguration cfg){ + ToolListContentProvider provider = new ToolListContentProvider(ToolListContentProvider.PROJECT); + provider.inputChanged(null, null, cfg.getRootFolderInfo()); + + ToolListElement[] elements = (ToolListElement[])provider.getChildren(cfg); + + // Toolchain level + List toolchainOptCats = getOptionCategories(elements); + assertTrue(toolchainOptCats.contains("ToolListContentProvider.toolchain.empty.category1")); + assertFalse(toolchainOptCats.contains("ToolListContentProvider.toolchain.empty.category2")); + + // Tool level + for (ToolListElement element : elements) { + ITool tool = element.getTool(); + if (tool != null && tool.getBaseId().equals("ToolListContentProvider.tool.empty1")) { + List toolOptCats = getOptionCategories(element.getChildElements()); + assertTrue(toolOptCats.contains("ToolListContentProvider.tool.empty.category1")); + assertFalse(toolOptCats.contains("ToolListContentProvider.tool.empty.category2")); + } + } + } + + private List getOptionCategories(ToolListElement[] elements) { + List res = new ArrayList<>(); + for (ToolListElement element : elements) { + IOptionCategory cat = element.getOptionCategory(); + if (cat != null) { // Only list nodes with option category + String id = cat.getBaseId(); + assertNotNull(id); + res.add(id); + } + } + return res; + } +} diff --git a/build/org.eclipse.cdt.managedbuilder.ui.tests/src/org/eclipse/cdt/managedbuilder/ui/tests/suite/AutomatedIntegrationSuite.java b/build/org.eclipse.cdt.managedbuilder.ui.tests/src/org/eclipse/cdt/managedbuilder/ui/tests/suite/AutomatedIntegrationSuite.java index fc7b8a16dec..6f11646356e 100644 --- a/build/org.eclipse.cdt.managedbuilder.ui.tests/src/org/eclipse/cdt/managedbuilder/ui/tests/suite/AutomatedIntegrationSuite.java +++ b/build/org.eclipse.cdt.managedbuilder.ui.tests/src/org/eclipse/cdt/managedbuilder/ui/tests/suite/AutomatedIntegrationSuite.java @@ -15,6 +15,7 @@ import junit.framework.TestSuite; import org.eclipse.cdt.managedbuilder.ui.tests.TestCProjectPlatformPage; import org.eclipse.cdt.managedbuilder.ui.tests.TestCustomPageManager; +import org.eclipse.cdt.managedbuilder.ui.tests.properties.ToolListContentProviderTests; /** * @@ -30,6 +31,7 @@ public class AutomatedIntegrationSuite { // TODO uncoment this suite.addTest(TestCustomPageManager.suite()); suite.addTestSuite(TestCProjectPlatformPage.class); + suite.addTest(ToolListContentProviderTests.suite()); //$JUnit-END$ return suite; diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ToolListContentProvider.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ToolListContentProvider.java index f8a3962deba..947caeaf6d3 100644 --- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ToolListContentProvider.java +++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ToolListContentProvider.java @@ -120,7 +120,7 @@ public class ToolListContentProvider implements ITreeContentProvider{ for (int i=0; i