mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
bug 284699: Added some annotations/comments
This commit is contained in:
parent
533c75662e
commit
c7adafb18b
3 changed files with 80 additions and 75 deletions
|
@ -8,15 +8,16 @@
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* Intel Corporation - Initial API and implementation
|
* Intel Corporation - Initial API and implementation
|
||||||
* James Blackburn (Broadcom Corp.)
|
* James Blackburn (Broadcom Corp.)
|
||||||
* Christian Walther (Indel AG) - [335344] test for changing language IDs
|
* Christian Walther (Indel AG) - bug 335344: test for changing language IDs
|
||||||
* Raphael Zulliger (Indel AG) - [284699][237771] test having macros with same
|
* Raphael Zulliger (Indel AG) - bug 284699: test having macros with same
|
||||||
* name but different values in same project
|
* name but different values in same project
|
||||||
* configuration
|
* configuration
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.cdt.core.settings.model;
|
package org.eclipse.cdt.core.settings.model;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
import junit.framework.TestSuite;
|
import junit.framework.TestSuite;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.dom.IPDOMManager;
|
import org.eclipse.cdt.core.dom.IPDOMManager;
|
||||||
|
@ -33,11 +34,11 @@ import org.eclipse.core.runtime.Path;
|
||||||
public class ExternalSettingsProviderTests extends BaseTestCase{
|
public class ExternalSettingsProviderTests extends BaseTestCase{
|
||||||
private static final String PROJ_NAME_PREFIX = "espt_";
|
private static final String PROJ_NAME_PREFIX = "espt_";
|
||||||
ICProject p1, p2, p3, p4, p5, p6;
|
ICProject p1, p2, p3, p4, p5, p6;
|
||||||
|
|
||||||
public static TestSuite suite() {
|
public static TestSuite suite() {
|
||||||
return suite(ExternalSettingsProviderTests.class, "_");
|
return suite(ExternalSettingsProviderTests.class, "_");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void setUp() throws Exception {
|
protected void setUp() throws Exception {
|
||||||
p1 = CProjectHelper.createNewStileCProject(PROJ_NAME_PREFIX + "a", IPDOMManager.ID_NO_INDEXER);
|
p1 = CProjectHelper.createNewStileCProject(PROJ_NAME_PREFIX + "a", IPDOMManager.ID_NO_INDEXER);
|
||||||
|
@ -47,7 +48,7 @@ public class ExternalSettingsProviderTests extends BaseTestCase{
|
||||||
p5 = CProjectHelper.createNewStileCProject(PROJ_NAME_PREFIX + "e", IPDOMManager.ID_NO_INDEXER);
|
p5 = CProjectHelper.createNewStileCProject(PROJ_NAME_PREFIX + "e", IPDOMManager.ID_NO_INDEXER);
|
||||||
p6 = CProjectHelper.createNewStileCProject(PROJ_NAME_PREFIX + "f", IPDOMManager.ID_NO_INDEXER);
|
p6 = CProjectHelper.createNewStileCProject(PROJ_NAME_PREFIX + "f", IPDOMManager.ID_NO_INDEXER);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test adding a external setting provider to p1 -- the contributed paths should appear
|
* Test adding a external setting provider to p1 -- the contributed paths should appear
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
|
@ -56,7 +57,7 @@ public class ExternalSettingsProviderTests extends BaseTestCase{
|
||||||
TestExtSettingsProvider.setVariantNum(0);
|
TestExtSettingsProvider.setVariantNum(0);
|
||||||
CoreModel model = CoreModel.getDefault();
|
CoreModel model = CoreModel.getDefault();
|
||||||
IProject project = p1.getProject();
|
IProject project = p1.getProject();
|
||||||
|
|
||||||
ICProjectDescription des = model.getProjectDescription(project);
|
ICProjectDescription des = model.getProjectDescription(project);
|
||||||
ICConfigurationDescription cfgDes = des.getConfigurations()[0];
|
ICConfigurationDescription cfgDes = des.getConfigurations()[0];
|
||||||
ICLanguageSetting ls = cfgDes.getLanguageSettingForFile(new Path("a.c"), true);
|
ICLanguageSetting ls = cfgDes.getLanguageSettingForFile(new Path("a.c"), true);
|
||||||
|
@ -87,44 +88,44 @@ public class ExternalSettingsProviderTests extends BaseTestCase{
|
||||||
new CSourceEntry(project.getFullPath().append("sp_b"), null, 0),
|
new CSourceEntry(project.getFullPath().append("sp_b"), null, 0),
|
||||||
};
|
};
|
||||||
assertTrue(Arrays.equals(newExpectedSourceEntries, sourceEntries));
|
assertTrue(Arrays.equals(newExpectedSourceEntries, sourceEntries));
|
||||||
|
|
||||||
// insert entry into the mix; check that the new entry appears
|
// insert entry into the mix; check that the new entry appears
|
||||||
ICLanguageSettingEntry[] newEntries = new ICLanguageSettingEntry[3];
|
ICLanguageSettingEntry[] newEntries = new ICLanguageSettingEntry[3];
|
||||||
newEntries[0] = expectedEntries[1];
|
newEntries[0] = expectedEntries[1];
|
||||||
newEntries[1] = new CIncludePathEntry("added", 0);
|
newEntries[1] = new CIncludePathEntry("added", 0);
|
||||||
newEntries[2] = expectedEntries[0];
|
newEntries[2] = expectedEntries[0];
|
||||||
|
|
||||||
ls.setSettingEntries(ICSettingEntry.INCLUDE_PATH, newEntries);
|
ls.setSettingEntries(ICSettingEntry.INCLUDE_PATH, newEntries);
|
||||||
entries = ls.getSettingEntries(ICSettingEntry.INCLUDE_PATH);
|
entries = ls.getSettingEntries(ICSettingEntry.INCLUDE_PATH);
|
||||||
|
|
||||||
assertEquals(3, entries.length);
|
assertEquals(3, entries.length);
|
||||||
assertTrue(Arrays.equals(newEntries, entries));
|
assertTrue(Arrays.equals(newEntries, entries));
|
||||||
|
|
||||||
newEntries = new ICLanguageSettingEntry[1];
|
newEntries = new ICLanguageSettingEntry[1];
|
||||||
newEntries[0] = expectedEntries[0];
|
newEntries[0] = expectedEntries[0];
|
||||||
ls.setSettingEntries(ICSettingEntry.INCLUDE_PATH, newEntries);
|
ls.setSettingEntries(ICSettingEntry.INCLUDE_PATH, newEntries);
|
||||||
entries = ls.getSettingEntries(ICSettingEntry.INCLUDE_PATH);
|
entries = ls.getSettingEntries(ICSettingEntry.INCLUDE_PATH);
|
||||||
|
|
||||||
assertEquals(1, entries.length);
|
assertEquals(1, entries.length);
|
||||||
assertTrue(Arrays.equals(newEntries, entries));
|
assertTrue(Arrays.equals(newEntries, entries));
|
||||||
|
|
||||||
newEntries = new ICLanguageSettingEntry[0];
|
newEntries = new ICLanguageSettingEntry[0];
|
||||||
ls.setSettingEntries(ICSettingEntry.INCLUDE_PATH, newEntries);
|
ls.setSettingEntries(ICSettingEntry.INCLUDE_PATH, newEntries);
|
||||||
entries = ls.getSettingEntries(ICSettingEntry.INCLUDE_PATH);
|
entries = ls.getSettingEntries(ICSettingEntry.INCLUDE_PATH);
|
||||||
|
|
||||||
assertEquals(0, entries.length);
|
assertEquals(0, entries.length);
|
||||||
|
|
||||||
ls.setSettingEntries(ICSettingEntry.INCLUDE_PATH, (ICLanguageSettingEntry[])null);
|
ls.setSettingEntries(ICSettingEntry.INCLUDE_PATH, (ICLanguageSettingEntry[])null);
|
||||||
entries = ls.getSettingEntries(ICSettingEntry.INCLUDE_PATH);
|
entries = ls.getSettingEntries(ICSettingEntry.INCLUDE_PATH);
|
||||||
assertEquals(2, entries.length);
|
assertEquals(2, entries.length);
|
||||||
assertTrue(Arrays.equals(expectedEntries, entries));
|
assertTrue(Arrays.equals(expectedEntries, entries));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testCreateCfg() throws Exception {
|
public void testCreateCfg() throws Exception {
|
||||||
TestExtSettingsProvider.setVariantNum(0);
|
TestExtSettingsProvider.setVariantNum(0);
|
||||||
CoreModel model = CoreModel.getDefault();
|
CoreModel model = CoreModel.getDefault();
|
||||||
IProject project = p2.getProject();
|
IProject project = p2.getProject();
|
||||||
|
|
||||||
ICProjectDescription des = model.getProjectDescription(project);
|
ICProjectDescription des = model.getProjectDescription(project);
|
||||||
ICConfigurationDescription cfgDes = des.getConfigurations()[0];
|
ICConfigurationDescription cfgDes = des.getConfigurations()[0];
|
||||||
ICLanguageSetting ls = cfgDes.getLanguageSettingForFile(new Path("a.c"), true);
|
ICLanguageSetting ls = cfgDes.getLanguageSettingForFile(new Path("a.c"), true);
|
||||||
|
@ -138,24 +139,24 @@ public class ExternalSettingsProviderTests extends BaseTestCase{
|
||||||
assertTrue(Arrays.equals(expectedSourceEntries, sourceEntries));
|
assertTrue(Arrays.equals(expectedSourceEntries, sourceEntries));
|
||||||
String[] extPIds = new String[]{CTestPlugin.PLUGIN_ID + ".testExtSettingsProvider"};
|
String[] extPIds = new String[]{CTestPlugin.PLUGIN_ID + ".testExtSettingsProvider"};
|
||||||
cfgDes.setExternalSettingsProviderIds(extPIds);
|
cfgDes.setExternalSettingsProviderIds(extPIds);
|
||||||
|
|
||||||
model.setProjectDescription(project, des);
|
model.setProjectDescription(project, des);
|
||||||
|
|
||||||
des = model.getProjectDescription(project, false);
|
des = model.getProjectDescription(project, false);
|
||||||
cfgDes = des.getConfigurations()[0];
|
cfgDes = des.getConfigurations()[0];
|
||||||
assertEquals(extPIds.length, cfgDes.getExternalSettingsProviderIds().length);
|
assertEquals(extPIds.length, cfgDes.getExternalSettingsProviderIds().length);
|
||||||
assertTrue(Arrays.equals(extPIds, cfgDes.getExternalSettingsProviderIds()));
|
assertTrue(Arrays.equals(extPIds, cfgDes.getExternalSettingsProviderIds()));
|
||||||
|
|
||||||
des = model.getProjectDescription(project);
|
des = model.getProjectDescription(project);
|
||||||
cfgDes = des.getConfigurations()[0];
|
cfgDes = des.getConfigurations()[0];
|
||||||
assertEquals(extPIds.length, cfgDes.getExternalSettingsProviderIds().length);
|
assertEquals(extPIds.length, cfgDes.getExternalSettingsProviderIds().length);
|
||||||
assertTrue(Arrays.equals(extPIds, cfgDes.getExternalSettingsProviderIds()));
|
assertTrue(Arrays.equals(extPIds, cfgDes.getExternalSettingsProviderIds()));
|
||||||
|
|
||||||
String newCfgId = CDataUtil.genId(null);
|
String newCfgId = CDataUtil.genId(null);
|
||||||
ICConfigurationDescription cfgDes2 = des.createConfiguration(newCfgId, "cfg2", cfgDes);
|
ICConfigurationDescription cfgDes2 = des.createConfiguration(newCfgId, "cfg2", cfgDes);
|
||||||
assertEquals(extPIds.length, cfgDes2.getExternalSettingsProviderIds().length);
|
assertEquals(extPIds.length, cfgDes2.getExternalSettingsProviderIds().length);
|
||||||
assertTrue(Arrays.equals(extPIds, cfgDes2.getExternalSettingsProviderIds()));
|
assertTrue(Arrays.equals(extPIds, cfgDes2.getExternalSettingsProviderIds()));
|
||||||
|
|
||||||
ls = cfgDes2.getLanguageSettingForFile(new Path("a.c"), true);
|
ls = cfgDes2.getLanguageSettingForFile(new Path("a.c"), true);
|
||||||
entries = ls.getSettingEntries(ICSettingEntry.INCLUDE_PATH);
|
entries = ls.getSettingEntries(ICSettingEntry.INCLUDE_PATH);
|
||||||
ICLanguageSettingEntry[] expectedEntries = new ICLanguageSettingEntry[]{
|
ICLanguageSettingEntry[] expectedEntries = new ICLanguageSettingEntry[]{
|
||||||
|
@ -165,14 +166,14 @@ public class ExternalSettingsProviderTests extends BaseTestCase{
|
||||||
assertTrue(Arrays.equals(expectedEntries, entries));
|
assertTrue(Arrays.equals(expectedEntries, entries));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testProviderUpdate() throws Exception {
|
public void testProviderUpdate() throws Exception {
|
||||||
TestExtSettingsProvider.setVariantNum(0);
|
TestExtSettingsProvider.setVariantNum(0);
|
||||||
|
|
||||||
CoreModel model = CoreModel.getDefault();
|
CoreModel model = CoreModel.getDefault();
|
||||||
ICProjectDescriptionManager mngr = model.getProjectDescriptionManager();
|
ICProjectDescriptionManager mngr = model.getProjectDescriptionManager();
|
||||||
IProject project = p2.getProject();
|
IProject project = p2.getProject();
|
||||||
|
|
||||||
ICProjectDescription des = model.getProjectDescription(project);
|
ICProjectDescription des = model.getProjectDescription(project);
|
||||||
ICConfigurationDescription cfgDes = des.getConfigurations()[0];
|
ICConfigurationDescription cfgDes = des.getConfigurations()[0];
|
||||||
ICLanguageSetting ls = cfgDes.getLanguageSettingForFile(new Path("a.c"), true);
|
ICLanguageSetting ls = cfgDes.getLanguageSettingForFile(new Path("a.c"), true);
|
||||||
|
@ -186,7 +187,7 @@ public class ExternalSettingsProviderTests extends BaseTestCase{
|
||||||
assertTrue(Arrays.equals(expectedSourceEntries, sourceEntries));
|
assertTrue(Arrays.equals(expectedSourceEntries, sourceEntries));
|
||||||
String[] extPIds = new String[]{CTestPlugin.PLUGIN_ID + ".testExtSettingsProvider"};
|
String[] extPIds = new String[]{CTestPlugin.PLUGIN_ID + ".testExtSettingsProvider"};
|
||||||
cfgDes.setExternalSettingsProviderIds(extPIds);
|
cfgDes.setExternalSettingsProviderIds(extPIds);
|
||||||
|
|
||||||
|
|
||||||
ls = cfgDes.getLanguageSettingForFile(new Path("a.c"), true);
|
ls = cfgDes.getLanguageSettingForFile(new Path("a.c"), true);
|
||||||
entries = ls.getSettingEntries(ICSettingEntry.INCLUDE_PATH);
|
entries = ls.getSettingEntries(ICSettingEntry.INCLUDE_PATH);
|
||||||
|
@ -197,19 +198,19 @@ public class ExternalSettingsProviderTests extends BaseTestCase{
|
||||||
assertTrue(Arrays.equals(expectedEntries, entries));
|
assertTrue(Arrays.equals(expectedEntries, entries));
|
||||||
|
|
||||||
model.setProjectDescription(project, des);
|
model.setProjectDescription(project, des);
|
||||||
|
|
||||||
des = model.getProjectDescription(project);
|
des = model.getProjectDescription(project);
|
||||||
cfgDes = des.getConfigurations()[0];
|
cfgDes = des.getConfigurations()[0];
|
||||||
ls = cfgDes.getLanguageSettingForFile(new Path("a.c"), true);
|
ls = cfgDes.getLanguageSettingForFile(new Path("a.c"), true);
|
||||||
entries = ls.getSettingEntries(ICSettingEntry.INCLUDE_PATH);
|
entries = ls.getSettingEntries(ICSettingEntry.INCLUDE_PATH);
|
||||||
assertTrue(Arrays.equals(expectedEntries, entries));
|
assertTrue(Arrays.equals(expectedEntries, entries));
|
||||||
|
|
||||||
ICLanguageSettingEntry[] expectedEntries2 = new ICLanguageSettingEntry[]{
|
ICLanguageSettingEntry[] expectedEntries2 = new ICLanguageSettingEntry[]{
|
||||||
new CIncludePathEntry("ip_a2", 0),
|
new CIncludePathEntry("ip_a2", 0),
|
||||||
new CIncludePathEntry("ip_b2", 0),
|
new CIncludePathEntry("ip_b2", 0),
|
||||||
};
|
};
|
||||||
TestExtSettingsProvider.setVariantNum(1);
|
TestExtSettingsProvider.setVariantNum(1);
|
||||||
|
|
||||||
mngr.updateExternalSettingsProviders(extPIds, null);
|
mngr.updateExternalSettingsProviders(extPIds, null);
|
||||||
des = model.getProjectDescription(project);
|
des = model.getProjectDescription(project);
|
||||||
cfgDes = des.getConfigurations()[0];
|
cfgDes = des.getConfigurations()[0];
|
||||||
|
@ -217,14 +218,14 @@ public class ExternalSettingsProviderTests extends BaseTestCase{
|
||||||
entries = ls.getSettingEntries(ICSettingEntry.INCLUDE_PATH);
|
entries = ls.getSettingEntries(ICSettingEntry.INCLUDE_PATH);
|
||||||
assertTrue(Arrays.equals(expectedEntries2, entries));
|
assertTrue(Arrays.equals(expectedEntries2, entries));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testRestoreDefaults() throws Exception {
|
public void testRestoreDefaults() throws Exception {
|
||||||
TestExtSettingsProvider.setVariantNum(0);
|
TestExtSettingsProvider.setVariantNum(0);
|
||||||
|
|
||||||
CoreModel model = CoreModel.getDefault();
|
CoreModel model = CoreModel.getDefault();
|
||||||
ICProjectDescriptionManager mngr = model.getProjectDescriptionManager();
|
ICProjectDescriptionManager mngr = model.getProjectDescriptionManager();
|
||||||
IProject project = p4.getProject();
|
IProject project = p4.getProject();
|
||||||
|
|
||||||
ICProjectDescription des = model.getProjectDescription(project);
|
ICProjectDescription des = model.getProjectDescription(project);
|
||||||
ICConfigurationDescription cfgDes = des.getConfigurations()[0];
|
ICConfigurationDescription cfgDes = des.getConfigurations()[0];
|
||||||
ICLanguageSetting ls = cfgDes.getLanguageSettingForFile(new Path("a.c"), true);
|
ICLanguageSetting ls = cfgDes.getLanguageSettingForFile(new Path("a.c"), true);
|
||||||
|
@ -238,7 +239,7 @@ public class ExternalSettingsProviderTests extends BaseTestCase{
|
||||||
assertTrue(Arrays.equals(expectedSourceEntries, sourceEntries));
|
assertTrue(Arrays.equals(expectedSourceEntries, sourceEntries));
|
||||||
String[] extPIds = new String[]{CTestPlugin.PLUGIN_ID + ".testExtSettingsProvider"};
|
String[] extPIds = new String[]{CTestPlugin.PLUGIN_ID + ".testExtSettingsProvider"};
|
||||||
cfgDes.setExternalSettingsProviderIds(extPIds);
|
cfgDes.setExternalSettingsProviderIds(extPIds);
|
||||||
|
|
||||||
|
|
||||||
ls = cfgDes.getLanguageSettingForFile(new Path("a.c"), true);
|
ls = cfgDes.getLanguageSettingForFile(new Path("a.c"), true);
|
||||||
entries = ls.getSettingEntries(ICSettingEntry.INCLUDE_PATH);
|
entries = ls.getSettingEntries(ICSettingEntry.INCLUDE_PATH);
|
||||||
|
@ -249,7 +250,7 @@ public class ExternalSettingsProviderTests extends BaseTestCase{
|
||||||
assertTrue(Arrays.equals(expectedEntries, entries));
|
assertTrue(Arrays.equals(expectedEntries, entries));
|
||||||
|
|
||||||
model.setProjectDescription(project, des);
|
model.setProjectDescription(project, des);
|
||||||
|
|
||||||
des = model.getProjectDescription(project);
|
des = model.getProjectDescription(project);
|
||||||
cfgDes = des.getConfigurations()[0];
|
cfgDes = des.getConfigurations()[0];
|
||||||
ls = cfgDes.getLanguageSettingForFile(new Path("a.c"), true);
|
ls = cfgDes.getLanguageSettingForFile(new Path("a.c"), true);
|
||||||
|
@ -263,7 +264,7 @@ public class ExternalSettingsProviderTests extends BaseTestCase{
|
||||||
cfgDes.setSourceEntries(null);
|
cfgDes.setSourceEntries(null);
|
||||||
expectedSourceEntries = new ICSourceEntry[]{
|
expectedSourceEntries = new ICSourceEntry[]{
|
||||||
new CSourceEntry(project.getFullPath().append("sp_a"), null, 0),
|
new CSourceEntry(project.getFullPath().append("sp_a"), null, 0),
|
||||||
new CSourceEntry(project.getFullPath().append("sp_b"), null, 0),
|
new CSourceEntry(project.getFullPath().append("sp_b"), null, 0),
|
||||||
};
|
};
|
||||||
sourceEntries = cfgDes.getSourceEntries();
|
sourceEntries = cfgDes.getSourceEntries();
|
||||||
assertEquals(2, sourceEntries.length);
|
assertEquals(2, sourceEntries.length);
|
||||||
|
@ -329,7 +330,7 @@ public class ExternalSettingsProviderTests extends BaseTestCase{
|
||||||
assertTrue(Arrays.equals(cfgDes.getSourceEntries(), makeProjectRelativePath(project, provided)));
|
assertTrue(Arrays.equals(cfgDes.getSourceEntries(), makeProjectRelativePath(project, provided)));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
fail("Unhandled entry_kind: " + kind);
|
fail("Unhandled entry_kind: " + kind);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -345,11 +346,11 @@ public class ExternalSettingsProviderTests extends BaseTestCase{
|
||||||
for (int i = 0; i < input.length; i ++) {
|
for (int i = 0; i < input.length; i ++) {
|
||||||
switch (input[i].getKind()) {
|
switch (input[i].getKind()) {
|
||||||
case ICSettingEntry.OUTPUT_PATH:
|
case ICSettingEntry.OUTPUT_PATH:
|
||||||
out[i] = new COutputEntry(project.getFullPath().append(input[i].getValue()),
|
out[i] = new COutputEntry(project.getFullPath().append(input[i].getValue()),
|
||||||
((ICOutputEntry)input[i]).getExclusionPatterns(), input[i].getFlags());
|
((ICOutputEntry)input[i]).getExclusionPatterns(), input[i].getFlags());
|
||||||
break;
|
break;
|
||||||
case ICSettingEntry.SOURCE_PATH:
|
case ICSettingEntry.SOURCE_PATH:
|
||||||
out[i] = new CSourceEntry(project.getFullPath().append(input[i].getValue()),
|
out[i] = new CSourceEntry(project.getFullPath().append(input[i].getValue()),
|
||||||
((ICSourceEntry)input[i]).getExclusionPatterns(), input[i].getFlags());
|
((ICSourceEntry)input[i]).getExclusionPatterns(), input[i].getFlags());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -366,14 +367,14 @@ public class ExternalSettingsProviderTests extends BaseTestCase{
|
||||||
CoreModel model = CoreModel.getDefault();
|
CoreModel model = CoreModel.getDefault();
|
||||||
ICProjectDescriptionManager mngr = model.getProjectDescriptionManager();
|
ICProjectDescriptionManager mngr = model.getProjectDescriptionManager();
|
||||||
IProject project = p5.getProject();
|
IProject project = p5.getProject();
|
||||||
|
|
||||||
// add external settings provider
|
// add external settings provider
|
||||||
ICProjectDescription des = model.getProjectDescription(project);
|
ICProjectDescription des = model.getProjectDescription(project);
|
||||||
ICConfigurationDescription cfgDes = des.getConfigurations()[0];
|
ICConfigurationDescription cfgDes = des.getConfigurations()[0];
|
||||||
String[] extPIds = new String[]{TestExtSettingsProvider.TEST_EXTERNAL_PROVIDER_ID};
|
String[] extPIds = new String[]{TestExtSettingsProvider.TEST_EXTERNAL_PROVIDER_ID};
|
||||||
cfgDes.setExternalSettingsProviderIds(extPIds);
|
cfgDes.setExternalSettingsProviderIds(extPIds);
|
||||||
model.setProjectDescription(project, des);
|
model.setProjectDescription(project, des);
|
||||||
|
|
||||||
// read out the settings it caused
|
// read out the settings it caused
|
||||||
des = model.getProjectDescription(project, false);
|
des = model.getProjectDescription(project, false);
|
||||||
cfgDes = des.getConfigurations()[0];
|
cfgDes = des.getConfigurations()[0];
|
||||||
|
@ -382,31 +383,31 @@ public class ExternalSettingsProviderTests extends BaseTestCase{
|
||||||
for (ICLanguageSetting s: root.getLanguageSettings()) {
|
for (ICLanguageSetting s: root.getLanguageSettings()) {
|
||||||
languageSettingsById.put(s.getLanguageId(), s);
|
languageSettingsById.put(s.getLanguageId(), s);
|
||||||
}
|
}
|
||||||
|
|
||||||
ICLanguageSetting ls;
|
ICLanguageSetting ls;
|
||||||
ICLanguageSettingEntry[] entries;
|
ICLanguageSettingEntry[] entries;
|
||||||
ICLanguageSettingEntry[] expectedEntriesSet = new ICLanguageSettingEntry[]{
|
ICLanguageSettingEntry[] expectedEntriesSet = new ICLanguageSettingEntry[]{
|
||||||
new CMacroEntry("m_c", "mv_c", 0)
|
new CMacroEntry("m_c", "mv_c", 0)
|
||||||
};
|
};
|
||||||
ICLanguageSettingEntry[] expectedEntriesUnset = new ICLanguageSettingEntry[] {};
|
ICLanguageSettingEntry[] expectedEntriesUnset = new ICLanguageSettingEntry[] {};
|
||||||
|
|
||||||
// setting should be present for assembly but not for C
|
// setting should be present for assembly but not for C
|
||||||
ls = languageSettingsById.get("org.eclipse.cdt.core.assembly");
|
ls = languageSettingsById.get("org.eclipse.cdt.core.assembly");
|
||||||
assertNotNull(ls);
|
assertNotNull(ls);
|
||||||
entries = ls.getSettingEntries(ICSettingEntry.MACRO);
|
entries = ls.getSettingEntries(ICSettingEntry.MACRO);
|
||||||
assertEquals(1, entries.length);
|
assertEquals(1, entries.length);
|
||||||
assertTrue(Arrays.equals(expectedEntriesSet, entries));
|
assertTrue(Arrays.equals(expectedEntriesSet, entries));
|
||||||
|
|
||||||
ls = languageSettingsById.get("org.eclipse.cdt.core.gcc");
|
ls = languageSettingsById.get("org.eclipse.cdt.core.gcc");
|
||||||
assertNotNull(ls);
|
assertNotNull(ls);
|
||||||
entries = ls.getSettingEntries(ICSettingEntry.MACRO);
|
entries = ls.getSettingEntries(ICSettingEntry.MACRO);
|
||||||
assertEquals(0, entries.length);
|
assertEquals(0, entries.length);
|
||||||
assertTrue(Arrays.equals(expectedEntriesUnset, entries));
|
assertTrue(Arrays.equals(expectedEntriesUnset, entries));
|
||||||
|
|
||||||
// update settings provider
|
// update settings provider
|
||||||
TestExtSettingsProvider.setVariantNum(3);
|
TestExtSettingsProvider.setVariantNum(3);
|
||||||
mngr.updateExternalSettingsProviders(extPIds, null);
|
mngr.updateExternalSettingsProviders(extPIds, null);
|
||||||
|
|
||||||
// read out the settings it caused
|
// read out the settings it caused
|
||||||
des = model.getProjectDescription(project, false);
|
des = model.getProjectDescription(project, false);
|
||||||
cfgDes = des.getConfigurations()[0];
|
cfgDes = des.getConfigurations()[0];
|
||||||
|
@ -415,14 +416,14 @@ public class ExternalSettingsProviderTests extends BaseTestCase{
|
||||||
for (ICLanguageSetting s: root.getLanguageSettings()) {
|
for (ICLanguageSetting s: root.getLanguageSettings()) {
|
||||||
languageSettingsById.put(s.getLanguageId(), s);
|
languageSettingsById.put(s.getLanguageId(), s);
|
||||||
}
|
}
|
||||||
|
|
||||||
// setting should be present for both now
|
// setting should be present for both now
|
||||||
ls = languageSettingsById.get("org.eclipse.cdt.core.gcc");
|
ls = languageSettingsById.get("org.eclipse.cdt.core.gcc");
|
||||||
assertNotNull(ls);
|
assertNotNull(ls);
|
||||||
entries = ls.getSettingEntries(ICSettingEntry.MACRO);
|
entries = ls.getSettingEntries(ICSettingEntry.MACRO);
|
||||||
assertEquals(1, entries.length);
|
assertEquals(1, entries.length);
|
||||||
assertTrue(Arrays.equals(expectedEntriesSet, entries));
|
assertTrue(Arrays.equals(expectedEntriesSet, entries));
|
||||||
|
|
||||||
ls = languageSettingsById.get("org.eclipse.cdt.core.assembly");
|
ls = languageSettingsById.get("org.eclipse.cdt.core.assembly");
|
||||||
assertNotNull(ls);
|
assertNotNull(ls);
|
||||||
entries = ls.getSettingEntries(ICSettingEntry.MACRO);
|
entries = ls.getSettingEntries(ICSettingEntry.MACRO);
|
||||||
|
@ -440,7 +441,7 @@ public class ExternalSettingsProviderTests extends BaseTestCase{
|
||||||
CoreModel model = CoreModel.getDefault();
|
CoreModel model = CoreModel.getDefault();
|
||||||
ICProjectDescriptionManager mngr = model.getProjectDescriptionManager();
|
ICProjectDescriptionManager mngr = model.getProjectDescriptionManager();
|
||||||
IProject project = p6.getProject();
|
IProject project = p6.getProject();
|
||||||
|
|
||||||
// add external settings provider
|
// add external settings provider
|
||||||
ICProjectDescription des = model.getProjectDescription(project);
|
ICProjectDescription des = model.getProjectDescription(project);
|
||||||
ICConfigurationDescription cfgDes = des.getConfigurations()[0];
|
ICConfigurationDescription cfgDes = des.getConfigurations()[0];
|
||||||
|
@ -448,7 +449,7 @@ public class ExternalSettingsProviderTests extends BaseTestCase{
|
||||||
cfgDes.setExternalSettingsProviderIds(extPIds);
|
cfgDes.setExternalSettingsProviderIds(extPIds);
|
||||||
ICFolderDescription root = cfgDes.getRootFolderDescription();
|
ICFolderDescription root = cfgDes.getRootFolderDescription();
|
||||||
model.setProjectDescription(project, des);
|
model.setProjectDescription(project, des);
|
||||||
|
|
||||||
// read out the settings it caused
|
// read out the settings it caused
|
||||||
des = model.getProjectDescription(project, false);
|
des = model.getProjectDescription(project, false);
|
||||||
cfgDes = des.getConfigurations()[0];
|
cfgDes = des.getConfigurations()[0];
|
||||||
|
|
|
@ -7,9 +7,9 @@
|
||||||
*
|
*
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* Intel Corporation - Initial API and implementation
|
* Intel Corporation - Initial API and implementation
|
||||||
* Christian Walther (Indel AG) - [335344] test for changing language IDs
|
* Christian Walther (Indel AG) - bug 335344: test for changing language IDs
|
||||||
* Raphael Zulliger (Indel AG) - [284699][237771] test having macros with same
|
* Raphael Zulliger (Indel AG) - bug 284699: test having macros with same
|
||||||
* name but different values in same project
|
* name but different values in same project
|
||||||
* configuration
|
* configuration
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.cdt.core.settings.model;
|
package org.eclipse.cdt.core.settings.model;
|
||||||
|
@ -19,7 +19,7 @@ import org.eclipse.cdt.core.testplugin.CTestPlugin;
|
||||||
import org.eclipse.core.resources.IProject;
|
import org.eclipse.core.resources.IProject;
|
||||||
|
|
||||||
public class TestExtSettingsProvider extends CExternalSettingProvider {
|
public class TestExtSettingsProvider extends CExternalSettingProvider {
|
||||||
|
|
||||||
public static final String TEST_EXTERNAL_PROVIDER_ID = CTestPlugin.PLUGIN_ID + ".testExtSettingsProvider";
|
public static final String TEST_EXTERNAL_PROVIDER_ID = CTestPlugin.PLUGIN_ID + ".testExtSettingsProvider";
|
||||||
|
|
||||||
private static CExternalSetting[] SETTINGS_1 = new CExternalSetting[]{
|
private static CExternalSetting[] SETTINGS_1 = new CExternalSetting[]{
|
||||||
|
@ -42,7 +42,7 @@ public class TestExtSettingsProvider extends CExternalSettingProvider {
|
||||||
new COutputEntry("op_b", null, 0),
|
new COutputEntry("op_b", null, 0),
|
||||||
})
|
})
|
||||||
};
|
};
|
||||||
|
|
||||||
private static CExternalSetting[] SETTINGS_2 = new CExternalSetting[]{
|
private static CExternalSetting[] SETTINGS_2 = new CExternalSetting[]{
|
||||||
new CExternalSetting(null, null, null, new ICSettingEntry[]{
|
new CExternalSetting(null, null, null, new ICSettingEntry[]{
|
||||||
new CIncludePathEntry("ip_a2", 0),
|
new CIncludePathEntry("ip_a2", 0),
|
||||||
|
@ -75,7 +75,7 @@ public class TestExtSettingsProvider extends CExternalSettingProvider {
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
private static CExternalSetting[] SETTINGS_4 = new CExternalSetting[]{
|
private static CExternalSetting[] SETTINGS_4 = new CExternalSetting[]{
|
||||||
new CExternalSetting(
|
new CExternalSetting(
|
||||||
new String[]{
|
new String[]{
|
||||||
|
@ -109,28 +109,28 @@ public class TestExtSettingsProvider extends CExternalSettingProvider {
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
public static final CExternalSetting[][] SETTINGS_VARIANTS = new CExternalSetting[][]{
|
public static final CExternalSetting[][] SETTINGS_VARIANTS = new CExternalSetting[][]{
|
||||||
SETTINGS_1,
|
SETTINGS_1,
|
||||||
SETTINGS_2,
|
SETTINGS_2,
|
||||||
SETTINGS_3,
|
SETTINGS_3,
|
||||||
SETTINGS_4,
|
SETTINGS_4,
|
||||||
SETTINGS_5};
|
SETTINGS_5};
|
||||||
|
|
||||||
private static int variantNum;
|
private static int variantNum;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CExternalSetting[] getSettings(IProject project,
|
public CExternalSetting[] getSettings(IProject project,
|
||||||
ICConfigurationDescription cfg) {
|
ICConfigurationDescription cfg) {
|
||||||
return SETTINGS_VARIANTS[variantNum].clone();
|
return SETTINGS_VARIANTS[variantNum].clone();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void setVariantNum(int num){
|
public static void setVariantNum(int num){
|
||||||
if(num < 0 || num >= SETTINGS_VARIANTS.length)
|
if(num < 0 || num >= SETTINGS_VARIANTS.length)
|
||||||
throw new IllegalArgumentException();
|
throw new IllegalArgumentException();
|
||||||
variantNum = num;
|
variantNum = num;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int getVariantNum(){
|
public static int getVariantNum(){
|
||||||
return variantNum;
|
return variantNum;
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
*
|
*
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* Intel Corporation - Initial API and implementation
|
* Intel Corporation - Initial API and implementation
|
||||||
* Raphael Zulliger (Indel AG) - [284699][237771] fixing issues when using same
|
* Raphael Zulliger (Indel AG) - bug 284699: fixing issues when using same
|
||||||
* macro names with different values
|
* macro names with different values
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.cdt.core.settings.model.util;
|
package org.eclipse.cdt.core.settings.model.util;
|
||||||
|
@ -21,14 +21,18 @@ import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
|
||||||
import org.eclipse.cdt.core.settings.model.ICSettingEntry;
|
import org.eclipse.cdt.core.settings.model.ICSettingEntry;
|
||||||
import org.eclipse.core.runtime.IPath;
|
import org.eclipse.core.runtime.IPath;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cache of setting entries stored with multidimentional maps.
|
||||||
|
* See bug 284699 comment 7 for a possible insight into it.
|
||||||
|
*/
|
||||||
public class CSettingEntryFactory {
|
public class CSettingEntryFactory {
|
||||||
private static final HashSet<IPath> EMPTY_SET = new HashSet<IPath>(0);
|
private static final HashSet<IPath> EMPTY_SET = new HashSet<IPath>(0);
|
||||||
|
|
||||||
private KindBasedStore<HashMap<String, ?>> fStore = new KindBasedStore<HashMap<String, ?>>(false);
|
private KindBasedStore<HashMap<String, ?>> fStore = new KindBasedStore<HashMap<String, ?>>(false);
|
||||||
|
|
||||||
private <K, V> HashMap<String, HashMap<K, V>> getNameMap(int kind, boolean create, HashMap<K, V> type){
|
private <K, V> HashMap<String, HashMap<K, V>> getNameMap(int kind, boolean create){
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
HashMap<String, HashMap<K, V>> map = (HashMap<String, HashMap<K, V>>) fStore.get(kind);
|
HashMap<String/*name*/, HashMap<K, V>> map = (HashMap<String, HashMap<K, V>>) fStore.get(kind);
|
||||||
if(map == null && create){
|
if(map == null && create){
|
||||||
map = new HashMap<String, HashMap<K, V>>();
|
map = new HashMap<String, HashMap<K, V>>();
|
||||||
fStore.put(kind, map);
|
fStore.put(kind, map);
|
||||||
|
@ -36,18 +40,18 @@ public class CSettingEntryFactory {
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
private <K, V> HashMap<K, V> getValueMap(String name, boolean create, HashMap<K, V> type){
|
private HashMap<String, HashMap<Integer, ICSettingEntry>> getValueMap(String name, boolean create){
|
||||||
HashMap<String, HashMap<K, V>> nameMap = getNameMap(ICSettingEntry.MACRO, create, (HashMap<K, V>)null);
|
HashMap<String/*name*/, HashMap<String/*value*/, HashMap<Integer/*flags*/, ICSettingEntry>>> nameMap = getNameMap(ICSettingEntry.MACRO, create);
|
||||||
if(nameMap != null){
|
if(nameMap != null){
|
||||||
return getMap(nameMap, name, create);
|
return getMap(nameMap, name, create);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private HashMap<Integer, ICSettingEntry> getFlagMap(int kind, String name, String value, IPath[] exclusionPatters, boolean create){
|
private HashMap<Integer, ICSettingEntry> getFlagMap(int kind, String name, String value, IPath[] exclusionPatterns, boolean create){
|
||||||
switch(kind){
|
switch(kind){
|
||||||
case ICSettingEntry.MACRO:
|
case ICSettingEntry.MACRO:
|
||||||
HashMap<String, HashMap<Integer, ICSettingEntry>> valueMap = getValueMap(name, create, (HashMap<String, HashMap<Integer, ICSettingEntry>>)null);
|
HashMap<String, HashMap<Integer, ICSettingEntry>> valueMap = getValueMap(name, create);
|
||||||
if(valueMap != null){
|
if(valueMap != null){
|
||||||
return getMap(valueMap, value, create);
|
return getMap(valueMap, value, create);
|
||||||
}
|
}
|
||||||
|
@ -56,27 +60,27 @@ public class CSettingEntryFactory {
|
||||||
case ICSettingEntry.OUTPUT_PATH:
|
case ICSettingEntry.OUTPUT_PATH:
|
||||||
HashMap<HashSet<IPath>, HashMap<Integer, ICSettingEntry>> excPatternMap = getExclusionPatternsMap(kind, name, create);
|
HashMap<HashSet<IPath>, HashMap<Integer, ICSettingEntry>> excPatternMap = getExclusionPatternsMap(kind, name, create);
|
||||||
if(excPatternMap != null){
|
if(excPatternMap != null){
|
||||||
HashSet<IPath> setKey = exclusionPatters == null || exclusionPatters.length == 0 ? EMPTY_SET : new HashSet<IPath>(Arrays.asList(exclusionPatters));
|
HashSet<IPath> setKey = exclusionPatterns == null || exclusionPatterns.length == 0 ? EMPTY_SET : new HashSet<IPath>(Arrays.asList(exclusionPatterns));
|
||||||
return getMap(excPatternMap, setKey, create);
|
return getMap(excPatternMap, setKey, create);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
default:
|
default:
|
||||||
HashMap<String, HashMap<Integer, ICSettingEntry>> nameMap = getNameMap(kind, create, (HashMap<Integer, ICSettingEntry>)null);
|
HashMap<String, HashMap<Integer, ICSettingEntry>> nameMap = getNameMap(kind, create);
|
||||||
if(nameMap != null){
|
if(nameMap != null){
|
||||||
return getMap(nameMap, name, create);
|
return getMap(nameMap, name, create);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private HashMap<HashSet<IPath>, HashMap<Integer, ICSettingEntry>> getExclusionPatternsMap(int kind, String name, boolean create){
|
private HashMap<HashSet<IPath>, HashMap<Integer, ICSettingEntry>> getExclusionPatternsMap(int kind, String name, boolean create){
|
||||||
HashMap<String, HashMap<HashSet<IPath>, HashMap<Integer, ICSettingEntry>>> nameMap = getNameMap(kind, create, (HashMap<HashSet<IPath>, HashMap<Integer, ICSettingEntry>>)null);
|
HashMap<String/*name*/, HashMap<HashSet<IPath>/*exclusionPatterns*/, HashMap<Integer/*flags*/, ICSettingEntry>>> nameMap = getNameMap(kind, create);
|
||||||
if(nameMap != null){
|
if(nameMap != null){
|
||||||
return getMap(nameMap, name, create);
|
return getMap(nameMap, name, create);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static <Key, K, V> HashMap<K, V> getMap(HashMap<Key, HashMap<K, V>> container, Key key, boolean create){
|
private static <Key, K, V> HashMap<K, V> getMap(HashMap<Key, HashMap<K, V>> container, Key key, boolean create){
|
||||||
HashMap<K, V> map = container.get(key);
|
HashMap<K, V> map = container.get(key);
|
||||||
if(map == null && create){
|
if(map == null && create){
|
||||||
|
@ -92,10 +96,10 @@ public class CSettingEntryFactory {
|
||||||
case ICSettingEntry.SOURCE_PATH:
|
case ICSettingEntry.SOURCE_PATH:
|
||||||
return getEntry(entry.getKind(), entry.getName(), null, ((ICExclusionPatternPathEntry)entry).getExclusionPatterns(), entry.getFlags(), entry, true);
|
return getEntry(entry.getKind(), entry.getName(), null, ((ICExclusionPatternPathEntry)entry).getExclusionPatterns(), entry.getFlags(), entry, true);
|
||||||
default:
|
default:
|
||||||
return getLanguageSettingEntry((ICLanguageSettingEntry)entry);
|
return getLanguageSettingEntry((ICLanguageSettingEntry)entry);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public ICLanguageSettingEntry getLanguageSettingEntry(ICLanguageSettingEntry lEntry){
|
public ICLanguageSettingEntry getLanguageSettingEntry(ICLanguageSettingEntry lEntry){
|
||||||
return (ICLanguageSettingEntry)getEntry(lEntry.getKind(), lEntry.getName(), lEntry.getValue(), null, lEntry.getFlags(), lEntry, true);
|
return (ICLanguageSettingEntry)getEntry(lEntry.getKind(), lEntry.getName(), lEntry.getValue(), null, lEntry.getFlags(), lEntry, true);
|
||||||
}
|
}
|
||||||
|
@ -117,7 +121,7 @@ public class CSettingEntryFactory {
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void clear(){
|
public void clear(){
|
||||||
fStore.clear();
|
fStore.clear();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue