1
/*******************************************************************************
2
* Copyright (c) 2009 IBM Corporation and others.
3
* All rights reserved. This program and the accompanying materials
4
* are made available under the terms of the Eclipse Public License v1.0
5
* which accompanies this distribution, and is available at
6
* http://www.eclipse.org/legal/epl-v10.html
9
* IBM Corporation - initial API and implementation
10
*******************************************************************************/
11
package org.eclipse.cdt.build.core.scannerconfig.tests;
15
import junit.framework.Test;
16
import junit.framework.TestSuite;
18
import org.eclipse.cdt.build.core.scannerconfig.CfgInfoContext;
19
import org.eclipse.cdt.build.core.scannerconfig.ICfgScannerConfigBuilderInfo2Set;
20
import org.eclipse.cdt.build.internal.core.scannerconfig2.CfgScannerConfigProfileManager;
21
import org.eclipse.cdt.core.model.CoreModel;
22
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
23
import org.eclipse.cdt.core.settings.model.ICProjectDescription;
24
import org.eclipse.cdt.core.testplugin.util.BaseTestCase;
25
import org.eclipse.cdt.make.core.scannerconfig.IScannerConfigBuilderInfo2;
26
import org.eclipse.cdt.managedbuilder.core.IConfiguration;
27
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
28
import org.eclipse.cdt.managedbuilder.testplugin.ManagedBuildTestHelper;
29
import org.eclipse.core.resources.IProject;
30
import org.eclipse.core.runtime.Assert;
31
import org.eclipse.core.runtime.CoreException;
33
public class CfgScannerConfigProfileManagerTests extends BaseTestCase {
36
public static Test suite() {
37
TestSuite suite = new TestSuite(CfgScannerConfigProfileManagerTests.class.getName());
38
suite.addTestSuite(CfgScannerConfigProfileManagerTests.class);
43
protected void setUp() throws Exception {
44
fProject = ManagedBuildTestHelper.createProject("CfgScannerConfigProfileManagerProj",
45
"cdt.managedbuild.target.gnu.exe");
46
ManagedBuildTestHelper.addManagedBuildNature(fProject);
50
protected void tearDown() throws Exception {
51
ManagedBuildTestHelper.removeProject(fProject.getName());
55
* Basic testing of Config based ScannerConfigProfile management.
57
* This test runs through some of the funcationality used by the DiscoveryTab
58
* @throws CoreException
60
public void testBasicCfgScannerConfigProfileChanges() throws CoreException {
61
ICProjectDescription prjDesc = CoreModel.getDefault().getProjectDescription(fProject);
62
ICConfigurationDescription[] cfgDescs = prjDesc.getConfigurations();
63
assertTrue(cfgDescs.length > 0);
65
IConfiguration cfg0 = ManagedBuildManager.getConfigurationForDescription(cfgDescs[0]);
66
ICfgScannerConfigBuilderInfo2Set scbis = CfgScannerConfigProfileManager.getCfgScannerConfigBuildInfo(cfg0);
68
// Test changing ICfgScannerConfigBuilderInfo2Set settings
69
boolean resCfgTypeDiscovery = scbis.isPerRcTypeDiscovery();
70
scbis.setPerRcTypeDiscovery(!resCfgTypeDiscovery);
72
// Test changing settings on one of the ScannerConfigBuilderInfos
73
Map<CfgInfoContext, IScannerConfigBuilderInfo2> infoMap = scbis.getInfoMap();
74
CfgInfoContext cic = infoMap.entrySet().iterator().next().getKey();
75
IScannerConfigBuilderInfo2 scbi = infoMap.entrySet().iterator().next().getValue();
76
// Get all the settings and invert them
77
boolean autoDiscovery = scbi.isAutoDiscoveryEnabled();
78
scbi.setAutoDiscoveryEnabled(!autoDiscovery);
79
boolean problemReport = scbi.isProblemReportingEnabled();
80
scbi.setProblemReportingEnabled(!problemReport);
81
boolean buildOutputParser = scbi.isBuildOutputParserEnabled();
82
scbi.setBuildOutputParserEnabled(!buildOutputParser);
83
boolean buildOutputFileAction = scbi.isBuildOutputFileActionEnabled();
84
scbi.setBuildOutputFileActionEnabled(!buildOutputFileAction);
85
String buildOutputFilePath = scbi.getBuildOutputFilePath();
86
scbi.setBuildOutputFilePath("dummyFile");
87
// Persist the changes
88
scbis.applyInfo(cic, scbi);
90
// Save the project description
91
CoreModel.getDefault().setProjectDescription(fProject, prjDesc);
95
// Check that the changes have persisted
96
prjDesc = CoreModel.getDefault().getProjectDescription(fProject);
97
cfg0 = ManagedBuildManager.getConfigurationForDescription(prjDesc.getConfigurations()[0]);
98
scbis = CfgScannerConfigProfileManager.getCfgScannerConfigBuildInfo(cfg0);
99
assertTrue(scbis.isPerRcTypeDiscovery() != resCfgTypeDiscovery);
100
scbi = scbis.getInfo(cic);
101
// Check that the changes have persisted
102
Assert.isTrue(autoDiscovery != scbi.isAutoDiscoveryEnabled());
103
Assert.isTrue(problemReport != scbi.isProblemReportingEnabled());
104
Assert.isTrue(buildOutputParser != scbi.isBuildOutputParserEnabled());
105
Assert.isTrue(buildOutputFileAction != scbi.isBuildOutputFileActionEnabled());
106
Assert.isTrue("dummyFile".equals(scbi.getBuildOutputFilePath()));
108
// Test restore defaults
109
scbis.applyInfo(cic, null);
110
// Save the project description
111
CoreModel.getDefault().setProjectDescription(fProject, prjDesc);
112
fProject.close(null);
115
// Check settings are back to original
116
prjDesc = CoreModel.getDefault().getProjectDescription(fProject);
117
cfg0 = ManagedBuildManager.getConfigurationForDescription(prjDesc.getConfigurations()[0]);
118
scbis = CfgScannerConfigProfileManager.getCfgScannerConfigBuildInfo(cfg0);
119
scbi = scbis.getInfo(cic);
120
Assert.isTrue(autoDiscovery == scbi.isAutoDiscoveryEnabled());
121
Assert.isTrue(problemReport == scbi.isProblemReportingEnabled());
122
Assert.isTrue(buildOutputParser == scbi.isBuildOutputParserEnabled());
123
Assert.isTrue(buildOutputFileAction == scbi.isBuildOutputFileActionEnabled());
124
Assert.isTrue(buildOutputFilePath.equals(buildOutputFilePath));