diff options
Diffstat (limited to 'core/org.eclipse.cdt.core.tests/build/org/eclipse/cdt/core/build/managed/tests/ManagedBuildTests.java')
-rw-r--r-- | core/org.eclipse.cdt.core.tests/build/org/eclipse/cdt/core/build/managed/tests/ManagedBuildTests.java | 780 |
1 files changed, 0 insertions, 780 deletions
diff --git a/core/org.eclipse.cdt.core.tests/build/org/eclipse/cdt/core/build/managed/tests/ManagedBuildTests.java b/core/org.eclipse.cdt.core.tests/build/org/eclipse/cdt/core/build/managed/tests/ManagedBuildTests.java deleted file mode 100644 index 1f83ecd6458..00000000000 --- a/core/org.eclipse.cdt.core.tests/build/org/eclipse/cdt/core/build/managed/tests/ManagedBuildTests.java +++ /dev/null @@ -1,780 +0,0 @@ -/********************************************************************** - * Copyright (c) 2003 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v10.html - * - * Contributors: - * IBM - Initial API and implementation - **********************************************************************/ -package org.eclipse.cdt.core.build.managed.tests; - -import java.util.Arrays; -import java.util.List; -import java.util.Map; - -import junit.framework.Test; -import junit.framework.TestCase; -import junit.framework.TestSuite; - -import org.eclipse.cdt.core.CCorePlugin; -import org.eclipse.cdt.core.ICDescriptor; -import org.eclipse.cdt.core.ManagedCProjectNature; -import org.eclipse.cdt.core.build.managed.BuildException; -import org.eclipse.cdt.core.build.managed.IConfiguration; -import org.eclipse.cdt.core.build.managed.IManagedBuildInfo; -import org.eclipse.cdt.core.build.managed.IOption; -import org.eclipse.cdt.core.build.managed.IOptionCategory; -import org.eclipse.cdt.core.build.managed.ITarget; -import org.eclipse.cdt.core.build.managed.ITool; -import org.eclipse.cdt.core.build.managed.ManagedBuildManager; -import org.eclipse.cdt.core.parser.IScannerInfo; -import org.eclipse.cdt.core.parser.IScannerInfoChangeListener; -import org.eclipse.cdt.core.parser.IScannerInfoProvider; -import org.eclipse.cdt.internal.core.build.managed.ToolReference; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IProjectDescription; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.IWorkspace; -import org.eclipse.core.resources.IWorkspaceRoot; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IExtensionPoint; -import org.eclipse.core.runtime.NullProgressMonitor; - -public class ManagedBuildTests extends TestCase { - private static final boolean boolVal = true; - private static final String PROJECT_ID = CCorePlugin.PLUGIN_ID + ".make"; - private static final String testConfigName = "test.config.override"; - private static final String enumVal = "Another Enum"; - private static final String[] listVal = {"_DEBUG", "/usr/include", "libglade.a"}; - private static final String projectName = "ManagedBuildTest"; - private static final String rootExt = "toor"; - private static final String stringVal = "-c -Wall"; - private static final String subExt = "bus"; - - public ManagedBuildTests(String name) { - super(name); - } - - public static Test suite() { - TestSuite suite = new TestSuite(ManagedBuildTests.class.getName()); - - suite.addTest(new ManagedBuildTests("testExtensions")); - suite.addTest(new ManagedBuildTests("testProjectCreation")); - suite.addTest(new ManagedBuildTests("testConfigurations")); - suite.addTest(new ManagedBuildTests("testTargetArtifacts")); - suite.addTest(new ManagedBuildTests("testScannerInfoInterface")); - suite.addTest(new ManagedBuildTests("cleanup")); - - return suite; - } - - /** - * Navigates through the build info as defined in the extensions - * defined in this plugin - */ - public void testExtensions() throws Exception { - ITarget testRoot = null; - ITarget testSub = null; - ITarget testSubSub = null; - - // Note secret null parameter which means just extensions - ITarget[] targets = ManagedBuildManager.getDefinedTargets(null); - - for (int i = 0; i < targets.length; ++i) { - ITarget target = targets[i]; - - if (target.getName().equals("Test Root")) { - testRoot = target; - checkRootTarget(testRoot, "x"); - } else if (target.getName().equals("Test Sub")) { - testSub = target; - checkSubTarget(testSub); - } else if (target.getName().equals("Test Sub Sub")) { - testSubSub = target; - checkSubSubTarget(testSubSub); - } - } - // All these targets are defines in the plugin files, so none - // of them should be null at this point - assertNotNull(testRoot); - assertNotNull(testSub); - assertNotNull(testSubSub); - } - - - /** - * The purpose of this test is to exercise the build path info interface. - * To get to that point, a new target/config has to be created in the test - * project and the default configuration changed. - * - * @throws CoreException - */ - public void testScannerInfoInterface(){ - // These are the expected path settings - final String[] expectedPaths = {"/usr/gnu/include", "/usr/include", "/opt/gnome/include", "C:\\home\\tester/include"}; - - // Open the test project - IProject project = null; - try { - project = createProject(projectName); - } catch (CoreException e) { - fail("Failed to open project: " + e.getLocalizedMessage()); - } - - // Create a new target in the project based on the sub target - ITarget baseTarget = ManagedBuildManager.getTarget(project, "test.sub"); - assertNotNull(baseTarget); - ITarget newTarget = null; - try { - newTarget = ManagedBuildManager.createTarget(project, baseTarget); - } catch (BuildException e) { - fail("Failed adding new target to project: " + e.getLocalizedMessage()); - } - assertNotNull(newTarget); - // Copy over the configs - IConfiguration[] baseConfigs = baseTarget.getConfigurations(); - for (int i = 0; i < baseConfigs.length; ++i) { - newTarget.createConfiguration(baseConfigs[i], baseConfigs[i].getId() + "." + i); - } - - // Change the default configuration to the sub config - IConfiguration[] configs = newTarget.getConfigurations(); - assertEquals(3, configs.length); - IManagedBuildInfo buildInfo = ManagedBuildManager.getBuildInfo(project); - buildInfo.setDefaultConfiguration(newTarget.getConfiguration("sub.config.2")); - - // Use the plugin mechanism to discover the supplier of the path information - IExtensionPoint extensionPoint = CCorePlugin.getDefault().getDescriptor().getExtensionPoint("ScannerInfoProvider"); - if (extensionPoint == null) { - fail("Failed to retrieve the extension point ScannerInfoProvider."); - } - - // Find the first IScannerInfoProvider that supplies build info for the project - IScannerInfoProvider provider = CCorePlugin.getDefault().getScannerInfoProvider(project); - assertNotNull(provider); - - // Check the build information right away - IScannerInfo currentSettings = provider.getScannerInformation(project); - Map currentSymbols = currentSettings.getDefinedSymbols(); - // It should simply contain the built-in - assertTrue(currentSymbols.containsKey("BUILTIN")); - assertEquals((String)currentSymbols.get("BUILTIN"), ""); - String[] currentPaths = currentSettings.getIncludePaths(); - assertTrue(Arrays.equals(expectedPaths, currentPaths)); - - // Now subscribe (note that the method will be called after a change - provider.subscribe(project, new IScannerInfoChangeListener () { - public void changeNotification(IResource project, IScannerInfo info) { - // Test the symbols: expect "BUILTIN" from the manifest, and "DEBUG" and "GNOME=ME" - // from the overidden settings - Map definedSymbols = info.getDefinedSymbols(); - assertTrue(definedSymbols.containsKey("BUILTIN")); - assertTrue(definedSymbols.containsKey("DEBUG")); - assertTrue(definedSymbols.containsKey("GNOME")); - assertTrue(definedSymbols.containsValue("ME")); - assertEquals((String)definedSymbols.get("BUILTIN"), ""); - assertEquals((String)definedSymbols.get("DEBUG"), ""); - assertEquals((String)definedSymbols.get("GNOME"), "ME"); - // Test the includes path - String[] actualPaths = info.getIncludePaths(); - assertTrue(Arrays.equals(expectedPaths, actualPaths)); - } - }); - - // Add some defined symbols programmatically - String[] expectedSymbols = {"DEBUG", "GNOME = ME "}; - IConfiguration defaultConfig = buildInfo.getDefaultConfiguration(newTarget); - ITool[] tools = defaultConfig.getTools(); - ITool subTool = null; - for (int i = 0; i < tools.length; i++) { - ITool tool = tools[i]; - if("tool.sub".equalsIgnoreCase(tool.getId())) { - subTool = tool; - break; - } - } - assertNotNull(subTool); - IOption symbolOpt = null; - IOption[] opts = subTool.getOptions(); - for (int i = 0; i < opts.length; i++) { - IOption option = opts[i]; - if (option.getValueType() == IOption.PREPROCESSOR_SYMBOLS) { - symbolOpt = option; - break; - } - } - assertNotNull(symbolOpt); - ManagedBuildManager.setOption(defaultConfig, symbolOpt, expectedSymbols); - } - - /** - * Create a new configuration based on one defined in the plugin file. - * Overrides all of the configuration settings. Saves, closes, and reopens - * the project. Then calls a method to check the overridden options. - * - * Tests creating a new configuration. - * Tests setting options. - * Tests persisting overridden options between project sessions. - * - */ - public void testConfigurations() throws CoreException, BuildException { - // Open the test project - IProject project = createProject(projectName); - - // Make sure there is one and only one target with 2 configs - ITarget[] definedTargets = ManagedBuildManager.getTargets(project); - assertEquals(1, definedTargets.length); - ITarget rootTarget = definedTargets[0]; - IConfiguration[] definedConfigs = rootTarget.getConfigurations(); - assertEquals(2, definedConfigs.length); - IConfiguration baseConfig = definedConfigs[0]; - - // Create a new configuration - IConfiguration newConfig = rootTarget.createConfiguration(baseConfig, testConfigName); - assertEquals(3, rootTarget.getConfigurations().length); - - // There is only one tool - ITool[] definedTools = newConfig.getTools(); - assertEquals(1, definedTools.length); - ITool rootTool = definedTools[0]; - - // Override options in the new configuration - IOptionCategory topCategory = rootTool.getTopOptionCategory(); - assertEquals("Root Tool", topCategory.getName()); - IOption[] options = topCategory.getOptions(null); - assertEquals(2, options.length); - ManagedBuildManager.setOption(newConfig, options[0], listVal); - ManagedBuildManager.setOption(newConfig, options[1], boolVal); - - IOptionCategory[] categories = topCategory.getChildCategories(); - assertEquals(1, categories.length); - options = categories[0].getOptions(null); - assertEquals(2, options.length); - ManagedBuildManager.setOption(newConfig, options[0], stringVal); - ManagedBuildManager.setOption(newConfig, options[1], enumVal); - - // Save, close, reopen and test again - ManagedBuildManager.saveBuildInfo(project); - project.close(null); - ManagedBuildManager.removeBuildInfo(project); - project.open(null); - - // Test the values in the new configuration - checkOptionReferences(project); - } - - /** - * @throws CoreException - * @throws BuildException - */ - public void testProjectCreation() throws BuildException { - // Create new project - IProject project = null; - try { - project = createProject(projectName); - // Now associate the builder with the project - addManagedBuildNature(project); - } catch (CoreException e) { - fail("Test failed on project creation: " + e.getLocalizedMessage()); - } - // There should not be any targets defined for this project yet - assertEquals(0, ManagedBuildManager.getTargets(project).length); - - // Find the base target definition - ITarget targetDef = ManagedBuildManager.getTarget(project, "test.root"); - assertNotNull(targetDef); - - // Create the target for our project that builds a dummy executable - ITarget newTarget = ManagedBuildManager.createTarget(project, targetDef); - assertEquals(newTarget.getName(), targetDef.getName()); - assertFalse(newTarget.equals(targetDef)); - String buildArtifactName = projectName + "." + newTarget.getDefaultExtension(); - newTarget.setBuildArtifact(buildArtifactName); - - ITarget[] targets = ManagedBuildManager.getTargets(project); - assertEquals(1, targets.length); - ITarget target = targets[0]; - assertEquals(target, newTarget); - assertFalse(target.equals(targetDef)); - - // Copy over the configs - IConfiguration defaultConfig = null; - IConfiguration[] configs = targetDef.getConfigurations(); - for (int i = 0; i < configs.length; ++i) { - // Make the first configuration the default - if (i == 0) { - defaultConfig = target.createConfiguration(configs[i], target.getId() + "." + i); - } else { - target.createConfiguration(configs[i], target.getId() + "." + i); - } - } - ManagedBuildManager.setDefaultConfiguration(project, defaultConfig); - checkRootTarget(target, "x"); - - // Override the "String Option in Category" option value - configs = target.getConfigurations(); - ITool[] tools = configs[0].getTools(); - IOptionCategory topCategory = tools[0].getTopOptionCategory(); - IOptionCategory[] categories = topCategory.getChildCategories(); - IOption[] options = categories[0].getOptions(configs[0]); - configs[0].setOption(options[0], "z"); - options = categories[0].getOptions(null); - assertEquals("x", options[0].getStringValue()); - options = categories[0].getOptions(configs[0]); - assertEquals("z", options[0].getStringValue()); - - // Save, close, reopen and test again - ManagedBuildManager.saveBuildInfo(project); - try { - project.close(null); - } catch (CoreException e) { - fail("Failed on project close: " + e.getLocalizedMessage()); - } - ManagedBuildManager.removeBuildInfo(project); - try { - project.open(null); - } catch (CoreException e) { - fail("Failed on project open: " + e.getLocalizedMessage()); - } - - // Test that the default config was remembered - IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project); - assertEquals(defaultConfig.getId(), info.getDefaultConfiguration(target).getId()); - - // Get the targets - targets = ManagedBuildManager.getTargets(project); - assertEquals(1, targets.length); - // See if the artifact name is remembered - assertEquals(targets[0].getArtifactName(), buildArtifactName); - // Check the rest of the default information - checkRootTarget(targets[0], "z"); - - // Now test the information the makefile builder needs - checkBuildTestSettings(info); - ManagedBuildManager.removeBuildInfo(project); - } - - private void addManagedBuildNature (IProject project) { - // Add the managed build nature - try { - ManagedCProjectNature.addManagedNature(project, new NullProgressMonitor()); - } catch (CoreException e) { - fail("Test failed on adding managed build nature: " + e.getLocalizedMessage()); - } - - // Associate the project with the managed builder so the clients can get proper information - try { - ICDescriptor desc = CCorePlugin.getDefault().getCProjectDescription(project); - desc.remove(CCorePlugin.BUILD_SCANNER_INFO_UNIQ_ID); - desc.create(CCorePlugin.BUILD_SCANNER_INFO_UNIQ_ID, ManagedBuildManager.INTERFACE_IDENTITY); - } catch (CoreException e) { - fail("Test failed on adding managed builder as scanner info provider: " + e.getLocalizedMessage()); - } - } - - /** - * Tests the tool settings through the interface the makefile generator - * uses. - * - * @param project - */ - private void checkBuildTestSettings(IManagedBuildInfo info) { - String ext1 = "foo"; - String ext2 = "bar"; - String badExt = "cpp"; - String expectedOutput = "toor"; - String expectedCmd = "doIt"; - - assertNotNull(info); - assertEquals(info.getBuildArtifactName(), projectName + "." + rootExt); - - // There should be a default configuration defined for the project - ITarget buildTarget = info.getDefaultTarget(); - assertNotNull(buildTarget); - assertEquals(buildTarget.getId(), "test.root.1"); - IConfiguration buildConfig = info.getDefaultConfiguration(buildTarget); - assertNotNull(buildConfig); - assertEquals(buildConfig.getId(), "test.root.1.0"); - - // The default target should be the same as the one-and-only target in the project - List targets = info.getTargets(); - assertEquals(targets.size(), 1); - ITarget target = (ITarget) targets.get(0); - assertEquals(target, buildTarget); - - // Check that tool handles resources with extensions foo and bar by building a baz - assertEquals(info.getOutputExtension(ext1), expectedOutput); - assertEquals(info.getOutputExtension(ext2), expectedOutput); - - // Check that it ignores others based on filename extensions - assertNull(info.getOutputExtension(badExt)); - - // Now see what the tool command line invocation is for foo and bar - assertEquals(info.getToolForSource(ext1), expectedCmd); - assertEquals(info.getToolForSource(ext2), expectedCmd); - // Make sure that there is no tool to build files of type foo and bar - assertNull(info.getToolForTarget(ext1)); - assertNull(info.getToolForTarget(ext2)); - - // There is no target that builds toor - assertNull(info.getToolForSource(expectedOutput)); - // but there is one that produces it - assertEquals(info.getToolForTarget(expectedOutput), expectedCmd); - - // Now check the build flags - assertEquals(info.getFlagsForSource(ext1), "-La -Lb z -e1"); - assertEquals(info.getFlagsForSource(ext1), info.getFlagsForSource(ext2)); - - } - - /** - * Tests that overridden options are properly read into build model. - * Test that option values that are not overridden remain the same. - * - * @param project The project to get build model information for. - * @throws BuildException - */ - private void checkOptionReferences(IProject project) throws BuildException { - // Get the targets out of the project - ITarget[] definedTargets = ManagedBuildManager.getTargets(project); - assertEquals(1, definedTargets.length); - ITarget rootTarget = definedTargets[0]; - - // Now get the configs - IConfiguration[] definedConfigs = rootTarget.getConfigurations(); - assertEquals(3, definedConfigs.length); - IConfiguration newConfig = rootTarget.getConfiguration(testConfigName); - assertNotNull(newConfig); - - // Now get the tool options and make sure the values are correct - ITool[] definedTools = newConfig.getTools(); - assertEquals(1, definedTools.length); - ITool rootTool = definedTools[0]; - - // Check that the options in the new config contain overridden values - IOption[] rootOptions = rootTool.getOptions(); - assertEquals(4, rootOptions.length); - // First is the new list - assertEquals("List Option in Top", rootOptions[0].getName()); - assertEquals(IOption.STRING_LIST, rootOptions[0].getValueType()); - String[] list = rootOptions[0].getStringListValue(); - assertEquals(3, list.length); - assertTrue(Arrays.equals(listVal, list)); - assertEquals(rootOptions[0].getCommand(), "-L"); - // Next option is a boolean in top - assertEquals("Boolean Option in Top", rootOptions[1].getName()); - assertEquals(IOption.BOOLEAN, rootOptions[1].getValueType()); - assertEquals(boolVal, rootOptions[1].getBooleanValue()); - assertEquals("-b", rootOptions[1].getCommand()); - // Next option is a string category - assertEquals("String Option in Category", rootOptions[2].getName()); - assertEquals(IOption.STRING, rootOptions[2].getValueType()); - assertEquals(stringVal, rootOptions[2].getStringValue()); - // Final option is an enumerated - assertEquals("Enumerated Option in Category", rootOptions[3].getName()); - assertEquals(IOption.ENUMERATED, rootOptions[3].getValueType()); - String selEnum = rootOptions[3].getSelectedEnum(); - assertEquals(enumVal, selEnum); - String[] enums = rootOptions[3].getApplicableValues(); - assertEquals(2, enums.length); - assertEquals("Default Enum", enums[0]); - assertEquals("Another Enum", enums[1]); - assertEquals("-e1", rootOptions[3].getEnumCommand(enums[0])); - assertEquals("-e2", rootOptions[3].getEnumCommand(enums[1])); - assertEquals("-e2", rootOptions[3].getEnumCommand(selEnum)); - } - - /* - * Do a full sanity check on the root target. - */ - private void checkRootTarget(ITarget target, String oicValue) throws BuildException { - // Target stuff - String expectedCleanCmd = "del /myworld"; - String expectedMakeCommand = "make"; - assertTrue(target.isTestTarget()); - assertEquals(target.getDefaultExtension(), rootExt); - assertEquals(expectedCleanCmd, target.getCleanCommand()); - assertEquals(expectedMakeCommand, target.getMakeCommand()); - - // Tools - ITool[] tools = target.getTools(); - // Root Tool - ITool rootTool = tools[0]; - assertEquals("Root Tool", rootTool.getName()); - // 4 Options are defined in the root tool - IOption[] options = rootTool.getOptions(); - assertEquals(4, options.length); - // First option is a 3-element list with 1 built-in - assertEquals("List Option in Top", options[0].getName()); - assertEquals(IOption.STRING_LIST, options[0].getValueType()); - String[] valueList = options[0].getStringListValue(); - assertEquals(2, valueList.length); - assertEquals("a", valueList[0]); - assertEquals("b", valueList[1]); - String[] builtInList = options[0].getBuiltIns(); - assertEquals(1, builtInList.length); - assertEquals("c", builtInList[0]); - assertEquals(options[0].getCommand(), "-L"); - // Next option is a boolean in top - assertEquals("Boolean Option in Top", options[1].getName()); - assertEquals(IOption.BOOLEAN, options[1].getValueType()); - assertEquals(false, options[1].getBooleanValue()); - assertEquals("-b", options[1].getCommand()); - // Next option is a string category - assertEquals("String Option in Category", options[2].getName()); - assertEquals(IOption.STRING, options[2].getValueType()); - assertEquals("x", options[2].getStringValue()); - // Final option is an enumerated - assertEquals("Enumerated Option in Category", options[3].getName()); - assertEquals(IOption.ENUMERATED, options[3].getValueType()); - assertEquals("Default Enum", options[3].getSelectedEnum()); - valueList = options[3].getApplicableValues(); - assertEquals(2, valueList.length); - assertEquals("Default Enum", valueList[0]); - assertEquals("Another Enum", valueList[1]); - assertEquals("-e1", options[3].getEnumCommand(valueList[0])); - assertEquals("-e2", options[3].getEnumCommand(valueList[1])); - - // Option Categories - IOptionCategory topCategory = rootTool.getTopOptionCategory(); - assertEquals("Root Tool", topCategory.getName()); - options = topCategory.getOptions(null); - assertEquals(2, options.length); - assertEquals("List Option in Top", options[0].getName()); - assertEquals("Boolean Option in Top", options[1].getName()); - IOptionCategory[] categories = topCategory.getChildCategories(); - assertEquals(1, categories.length); - assertEquals("Category", categories[0].getName()); - options = categories[0].getOptions(null); - assertEquals(2, options.length); - assertEquals("String Option in Category", options[0].getName()); - assertEquals("Enumerated Option in Category", options[1].getName()); - - // Configs - IConfiguration[] configs = target.getConfigurations(); - // Root Config - IConfiguration rootConfig = configs[0]; - assertEquals("Root Config", rootConfig.getName()); - // Tools - tools = rootConfig.getTools(); - assertEquals(1, tools.length); - assertEquals("Root Tool", tools[0].getName()); - assertEquals("-r", tools[0].getOutputFlag()); - assertTrue(tools[0].buildsFileType("foo")); - assertTrue(tools[0].buildsFileType("bar")); - assertTrue(tools[0].producesFileType("toor")); - assertEquals("doIt", tools[0].getToolCommand()); - assertEquals("", tools[0].getOutputPrefix()); - - // Root Override Config - assertEquals("Root Override Config", configs[1].getName()); - tools = configs[1].getTools(); - assertEquals(1, tools.length); - assertTrue(tools[0] instanceof ToolReference); - assertEquals("Root Tool", tools[0].getName()); - topCategory = tools[0].getTopOptionCategory(); - options = topCategory.getOptions(configs[1]); - assertEquals(2, options.length); - assertEquals("List Option in Top", options[0].getName()); - valueList = options[0].getStringListValue(); - assertEquals("a", valueList[0]); - assertEquals("b", valueList[1]); - assertEquals("Boolean Option in Top", options[1].getName()); - categories = topCategory.getChildCategories(); - options = categories[0].getOptions(configs[1]); - assertEquals(2, options.length); - assertEquals("String Option in Category", options[0].getName()); - assertEquals("y", options[0].getStringValue()); - assertEquals("Enumerated Option in Category", options[1].getName()); - valueList = options[1].getApplicableValues(); - assertEquals(2, valueList.length); - assertEquals("Default Enum", valueList[0]); - assertEquals("Another Enum", valueList[1]); - assertEquals("-e1", options[1].getEnumCommand(valueList[0])); - assertEquals("-e2", options[1].getEnumCommand(valueList[1])); - assertEquals(1, tools.length); - assertEquals("Root Tool", tools[0].getName()); - assertEquals("-r", tools[0].getOutputFlag()); - assertTrue(tools[0].buildsFileType("foo")); - assertTrue(tools[0].buildsFileType("bar")); - assertTrue(tools[0].producesFileType("toor")); - assertEquals("doIt", tools[0].getToolCommand()); - } - - /** - * @param testSubSub - */ - private void checkSubSubTarget(ITarget target) { - // Check the inherited clean command - assertEquals("rm -yourworld", target.getCleanCommand()); - assertEquals("nmake", target.getMakeCommand()); - - } - - /* - * Do a sanity check on the values in the sub-target. Most of the - * sanity on the how build model entries are read is performed in - * the root target check, so these tests just verify that the the sub - * target properly inherits from its parent. For the new options - * in the sub target, the test does a sanity check just to be complete. - */ - private void checkSubTarget(ITarget target) throws BuildException { - // Check the overridden clan command - assertEquals("rm -yourworld", target.getCleanCommand()); - assertEquals("gmake", target.getMakeCommand()); - - // Make sure this is a test target - assertTrue(target.isTestTarget()); - // Make sure the build artifact extension is there - assertEquals(target.getDefaultExtension(), subExt); - - // Get the tools for this target - ITool[] tools = target.getTools(); - // Do we inherit properly from parent - ITool rootTool = tools[0]; - assertEquals("Root Tool", rootTool.getName()); - // Now get the tool defined for this target - ITool subTool = tools[1]; - assertEquals("Sub Tool", subTool.getName()); - // Confirm that it has three options - IOption[] subOpts = subTool.getOptions(); - assertEquals(3, subOpts.length); - assertEquals("", subTool.getOutputFlag()); - assertTrue(subTool.buildsFileType("yarf")); - assertTrue(subTool.producesFileType("bus")); - assertEquals("", subTool.getToolCommand()); - assertEquals("lib", subTool.getOutputPrefix()); - - // Do a sanity check on the options - assertEquals("Include Paths", subOpts[0].getName()); - assertEquals(IOption.INCLUDE_PATH, subOpts[0].getValueType()); - String[] incPath = subOpts[0].getIncludePaths(); - assertEquals(2, incPath.length); - assertEquals("/usr/include", incPath[0]); - assertEquals("/opt/gnome/include", incPath[1]); - String[] builtInPaths = subOpts[0].getBuiltIns(); - assertEquals(1, builtInPaths.length); - assertEquals("/usr/gnu/include", builtInPaths[0]); - assertEquals("-I", subOpts[0].getCommand()); - // There are no user-defined preprocessor symbols - assertEquals("Defined Symbols", subOpts[1].getName()); - assertEquals(IOption.PREPROCESSOR_SYMBOLS, subOpts[1].getValueType()); - String[] defdSymbols = subOpts[1].getDefinedSymbols(); - assertEquals(0, defdSymbols.length); - assertEquals("-D", subOpts[1].getCommand()); - // But there is a builtin - String[] builtInSymbols = subOpts[1].getBuiltIns(); - assertEquals(1, builtInSymbols.length); - assertEquals("BUILTIN", builtInSymbols[0]); - assertEquals("More Includes", subOpts[2].getName()); - assertEquals(IOption.INCLUDE_PATH, subOpts[2].getValueType()); - String[] moreIncPath = subOpts[2].getIncludePaths(); - assertEquals(1, moreIncPath.length); - assertEquals("C:\\home\\tester/include", moreIncPath[0]); - assertEquals("-I", subOpts[2].getCommand()); - - // Get the configs for this target - IConfiguration[] configs = target.getConfigurations(); - // Check inheritance - IConfiguration rootConfig = configs[0]; - assertEquals("Root Config", rootConfig.getName()); - assertEquals("Root Override Config", configs[1].getName()); - // Check the defined config for target - IConfiguration subConfig = configs[2]; - assertEquals("Sub Config", subConfig.getName()); - } - - /** - * Remove all the project information associated with the project used during test. - */ - public void cleanup() { - removeProject(projectName); - } - - /** - * Create a new project named <code>name</code> or return the project in - * the workspace of the same name if it exists. - * - * @param name The name of the project to create or retrieve. - * @return - * @throws CoreException - */ - private IProject createProject(String name) throws CoreException { - IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); - IProject newProjectHandle = root.getProject(name); - IProject project = null; - - if (!newProjectHandle.exists()) { - IWorkspace workspace = ResourcesPlugin.getWorkspace(); - IProjectDescription description = workspace.newProjectDescription(newProjectHandle.getName()); - //description.setLocation(root.getLocation()); - project = CCorePlugin.getDefault().createCProject(description, newProjectHandle, new NullProgressMonitor(), PROJECT_ID); - } else { - newProjectHandle.refreshLocal(IResource.DEPTH_INFINITE, null); - project = newProjectHandle; - } - - if (!project.isOpen()) { - project.open(null); - } - - return project; - } - - /** - * Remove the <code>IProject</code> with the name specified in the argument from the - * receiver's workspace. - * - * @param name - */ - private void removeProject(String name) { - IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); - IProject project = root.getProject(name); - if (project.exists()) { - try { - project.delete(true, false, null); - } catch (CoreException e) { - assertTrue(false); - } - } - } - - /** - * Test that the build artifact of a <code>ITarget</code> can be modified - * programmatically. - */ - public void testTargetArtifacts () throws CoreException { - // Open the test project - IProject project = createProject(projectName); - - // Make sure there is one and only one target - ITarget[] definedTargets = ManagedBuildManager.getTargets(project); - assertEquals(1, definedTargets.length); - ITarget rootTarget = definedTargets[0]; - - // Set the build artifact of the target - String ext = rootTarget.getDefaultExtension(); - String name = project.getName() + "." + ext; - rootTarget.setBuildArtifact(name); - - // Save, close, reopen and test again - ManagedBuildManager.saveBuildInfo(project); - project.close(null); - ManagedBuildManager.removeBuildInfo(project); - project.open(null); - - // Make sure there is one and only one target - definedTargets = ManagedBuildManager.getTargets(project); - assertEquals(1, definedTargets.length); - rootTarget = definedTargets[0]; - assertEquals(name, rootTarget.getArtifactName()); - } - - public void testThatAlwaysFails() { - assertTrue(false); - } - -} |