1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-01 14:15:23 +02:00

Patch for Sean Evoy

Tool inheritance test.
This commit is contained in:
John Camelon 2004-02-27 15:59:47 +00:00
parent 440660c80b
commit d6a96dd12e
3 changed files with 1589 additions and 1483 deletions

File diff suppressed because it is too large Load diff

View file

@ -895,6 +895,19 @@ public class ManagedBuildTests extends TestCase {
* @param testSubSub
*/
private void checkSubSubTarget(ITarget target) {
final String indyToolName = "Target Independent Tool";
final String indyToolCommand = "RC.EXE";
final String indyToolInputExt = "rc";
final String indyToolOutputExt = "free";
final String indyToolOutFlag = "/fo";
final String indyToolHeader = "h";
final String indyToolHeaderNot = "j";
final String indyCatOne = "Free";
final String indyCatTwo = "Chained";
final String freeOptName = "String in Free";
final String chainedOptName = "Boolean in Chained";
final String freeOptValue = "Live free or die";
// Check the inherited clean command
assertEquals("rm -yourworld", target.getCleanCommand());
// Check that the make command is overridden from parent
@ -904,6 +917,53 @@ public class ManagedBuildTests extends TestCase {
// Make sure the list is inherited
String[] expectedOSList = {"win32","linux","solaris"};
assertTrue(Arrays.equals(expectedOSList, target.getTargetOSList()));
// Get the 4 configurations
IConfiguration[] configs = target.getConfigurations();
assertEquals(4, configs.length);
// Check the tools. We should have 3 (1 from each parent and the one referenced).
ITool[] tools = target.getTools();
assertEquals(3, tools.length);
// Make sure we get all the tool settings
assertEquals(tools[2].getName(), indyToolName);
assertEquals(tools[2].getToolCommand(), indyToolCommand);
assertTrue(tools[2].buildsFileType(indyToolInputExt));
assertEquals(tools[2].getOutputExtension(indyToolInputExt), indyToolOutputExt);
assertEquals(tools[2].getOutputFlag(), indyToolOutFlag);
assertTrue(tools[2].isHeaderFile(indyToolHeader));
assertFalse(tools[2].isHeaderFile(indyToolHeaderNot));
assertEquals(tools[2].getNatureFilter(), ITool.FILTER_BOTH);
// Check out the referenced tool and make sure we get all option categories
IOptionCategory topCategory = tools[2].getTopOptionCategory();
IOptionCategory[] categories = topCategory.getChildCategories();
assertEquals(1, categories.length);
assertEquals(categories[0].getName(), indyCatOne);
IOptionCategory[] subCategories = categories[0].getChildCategories();
// Is the chained category a subcategory
assertEquals(1, subCategories.length);
assertEquals(subCategories[0].getName(), indyCatTwo);
// Make sure the option in the top category is correct
IOption[] optsInCat = categories[0].getOptions(null);
assertEquals(1, optsInCat.length);
assertEquals(freeOptName, optsInCat[0].getName());
assertEquals(IOption.STRING, optsInCat[0].getValueType());
try {
assertEquals(freeOptValue, optsInCat[0].getStringValue());
} catch (BuildException e1) {
fail("Failed getting string value in subsubtarget :" + e1.getLocalizedMessage());
}
// Do the same for the options in the child cat
IOption[] optsInSubCat = subCategories[0].getOptions(null);
assertEquals(1, optsInSubCat.length);
assertEquals(chainedOptName, optsInSubCat[0].getName());
assertEquals(IOption.BOOLEAN, optsInSubCat[0].getValueType());
try {
assertFalse(optsInSubCat[0].getBooleanValue());
} catch (BuildException e) {
fail("Failure getting boolean value in subsubtarget: " + e.getLocalizedMessage());
}
}
/*

View file

@ -31,6 +31,40 @@
id="buildTest"
name="Tools for Build Test"
point="org.eclipse.cdt.managedbuilder.core.ManagedBuildInfo">
<tool
natureFilter="both"
name="Target Independent Tool"
sources="rc"
headerExtensions="h"
outputFlag="/fo"
command="RC.EXE"
outputs="free"
id="target.independent.tool">
<optionCategory
owner="target.independent.tool"
name="Free"
id="indy.cat.free">
</optionCategory>
<option
defaultValue="Live free or die"
name="String in Free"
category="indy.cat.free"
valueType="string"
id="org.eclipse.cdt.core.tests.option1">
</option>
<optionCategory
owner="indy.cat.free"
name="Chained"
id="indy.cat.chained">
</optionCategory>
<option
defaultValue="false"
name="Boolean in Chained"
category="indy.cat.chained"
valueType="boolean"
id="org.eclipse.cdt.core.tests.option2">
</option>
</tool>
<target
name="Test Root"
id="test.root"
@ -233,6 +267,9 @@
defaultExtension="tss"
makeCommand="nmake"
id="test.sub.sub">
<toolReference
id="target.independent.tool">
</toolReference>
</target>
</extension>
<extension
@ -244,22 +281,23 @@
</run>
</application>
</extension>
<extension
<extension
id="TestProject"
name="C/C++ Test Project"
point="org.eclipse.cdt.core.CProject">
<cproject
class="org.eclipse.cdt.testplugin.TestProject">
</cproject>
</extension>
<extension
id="TestScanner"
name="C/C++ Test Scanner"
point="org.eclipse.cdt.core.ScannerInfoProvider">
<cextension>
<run
class="org.eclipse.cdt.testplugin.TestScannerProvider">
</run>
</cextension>
</extension>
</extension>
<extension
id="TestScanner"
name="C/C++ Test Scanner"
point="org.eclipse.cdt.core.ScannerInfoProvider">
<cextension>
<run
class="org.eclipse.cdt.testplugin.TestScannerProvider">
</run>
</cextension>
</extension>
</plugin>