diff options
author | William Riley | 2018-02-13 13:52:12 +0000 |
---|---|---|
committer | William Riley | 2018-02-13 14:13:37 +0000 |
commit | 9a4853aa2d1f6a718f9f0356bb7dd9d2311087ad (patch) | |
tree | 7ff4d06bf0e8952985682fb69289249c95bb1bd2 /build/org.eclipse.cdt.managedbuilder.core.tests | |
parent | d03213fae4ba1232fc5409df2841187584f7de1f (diff) | |
download | org.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')
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); + } + } |