mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Do not allow changing list of providers for read-only configuration
description
This commit is contained in:
parent
4ab906dea6
commit
13efdec7b7
3 changed files with 81 additions and 22 deletions
|
@ -24,6 +24,7 @@ import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
|
|||
import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
|
||||
import org.eclipse.cdt.core.settings.model.ICProjectDescription;
|
||||
import org.eclipse.cdt.core.settings.model.ICProjectDescriptionManager;
|
||||
import org.eclipse.cdt.core.settings.model.WriteAccessException;
|
||||
import org.eclipse.cdt.core.testplugin.CModelMock;
|
||||
import org.eclipse.cdt.core.testplugin.ResourceHelper;
|
||||
import org.eclipse.cdt.internal.core.XmlUtil;
|
||||
|
@ -175,6 +176,26 @@ public class LanguageSettingsPersistenceProjectTests extends TestCase {
|
|||
// test passes if no exception was thrown
|
||||
}
|
||||
|
||||
/**
|
||||
*/
|
||||
public void testReadOnlyDescription() throws Exception {
|
||||
// create a project
|
||||
IProject project = ResourceHelper.createCDTProjectWithConfig(getName());
|
||||
// get read-only description
|
||||
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, false);
|
||||
assertNotNull(prjDescription);
|
||||
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
|
||||
assertNotNull(cfgDescription);
|
||||
|
||||
try {
|
||||
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
|
||||
cfgDescription.setLanguageSettingProviders(providers);
|
||||
fail("WriteAccessException was expected but it was not throw.");
|
||||
} catch (WriteAccessException e) {
|
||||
// exception is expected
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*/
|
||||
public void testWorkspacePersistence_ModifiedExtensionProvider() throws Exception {
|
||||
|
|
|
@ -51,6 +51,10 @@ public class LanguageSettingsScannerInfoProviderTests extends TestCase {
|
|||
private static final String PROVIDER_ID = "test.provider.id";
|
||||
private static final String PROVIDER_ID_2 = "test.provider.id.2";
|
||||
private static final String PROVIDER_NAME = "test.provider.name";
|
||||
|
||||
// constants for getProjectDescription()
|
||||
private static final boolean READ_ONLY = false;
|
||||
private static final boolean WRITEABLE = true;
|
||||
|
||||
private class MockProvider extends LanguageSettingsBaseProvider implements ILanguageSettingsProvider {
|
||||
private final List<ICLanguageSettingEntry> entries;
|
||||
|
@ -106,7 +110,7 @@ public class LanguageSettingsScannerInfoProviderTests extends TestCase {
|
|||
private void setBuilderCWD(IProject project, IPath buildCWD) throws CoreException {
|
||||
CProjectDescriptionManager manager = CProjectDescriptionManager.getInstance();
|
||||
{
|
||||
ICProjectDescription prjDescription = manager.getProjectDescription(project, true);
|
||||
ICProjectDescription prjDescription = manager.getProjectDescription(project, WRITEABLE);
|
||||
assertNotNull(prjDescription);
|
||||
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
|
||||
assertNotNull(cfgDescription);
|
||||
|
@ -119,7 +123,7 @@ public class LanguageSettingsScannerInfoProviderTests extends TestCase {
|
|||
}
|
||||
{
|
||||
// triplecheck builderCWD for different project/configuration descriptions
|
||||
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, false);
|
||||
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, READ_ONLY);
|
||||
assertNotNull(prjDescription);
|
||||
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
|
||||
assertNotNull(cfgDescription);
|
||||
|
@ -148,7 +152,7 @@ public class LanguageSettingsScannerInfoProviderTests extends TestCase {
|
|||
{
|
||||
// Handle prjDescription==null
|
||||
IProject project = FAKE_FILE.getProject();
|
||||
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, false);
|
||||
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, READ_ONLY);
|
||||
assertNull(prjDescription);
|
||||
|
||||
LanguageSettingsScannerInfoProvider scannerInfoProvider = new LanguageSettingsScannerInfoProvider();
|
||||
|
@ -166,7 +170,7 @@ public class LanguageSettingsScannerInfoProviderTests extends TestCase {
|
|||
IProject project = ResourceHelper.createCDTProjectWithConfig(getName());
|
||||
IFile file = ResourceHelper.createFile(project, "file");
|
||||
|
||||
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, false);
|
||||
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, READ_ONLY);
|
||||
assertNotNull(prjDescription);
|
||||
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
|
||||
assertNotNull(cfgDescription);
|
||||
|
@ -191,7 +195,7 @@ public class LanguageSettingsScannerInfoProviderTests extends TestCase {
|
|||
IFile file = ResourceHelper.createFile(project, "file.c");
|
||||
|
||||
// confirm that language==null
|
||||
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, false);
|
||||
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, READ_ONLY);
|
||||
assertNotNull(prjDescription);
|
||||
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
|
||||
assertNotNull(cfgDescription);
|
||||
|
@ -213,7 +217,7 @@ public class LanguageSettingsScannerInfoProviderTests extends TestCase {
|
|||
public void testRegular() throws Exception {
|
||||
// create a project
|
||||
IProject project = ResourceHelper.createCDTProjectWithConfig(getName());
|
||||
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, false);
|
||||
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, WRITEABLE);
|
||||
assertNotNull(prjDescription);
|
||||
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
|
||||
assertNotNull(cfgDescription);
|
||||
|
@ -250,6 +254,9 @@ public class LanguageSettingsScannerInfoProviderTests extends TestCase {
|
|||
providers.add(provider);
|
||||
cfgDescription.setLanguageSettingProviders(providers);
|
||||
|
||||
// set project description
|
||||
CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescription);
|
||||
|
||||
// test that the scannerInfoProvider gets the entries
|
||||
LanguageSettingsScannerInfoProvider scannerInfoProvider = new LanguageSettingsScannerInfoProvider();
|
||||
ExtendedScannerInfo info = scannerInfoProvider.getScannerInformation(file);
|
||||
|
@ -281,7 +288,7 @@ public class LanguageSettingsScannerInfoProviderTests extends TestCase {
|
|||
public void testLocal() throws Exception {
|
||||
// create a project
|
||||
IProject project = ResourceHelper.createCDTProjectWithConfig(getName());
|
||||
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, false);
|
||||
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, WRITEABLE);
|
||||
assertNotNull(prjDescription);
|
||||
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
|
||||
assertNotNull(cfgDescription);
|
||||
|
@ -310,6 +317,9 @@ public class LanguageSettingsScannerInfoProviderTests extends TestCase {
|
|||
providers.add(provider);
|
||||
cfgDescription.setLanguageSettingProviders(providers);
|
||||
|
||||
// set project description
|
||||
CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescription);
|
||||
|
||||
// test that the scannerInfoProvider gets the entries
|
||||
LanguageSettingsScannerInfoProvider scannerInfoProvider = new LanguageSettingsScannerInfoProvider();
|
||||
ExtendedScannerInfo info = scannerInfoProvider.getScannerInformation(file);
|
||||
|
@ -331,7 +341,7 @@ public class LanguageSettingsScannerInfoProviderTests extends TestCase {
|
|||
public void testFramework() throws Exception {
|
||||
// create a project
|
||||
IProject project = ResourceHelper.createCDTProjectWithConfig(getName());
|
||||
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, false);
|
||||
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, WRITEABLE);
|
||||
assertNotNull(prjDescription);
|
||||
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
|
||||
assertNotNull(cfgDescription);
|
||||
|
@ -351,7 +361,10 @@ public class LanguageSettingsScannerInfoProviderTests extends TestCase {
|
|||
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
|
||||
providers.add(provider);
|
||||
cfgDescription.setLanguageSettingProviders(providers);
|
||||
|
||||
|
||||
// set project description
|
||||
CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescription);
|
||||
|
||||
// test that the scannerInfoProvider gets the entries
|
||||
LanguageSettingsScannerInfoProvider scannerInfoProvider = new LanguageSettingsScannerInfoProvider();
|
||||
ExtendedScannerInfo info = scannerInfoProvider.getScannerInformation(file);
|
||||
|
@ -370,7 +383,7 @@ public class LanguageSettingsScannerInfoProviderTests extends TestCase {
|
|||
public void testDuplicate() throws Exception {
|
||||
// create a project
|
||||
IProject project = ResourceHelper.createCDTProjectWithConfig(getName());
|
||||
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, false);
|
||||
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, WRITEABLE);
|
||||
assertNotNull(prjDescription);
|
||||
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
|
||||
assertNotNull(cfgDescription);
|
||||
|
@ -397,6 +410,9 @@ public class LanguageSettingsScannerInfoProviderTests extends TestCase {
|
|||
providers.add(provider);
|
||||
cfgDescription.setLanguageSettingProviders(providers);
|
||||
|
||||
// set project description
|
||||
CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescription);
|
||||
|
||||
// test that the scannerInfoProvider gets the entries
|
||||
LanguageSettingsScannerInfoProvider scannerInfoProvider = new LanguageSettingsScannerInfoProvider();
|
||||
ExtendedScannerInfo info = scannerInfoProvider.getScannerInformation(file);
|
||||
|
@ -416,7 +432,7 @@ public class LanguageSettingsScannerInfoProviderTests extends TestCase {
|
|||
public void testWorkspacePath() throws Exception {
|
||||
// create a project
|
||||
IProject project = ResourceHelper.createCDTProjectWithConfig(getName());
|
||||
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, false);
|
||||
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, WRITEABLE);
|
||||
assertNotNull(prjDescription);
|
||||
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
|
||||
assertNotNull(cfgDescription);
|
||||
|
@ -454,6 +470,9 @@ public class LanguageSettingsScannerInfoProviderTests extends TestCase {
|
|||
providers.add(provider);
|
||||
cfgDescription.setLanguageSettingProviders(providers);
|
||||
|
||||
// set project description
|
||||
CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescription);
|
||||
|
||||
// test the entries received from the scannerInfoProvider
|
||||
LanguageSettingsScannerInfoProvider scannerInfoProvider = new LanguageSettingsScannerInfoProvider();
|
||||
ExtendedScannerInfo info = scannerInfoProvider.getScannerInformation(file);
|
||||
|
@ -481,7 +500,7 @@ public class LanguageSettingsScannerInfoProviderTests extends TestCase {
|
|||
// String buildCwdDevice = buildCWD.getDevice();
|
||||
|
||||
// get project/configuration descriptions
|
||||
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, false);
|
||||
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, WRITEABLE);
|
||||
assertNotNull(prjDescription);
|
||||
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
|
||||
assertNotNull(cfgDescription);
|
||||
|
@ -502,6 +521,9 @@ public class LanguageSettingsScannerInfoProviderTests extends TestCase {
|
|||
providers.add(provider);
|
||||
cfgDescription.setLanguageSettingProviders(providers);
|
||||
|
||||
// set project description
|
||||
CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescription);
|
||||
|
||||
// test the entries received from the scannerInfoProvider
|
||||
LanguageSettingsScannerInfoProvider scannerInfoProvider = new LanguageSettingsScannerInfoProvider();
|
||||
ExtendedScannerInfo info = scannerInfoProvider.getScannerInformation(file);
|
||||
|
@ -529,7 +551,7 @@ public class LanguageSettingsScannerInfoProviderTests extends TestCase {
|
|||
setBuilderCWD(project, buildCWD);
|
||||
|
||||
// get project/configuration descriptions
|
||||
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, false);
|
||||
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, WRITEABLE);
|
||||
assertNotNull(prjDescription);
|
||||
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
|
||||
assertNotNull(cfgDescription);
|
||||
|
@ -552,6 +574,9 @@ public class LanguageSettingsScannerInfoProviderTests extends TestCase {
|
|||
providers.add(provider);
|
||||
cfgDescription.setLanguageSettingProviders(providers);
|
||||
|
||||
// set project description
|
||||
CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescription);
|
||||
|
||||
// test the entries received from the scannerInfoProvider
|
||||
LanguageSettingsScannerInfoProvider scannerInfoProvider = new LanguageSettingsScannerInfoProvider();
|
||||
ExtendedScannerInfo info = scannerInfoProvider.getScannerInformation(file);
|
||||
|
@ -595,7 +620,7 @@ public class LanguageSettingsScannerInfoProviderTests extends TestCase {
|
|||
IFolder incFolder_dotdot_slash_path = ResourceHelper.createFolder(project, "include2"); // "/ProjPath/buildDir/../include2"
|
||||
|
||||
// get project/configuration descriptions
|
||||
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, false);
|
||||
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, WRITEABLE);
|
||||
assertNotNull(prjDescription);
|
||||
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
|
||||
assertNotNull(cfgDescription);
|
||||
|
@ -628,6 +653,9 @@ public class LanguageSettingsScannerInfoProviderTests extends TestCase {
|
|||
providers.add(provider);
|
||||
cfgDescription.setLanguageSettingProviders(providers);
|
||||
|
||||
// set project description
|
||||
CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescription);
|
||||
|
||||
// test the entries received from the scannerInfoProvider
|
||||
LanguageSettingsScannerInfoProvider scannerInfoProvider = new LanguageSettingsScannerInfoProvider();
|
||||
ExtendedScannerInfo info = scannerInfoProvider.getScannerInformation(file);
|
||||
|
@ -674,7 +702,7 @@ public class LanguageSettingsScannerInfoProviderTests extends TestCase {
|
|||
String envPathStr = "${ProjDirPath}/Folder";
|
||||
|
||||
// get project/configuration descriptions
|
||||
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, false);
|
||||
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, WRITEABLE);
|
||||
assertNotNull(prjDescription);
|
||||
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
|
||||
assertNotNull(cfgDescription);
|
||||
|
@ -693,6 +721,9 @@ public class LanguageSettingsScannerInfoProviderTests extends TestCase {
|
|||
providers.add(provider);
|
||||
cfgDescription.setLanguageSettingProviders(providers);
|
||||
|
||||
// set project description
|
||||
CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescription);
|
||||
|
||||
// test the entries received from the scannerInfoProvider
|
||||
LanguageSettingsScannerInfoProvider scannerInfoProvider = new LanguageSettingsScannerInfoProvider();
|
||||
ExtendedScannerInfo info = scannerInfoProvider.getScannerInformation(file);
|
||||
|
@ -726,7 +757,7 @@ public class LanguageSettingsScannerInfoProviderTests extends TestCase {
|
|||
|
||||
// create a project
|
||||
IProject project = ResourceHelper.createCDTProjectWithConfig(getName());
|
||||
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, false);
|
||||
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, WRITEABLE);
|
||||
assertNotNull(prjDescription);
|
||||
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
|
||||
assertNotNull(cfgDescription);
|
||||
|
@ -751,6 +782,9 @@ public class LanguageSettingsScannerInfoProviderTests extends TestCase {
|
|||
providers.add(provider);
|
||||
cfgDescription.setLanguageSettingProviders(providers);
|
||||
|
||||
// set project description
|
||||
CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescription);
|
||||
|
||||
// test that the scannerInfoProvider gets the entries for
|
||||
LanguageSettingsScannerInfoProvider scannerInfoProvider = new LanguageSettingsScannerInfoProvider();
|
||||
ExtendedScannerInfo info = scannerInfoProvider.getScannerInformation(file);
|
||||
|
@ -770,7 +804,7 @@ public class LanguageSettingsScannerInfoProviderTests extends TestCase {
|
|||
String envPathStr = "${ProjDirPath}/Folder";
|
||||
|
||||
// get project/configuration descriptions
|
||||
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, false);
|
||||
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, WRITEABLE);
|
||||
assertNotNull(prjDescription);
|
||||
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
|
||||
assertNotNull(cfgDescription);
|
||||
|
@ -788,6 +822,9 @@ public class LanguageSettingsScannerInfoProviderTests extends TestCase {
|
|||
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>();
|
||||
providers.add(provider);
|
||||
cfgDescription.setLanguageSettingProviders(providers);
|
||||
|
||||
// set project description
|
||||
CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescription);
|
||||
|
||||
// test the entries received from the scannerInfoProvider
|
||||
LanguageSettingsScannerInfoProvider scannerInfoProvider = new LanguageSettingsScannerInfoProvider();
|
||||
|
@ -848,7 +885,7 @@ public class LanguageSettingsScannerInfoProviderTests extends TestCase {
|
|||
IFolder incFolderC = ResourceHelper.createFolder(project, "includeC");
|
||||
|
||||
// get project/configuration descriptions
|
||||
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, false);
|
||||
ICProjectDescription prjDescription = CProjectDescriptionManager.getInstance().getProjectDescription(project, WRITEABLE);
|
||||
assertNotNull(prjDescription);
|
||||
ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
|
||||
assertNotNull(cfgDescription);
|
||||
|
@ -878,6 +915,9 @@ public class LanguageSettingsScannerInfoProviderTests extends TestCase {
|
|||
providers.add(provider2);
|
||||
cfgDescription.setLanguageSettingProviders(providers);
|
||||
|
||||
// set project description
|
||||
CProjectDescriptionManager.getInstance().setProjectDescription(project, prjDescription);
|
||||
|
||||
// test the entries received from the scannerInfoProvider
|
||||
LanguageSettingsScannerInfoProvider scannerInfoProvider = new LanguageSettingsScannerInfoProvider();
|
||||
ExtendedScannerInfo info = scannerInfoProvider.getScannerInformation(folder);
|
||||
|
|
|
@ -559,10 +559,8 @@ public class CConfigurationDescriptionCache extends CDefaultConfigurationData
|
|||
}
|
||||
|
||||
public void setLanguageSettingProviders(List<ILanguageSettingsProvider> providers) {
|
||||
// FIXME? - not sure
|
||||
// if(!fInitializing)
|
||||
// throw ExceptionFactory.createIsReadOnlyException();
|
||||
|
||||
if(!fInitializing)
|
||||
throw ExceptionFactory.createIsReadOnlyException();
|
||||
fSpecSettings.setLanguageSettingProviders(providers);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue