Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilliam Riley2018-02-13 13:52:12 +0000
committerWilliam Riley2018-02-13 14:13:37 +0000
commit9a4853aa2d1f6a718f9f0356bb7dd9d2311087ad (patch)
tree7ff4d06bf0e8952985682fb69289249c95bb1bd2 /build/org.eclipse.cdt.managedbuilder.core.tests
parentd03213fae4ba1232fc5409df2841187584f7de1f (diff)
downloadorg.eclipse.cdt-9a4853aa2d1f6a718f9f0356bb7dd9d2311087ad.tar.gz
org.eclipse.cdt-9a4853aa2d1f6a718f9f0356bb7dd9d2311087ad.tar.xz
org.eclipse.cdt-9a4853aa2d1f6a718f9f0356bb7dd9d2311087ad.zip
Bug 531106 - Modify MBS option serialize to handle empty string lists
Store a flag to indicate if an empty or null list. Existing projects without flag will be considered as non-empty when loaded to maintain existing behaviour for them. Change-Id: I745c887eb2888910c6e76d5bc057d592a3d8fb3a Signed-off-by: William Riley <william.riley@renesas.com>
Diffstat (limited to 'build/org.eclipse.cdt.managedbuilder.core.tests')
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/plugin.xml113
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/projectmodel/tests/OptionStringListValueTests.java80
2 files changed, 193 insertions, 0 deletions
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/plugin.xml b/build/org.eclipse.cdt.managedbuilder.core.tests/plugin.xml
index 455c53885ea..09bc3c2517e 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/plugin.xml
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/plugin.xml
@@ -9456,5 +9456,118 @@
</tool>
</toolChain>
</extension>
+ <extension
+ point="org.eclipse.cdt.managedbuilder.core.buildDefinitions">
+ <tool
+ id="bug531106.tests.tool"
+ isAbstract="false"
+ isSystem="true">
+ <option
+ id="bug531106.tests.option.stringList"
+ isAbstract="false"
+ resourceFilter="all"
+ valueType="stringList">
+ <listOptionValue
+ value="TC_VALUE">
+ </listOptionValue>
+ </option>
+ <option
+ id="bug531106.tests.option.incPath"
+ isAbstract="false"
+ resourceFilter="all"
+ valueType="includePath">
+ <listOptionValue
+ value="TC_VALUE">
+ </listOptionValue>
+ </option>
+ <option
+ id="bug531106.tests.option.symbols"
+ isAbstract="false"
+ resourceFilter="all"
+ valueType="definedSymbols">
+ <listOptionValue
+ value="TC_VALUE">
+ </listOptionValue>
+ </option>
+ <option
+ id="bug531106.tests.option.libs"
+ isAbstract="false"
+ resourceFilter="all"
+ valueType="libs">
+ <listOptionValue
+ value="TC_VALUE">
+ </listOptionValue>
+ </option>
+ <option
+ id="bug531106.tests.option.userObjs"
+ isAbstract="false"
+ resourceFilter="all"
+ valueType="userObjs">
+ <listOptionValue
+ value="TC_VALUE">
+ </listOptionValue>
+ </option>
+ <option
+ id="bug531106.tests.option.symFiles"
+ isAbstract="false"
+ resourceFilter="all"
+ valueType="symbolFiles">
+ <listOptionValue
+ value="TC_VALUE">
+ </listOptionValue>
+ </option>
+ <option
+ id="bug531106.tests.option.incFiles"
+ isAbstract="false"
+ resourceFilter="all"
+ valueType="includeFiles">
+ <listOptionValue
+ value="TC_VALUE">
+ </listOptionValue>
+ </option>
+ <option
+ id="bug531106.tests.option.libPaths"
+ isAbstract="false"
+ resourceFilter="all"
+ valueType="libPaths">
+ <listOptionValue
+ value="TC_VALUE">
+ </listOptionValue>
+ </option>
+ <option
+ id="bug531106.tests.option.libFiles"
+ isAbstract="false"
+ resourceFilter="all"
+ valueType="libFiles">
+ <listOptionValue
+ value="TC_VALUE">
+ </listOptionValue>
+ </option>
+ </tool>
+ <projectType
+ id="bug531106.tests.ptype"
+ isAbstract="false"
+ isTest="true">
+ <configuration
+ id="bug531106.tests.cfg1"
+ name="cfg1">
+ <toolChain
+ id="bug531106.tests.cfg1.tc"
+ isAbstract="false"
+ isSystem="true">
+ <tool
+ id="bug531106.tests.cfg1.tc.tool"
+ isAbstract="false"
+ superClass="bug531106.tests.tool">
+ </tool>
+ <builder
+ id="bug531106.tests.cfg1.tc.builder"
+ isAbstract="false"
+ isVariableCaseSensitive="false">
+ </builder>
+ </toolChain>
+ </configuration>
+ </projectType>
+ </extension>
</plugin>
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/projectmodel/tests/OptionStringListValueTests.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/projectmodel/tests/OptionStringListValueTests.java
index 774e69fe913..f7424a301b4 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/projectmodel/tests/OptionStringListValueTests.java
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/projectmodel/tests/OptionStringListValueTests.java
@@ -32,6 +32,7 @@ import org.eclipse.cdt.core.settings.model.ICProjectDescription;
import org.eclipse.cdt.core.settings.model.ICProjectDescriptionManager;
import org.eclipse.cdt.core.settings.model.ICSettingEntry;
import org.eclipse.cdt.core.testplugin.ResourceHelper;
+import org.eclipse.cdt.managedbuilder.core.BuildException;
import org.eclipse.cdt.managedbuilder.core.IConfiguration;
import org.eclipse.cdt.managedbuilder.core.IFolderInfo;
import org.eclipse.cdt.managedbuilder.core.IOption;
@@ -281,4 +282,83 @@ public class OptionStringListValueTests extends TestCase {
checkOptionValues(option);
}
+ public void testSetToEmptyList_bug531106() throws Exception {
+ String projName = PROJ_NAME_PREFIX + "_bug531106";
+ IProject project = BuildSystemTestHelper.createProject(projName, null, "bug531106.tests.ptype");
+ ResourceHelper.addResourceCreated(project);
+ CoreModel model = CoreModel.getDefault();
+ ICProjectDescriptionManager mngr = model.getProjectDescriptionManager();
+
+ ICProjectDescription des = mngr.getProjectDescription(project);
+ ICConfigurationDescription cfgDes = des.getConfigurations()[0];
+ IConfiguration cfg = ManagedBuildManager.getConfigurationForDescription(cfgDes);
+
+ ICFolderDescription fDes = cfgDes.getRootFolderDescription();
+ IFolderInfo fInfo = cfg.getRootFolderInfo();
+
+ ITool tool = fInfo.getToolsBySuperClassId("bug531106.tests.tool")[0];
+ testSetToEmptyList_VerifyValueCount(fInfo, tool, 1);
+
+ //Test clearing
+ IOption slOption = tool.getOptionBySuperClassId("bug531106.tests.option.stringList");
+ ManagedBuildManager.setOption(fInfo, tool, slOption, new OptionStringValue[0]);
+ IOption incPathOption = tool.getOptionBySuperClassId("bug531106.tests.option.incPath");
+ ManagedBuildManager.setOption(fInfo, tool, incPathOption, new OptionStringValue[0]);
+ IOption symbolsOption = tool.getOptionBySuperClassId("bug531106.tests.option.symbols");
+ ManagedBuildManager.setOption(fInfo, tool, symbolsOption, new OptionStringValue[0]);
+ IOption libsOption = tool.getOptionBySuperClassId("bug531106.tests.option.libs");
+ ManagedBuildManager.setOption(fInfo, tool, libsOption, new OptionStringValue[0]);
+ IOption userObjsOption = tool.getOptionBySuperClassId("bug531106.tests.option.userObjs");
+ ManagedBuildManager.setOption(fInfo, tool, userObjsOption, new OptionStringValue[0]);
+ IOption symFilesOption = tool.getOptionBySuperClassId("bug531106.tests.option.symFiles");
+ ManagedBuildManager.setOption(fInfo, tool, symFilesOption, new OptionStringValue[0]);
+ IOption incFilesOption = tool.getOptionBySuperClassId("bug531106.tests.option.incFiles");
+ ManagedBuildManager.setOption(fInfo, tool, incFilesOption, new OptionStringValue[0]);
+ IOption libPathsOption = tool.getOptionBySuperClassId("bug531106.tests.option.libPaths");
+ ManagedBuildManager.setOption(fInfo, tool, libPathsOption, new OptionStringValue[0]);
+ IOption libFilesOption = tool.getOptionBySuperClassId("bug531106.tests.option.libFiles");
+ ManagedBuildManager.setOption(fInfo, tool, libFilesOption, new OptionStringValue[0]);
+
+ testSetToEmptyList_VerifyValueCount(fInfo, tool, 0);
+
+ mngr.setProjectDescription(project, des);
+ ManagedBuildManager.saveBuildInfo(project, true);
+
+ //Close & re-open project
+ project.close(new NullProgressMonitor());
+ project.open(new NullProgressMonitor());
+
+ //Reload config
+ des = mngr.getProjectDescription(project);
+ cfgDes = des.getConfigurations()[0];
+ cfg = ManagedBuildManager.getConfigurationForDescription(cfgDes);
+
+ fDes = cfgDes.getRootFolderDescription();
+ fInfo = cfg.getRootFolderInfo();
+
+ tool = fInfo.getToolsBySuperClassId("bug531106.tests.tool")[0];
+ testSetToEmptyList_VerifyValueCount(fInfo, tool, 0);
+ }
+
+ private void testSetToEmptyList_VerifyValueCount(IFolderInfo fInfo, ITool tool, int count) throws BuildException {
+ IOption slOption = tool.getOptionBySuperClassId("bug531106.tests.option.stringList");
+ assertEquals(count, slOption.getBasicStringListValueElements().length);
+ IOption incPathOption = tool.getOptionBySuperClassId("bug531106.tests.option.incPath");
+ assertEquals(count, incPathOption.getBasicStringListValueElements().length);
+ IOption symbolsOption = tool.getOptionBySuperClassId("bug531106.tests.option.symbols");
+ assertEquals(count, symbolsOption.getBasicStringListValueElements().length);
+ IOption libsOption = tool.getOptionBySuperClassId("bug531106.tests.option.libs");
+ assertEquals(count, libsOption.getBasicStringListValueElements().length);
+ IOption userObjsOption = tool.getOptionBySuperClassId("bug531106.tests.option.userObjs");
+ assertEquals(count, userObjsOption.getBasicStringListValueElements().length);
+ IOption symFilesOption = tool.getOptionBySuperClassId("bug531106.tests.option.symFiles");
+ assertEquals(count, symFilesOption.getBasicStringListValueElements().length);
+ IOption incFilesOption = tool.getOptionBySuperClassId("bug531106.tests.option.incFiles");
+ assertEquals(count, incFilesOption.getBasicStringListValueElements().length);
+ IOption libPathsOption = tool.getOptionBySuperClassId("bug531106.tests.option.libPaths");
+ assertEquals(count, libPathsOption.getBasicStringListValueElements().length);
+ IOption libFilesOption = tool.getOptionBySuperClassId("bug531106.tests.option.libFiles");
+ assertEquals(count, libFilesOption.getBasicStringListValueElements().length);
+ }
+
}

Back to the top