Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildDependencyLibsTests.java')
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildDependencyLibsTests.java586
1 files changed, 293 insertions, 293 deletions
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildDependencyLibsTests.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildDependencyLibsTests.java
index 965ee5a0438..af78d7c8a9a 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildDependencyLibsTests.java
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildDependencyLibsTests.java
@@ -1,294 +1,294 @@
-/*******************************************************************************
- * Copyright (c) 2011, 2012 QNX Software Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * QNX Software Systems - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.managedbuilder.core.tests;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import org.eclipse.cdt.core.model.CoreModel;
-import org.eclipse.cdt.core.settings.model.ICProjectDescription;
-import org.eclipse.cdt.managedbuilder.core.IBuilder;
-import org.eclipse.cdt.managedbuilder.core.IConfiguration;
-import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo;
-import org.eclipse.cdt.managedbuilder.core.IToolChain;
-import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
-import org.eclipse.cdt.managedbuilder.internal.core.FolderInfo;
-import org.eclipse.cdt.managedbuilder.tcmodification.IConfigurationModification;
-import org.eclipse.cdt.managedbuilder.tcmodification.IToolChainModificationManager;
-import org.eclipse.cdt.managedbuilder.testplugin.AbstractBuilderTest;
-import org.eclipse.cdt.managedbuilder.testplugin.ManagedBuildTestHelper;
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IFolder;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IProjectDescription;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IWorkspaceDescription;
-import org.eclipse.core.resources.IncrementalProjectBuilder;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.OperationCanceledException;
-
-public class ManagedBuildDependencyLibsTests extends AbstractBuilderTest {
- private static final String PROJ_PATH = "depLibsProjects";
- private static final String MESSAGE_TAIL = " (see .log file for more details).";
-
- private IProject fTapp, fTlib, fTobjs;
-
- private IToolChain[] allToolChains;
-
- public ManagedBuildDependencyLibsTests(String name) {
- super(name);
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(ManagedBuildDependencyLibsTests.class.getName());
-
- suite.addTest(new ManagedBuildDependencyLibsTests("testDepLibs"));
- suite.addTest(new ManagedBuildDependencyLibsTests("testDepUObjs"));
- suite.addTest(new ManagedBuildDependencyLibsTests("testGetArtifactTimeStampEscapeURI_bug377295"));
- return suite;
- }
-
- private void buildProject(IProject curProject) {
-
- try {
- IProject[] referencedProjects = curProject.getReferencedProjects();
- for(int i = 0; i < referencedProjects.length; ++i)
- buildProject(referencedProjects[i]);
-
- // Build the project in order to generate the makefiles
- curProject.build(IncrementalProjectBuilder.INCREMENTAL_BUILD,new NullProgressMonitor());
- }
- catch(CoreException e){
- fail(e.getStatus().getMessage());
- }
- catch(OperationCanceledException e){
- fail("the project \"" + curProject.getName() + "\" build was cancelled, exception message: " + e.getMessage());
- }
-
-
- }
-
-
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- allToolChains = ManagedBuildManager.
- getRealToolChains();
- IWorkspaceDescription wsDescription = ResourcesPlugin.getWorkspace().getDescription();
- wsDescription.setAutoBuilding(false);
- ResourcesPlugin.getWorkspace().setDescription(wsDescription);
- assertNotNull("Cannot create tapp project",
- fTapp = ManagedBuildTestHelper.loadProject("tapp", PROJ_PATH));
- assertNotNull("Cannot create tlib project",
- fTlib = ManagedBuildTestHelper.loadProject("tlib", PROJ_PATH));
- assertNotNull("Cannot create tobjs project",
- fTobjs = ManagedBuildTestHelper.loadProject("tobjs", PROJ_PATH));
- IProjectDescription projDescription = fTapp.getDescription();
- projDescription.setReferencedProjects(new IProject[]
- {fTlib, fTobjs});
- fTapp.setDescription(projDescription, new NullProgressMonitor());
- IToolChain toolChain = setToolChain(fTapp, null);
- assertNotNull("No compatible tool chain.", toolChain);
- setToolChain(fTlib, toolChain);
- setToolChain(fTobjs, toolChain);
- }
-
- @Override
- protected void tearDown() throws Exception {
- super.tearDown();
- ManagedBuildTestHelper.removeProject(fTapp.getName());
- ManagedBuildTestHelper.removeProject(fTlib.getName());
- ManagedBuildTestHelper.removeProject(fTobjs.getName());
- }
-
- private void findFiles(IResource dir, String pattern, List<IFile> files) {
- IResource resource = null;
- try {
- IResource[] members;
- if(dir instanceof IContainer)
- members = ((IContainer)dir).members(IFolder.INCLUDE_PHANTOMS);
- else
- if(dir instanceof IFolder)
- members = ((IFolder)dir).members(IFolder.INCLUDE_PHANTOMS);
- else // Not possible
- return;
- for(int i = 0; i < members.length; ++i) {
- resource = members[i];
- if(resource.getType() == IResource.FOLDER)
- findFiles(resource, pattern, files);
- else {
- if(resource.getName().matches(pattern))
- files.add((IFile)resource);
- }
- }
- } catch (CoreException e) {
- e.printStackTrace();
- fail("Error while collecting files." + MESSAGE_TAIL);
- }
- }
-
- private IToolChain setToolChain(IProject project, IToolChain setTo) {
- try {
- IConfiguration cfg = getProjectConfiguration(project);
- IToolChain currentToolChain = cfg.getToolChain();
-
- IToolChainModificationManager mngr =
- ManagedBuildManager.getToolChainModificationManager();
- IConfigurationModification cfgM =
- (IConfigurationModification)mngr.
- createModification(cfg.getRootFolderInfo());
- FolderInfo folderInfo = (FolderInfo)cfg.getRootFolderInfo();
-
- if(setTo == null) {
- for(int i = 0; i < allToolChains.length; ++i) {
- // If predefined tool chain supported, leave it alone
- if(allToolChains[i].equals(currentToolChain))
- return currentToolChain;
- // In the same loop try to find compatible tool chain
- if(setTo == null) {
- IBuilder builder = allToolChains[i].getBuilder();
- if(cfg.isBuilderCompatible(builder) &&
- folderInfo.isToolChainCompatible(allToolChains[i]))
- setTo = allToolChains[i];
- }
- }
- }
- if(null != setTo) {
- cfgM.setToolChain(setTo);
- assertEquals(setTo, cfgM.getToolChain());
- assertEquals(setTo.getBuilder(), cfgM.getBuilder());
- }
- } catch (CoreException e) {
- e.printStackTrace();
- fail("Error. " + MESSAGE_TAIL);
- }
- return setTo;
- }
-
- private IConfiguration getProjectConfiguration(IProject project) throws CoreException {
- ICProjectDescription cProjDescription = CoreModel.getDefault().
- createProjectDescription(project, true);
- return ManagedBuildManager.
- getConfigurationForDescription(
- cProjDescription.getConfigurations()[0]);
-
- }
-
- private void rebuildArtefact(IProject project) {
-// deleteFiles(getProjectFolder(project),
-// getArtefactFullName(project),
-// new NullProgressMonitor());
- try {
- project.build(IncrementalProjectBuilder.CLEAN_BUILD, new NullProgressMonitor());
- } catch (CoreException e) {
- e.printStackTrace();
- fail("Cannot clean project " + fTapp.getName() + '.' + MESSAGE_TAIL);
- }
- buildProject(project);
- }
-
- private long getArtifactTimeStamp(IProject project) {
- List<IFile> files = new ArrayList<IFile>();
- findFiles(project, getArtefactFullName(project), files);
- if(files.size() == 0) // File not exists
- return 0;
- IFile artefact = files.iterator().next();
- return artefact.getModificationStamp();
- }
-
- private String getArtefactFullName(IProject project) {
- IConfiguration cfg = null;
- try {
- cfg = getProjectConfiguration(project);
- } catch (CoreException e) {
- e.printStackTrace();
- fail("Error. " + MESSAGE_TAIL);
- }
- String name = cfg.getArtifactName();
- String ext = cfg.getArtifactExtension();
- if((null != ext) && (ext.length() > 0)) {
- name += '.';
- name += ext;
- }
- return name;
- }
-
-
- public void testDepLibs() {
- buildProject(fTapp);
- long timeStamp = getArtifactTimeStamp(fTapp);
- if(timeStamp == 0) {
- fail("Cannot build project " + fTapp.getName());
- }
- try { // To be sure that in case of build the time should be changed
- Thread.sleep(1000);
- } catch (InterruptedException e) {
- // Do nothing
- }
- // Check if no build any more
- buildProject(fTapp);
- if(timeStamp != getArtifactTimeStamp(fTapp)) {
- fail("Error. This time it should be nothing to build");
- }
- rebuildArtefact(fTlib);
- buildProject(fTapp);
- if(timeStamp == getArtifactTimeStamp(fTapp)) {
- fail("Error. This time it should build application.");
- }
- }
-
- public void testDepUObjs() {
- buildProject(fTapp);
- long timeStamp = getArtifactTimeStamp(fTapp);
- if(timeStamp == 0) {
- fail("Cannot build project " + fTapp.getName());
- }
- try { // To be sure that in case of build the time should be changed
- Thread.sleep(1000);
- } catch (InterruptedException e) {
- // Do nothing
- }
- // Check if no build any more
- buildProject(fTapp);
- if(timeStamp != getArtifactTimeStamp(fTapp)) {
- fail("Error. This time it should be nothing to build");
- }
-// deleteFiles(getProjectFolder(fTobjs), "*.o", new NullProgressMonitor());
- rebuildArtefact(fTobjs);
- buildProject(fTapp);
- if(timeStamp == getArtifactTimeStamp(fTapp)) {
- fail("Error. This time it should build application.");
- }
- }
-
- // Tests that the URI used to get the time stamp of the artifact is escaped correctly
- // See AdditionalInput.getArtifactTimeStamp(IToolChain toolChain)
- public void testGetArtifactTimeStampEscapeURI_bug377295() throws CoreException {
- setWorkspace("regressions");
- final IProject project = loadProject("helloworldC");
- IManagedBuildInfo buildInfo = ManagedBuildManager.getBuildInfo(project);
- IConfiguration[] configs = buildInfo.getManagedProject().getConfigurations();
- for (IConfiguration configuration : configs) {
- configuration.setArtifactName("test [377295]");
- }
-
- project.build(IncrementalProjectBuilder.FULL_BUILD, null);
- // This will trigger AdditionalInput.getArtifactTimeStamp to get called, no IllegalArgumentException should be thrown
- project.build(IncrementalProjectBuilder.FULL_BUILD, null);
- }
+/*******************************************************************************
+ * Copyright (c) 2011, 2012 QNX Software Systems and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.managedbuilder.core.tests;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.eclipse.cdt.core.model.CoreModel;
+import org.eclipse.cdt.core.settings.model.ICProjectDescription;
+import org.eclipse.cdt.managedbuilder.core.IBuilder;
+import org.eclipse.cdt.managedbuilder.core.IConfiguration;
+import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo;
+import org.eclipse.cdt.managedbuilder.core.IToolChain;
+import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
+import org.eclipse.cdt.managedbuilder.internal.core.FolderInfo;
+import org.eclipse.cdt.managedbuilder.tcmodification.IConfigurationModification;
+import org.eclipse.cdt.managedbuilder.tcmodification.IToolChainModificationManager;
+import org.eclipse.cdt.managedbuilder.testplugin.AbstractBuilderTest;
+import org.eclipse.cdt.managedbuilder.testplugin.ManagedBuildTestHelper;
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IProjectDescription;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspaceDescription;
+import org.eclipse.core.resources.IncrementalProjectBuilder;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.OperationCanceledException;
+
+public class ManagedBuildDependencyLibsTests extends AbstractBuilderTest {
+ private static final String PROJ_PATH = "depLibsProjects";
+ private static final String MESSAGE_TAIL = " (see .log file for more details).";
+
+ private IProject fTapp, fTlib, fTobjs;
+
+ private IToolChain[] allToolChains;
+
+ public ManagedBuildDependencyLibsTests(String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(ManagedBuildDependencyLibsTests.class.getName());
+
+ suite.addTest(new ManagedBuildDependencyLibsTests("testDepLibs"));
+ suite.addTest(new ManagedBuildDependencyLibsTests("testDepUObjs"));
+ suite.addTest(new ManagedBuildDependencyLibsTests("testGetArtifactTimeStampEscapeURI_bug377295"));
+ return suite;
+ }
+
+ private void buildProject(IProject curProject) {
+
+ try {
+ IProject[] referencedProjects = curProject.getReferencedProjects();
+ for(int i = 0; i < referencedProjects.length; ++i)
+ buildProject(referencedProjects[i]);
+
+ // Build the project in order to generate the makefiles
+ curProject.build(IncrementalProjectBuilder.INCREMENTAL_BUILD,new NullProgressMonitor());
+ }
+ catch(CoreException e){
+ fail(e.getStatus().getMessage());
+ }
+ catch(OperationCanceledException e){
+ fail("the project \"" + curProject.getName() + "\" build was cancelled, exception message: " + e.getMessage());
+ }
+
+
+ }
+
+
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ allToolChains = ManagedBuildManager.
+ getRealToolChains();
+ IWorkspaceDescription wsDescription = ResourcesPlugin.getWorkspace().getDescription();
+ wsDescription.setAutoBuilding(false);
+ ResourcesPlugin.getWorkspace().setDescription(wsDescription);
+ assertNotNull("Cannot create tapp project",
+ fTapp = ManagedBuildTestHelper.loadProject("tapp", PROJ_PATH));
+ assertNotNull("Cannot create tlib project",
+ fTlib = ManagedBuildTestHelper.loadProject("tlib", PROJ_PATH));
+ assertNotNull("Cannot create tobjs project",
+ fTobjs = ManagedBuildTestHelper.loadProject("tobjs", PROJ_PATH));
+ IProjectDescription projDescription = fTapp.getDescription();
+ projDescription.setReferencedProjects(new IProject[]
+ {fTlib, fTobjs});
+ fTapp.setDescription(projDescription, new NullProgressMonitor());
+ IToolChain toolChain = setToolChain(fTapp, null);
+ assertNotNull("No compatible tool chain.", toolChain);
+ setToolChain(fTlib, toolChain);
+ setToolChain(fTobjs, toolChain);
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ ManagedBuildTestHelper.removeProject(fTapp.getName());
+ ManagedBuildTestHelper.removeProject(fTlib.getName());
+ ManagedBuildTestHelper.removeProject(fTobjs.getName());
+ }
+
+ private void findFiles(IResource dir, String pattern, List<IFile> files) {
+ IResource resource = null;
+ try {
+ IResource[] members;
+ if(dir instanceof IContainer)
+ members = ((IContainer)dir).members(IFolder.INCLUDE_PHANTOMS);
+ else
+ if(dir instanceof IFolder)
+ members = ((IFolder)dir).members(IFolder.INCLUDE_PHANTOMS);
+ else // Not possible
+ return;
+ for(int i = 0; i < members.length; ++i) {
+ resource = members[i];
+ if(resource.getType() == IResource.FOLDER)
+ findFiles(resource, pattern, files);
+ else {
+ if(resource.getName().matches(pattern))
+ files.add((IFile)resource);
+ }
+ }
+ } catch (CoreException e) {
+ e.printStackTrace();
+ fail("Error while collecting files." + MESSAGE_TAIL);
+ }
+ }
+
+ private IToolChain setToolChain(IProject project, IToolChain setTo) {
+ try {
+ IConfiguration cfg = getProjectConfiguration(project);
+ IToolChain currentToolChain = cfg.getToolChain();
+
+ IToolChainModificationManager mngr =
+ ManagedBuildManager.getToolChainModificationManager();
+ IConfigurationModification cfgM =
+ (IConfigurationModification)mngr.
+ createModification(cfg.getRootFolderInfo());
+ FolderInfo folderInfo = (FolderInfo)cfg.getRootFolderInfo();
+
+ if(setTo == null) {
+ for(int i = 0; i < allToolChains.length; ++i) {
+ // If predefined tool chain supported, leave it alone
+ if(allToolChains[i].equals(currentToolChain))
+ return currentToolChain;
+ // In the same loop try to find compatible tool chain
+ if(setTo == null) {
+ IBuilder builder = allToolChains[i].getBuilder();
+ if(cfg.isBuilderCompatible(builder) &&
+ folderInfo.isToolChainCompatible(allToolChains[i]))
+ setTo = allToolChains[i];
+ }
+ }
+ }
+ if(null != setTo) {
+ cfgM.setToolChain(setTo);
+ assertEquals(setTo, cfgM.getToolChain());
+ assertEquals(setTo.getBuilder(), cfgM.getBuilder());
+ }
+ } catch (CoreException e) {
+ e.printStackTrace();
+ fail("Error. " + MESSAGE_TAIL);
+ }
+ return setTo;
+ }
+
+ private IConfiguration getProjectConfiguration(IProject project) throws CoreException {
+ ICProjectDescription cProjDescription = CoreModel.getDefault().
+ createProjectDescription(project, true);
+ return ManagedBuildManager.
+ getConfigurationForDescription(
+ cProjDescription.getConfigurations()[0]);
+
+ }
+
+ private void rebuildArtefact(IProject project) {
+// deleteFiles(getProjectFolder(project),
+// getArtefactFullName(project),
+// new NullProgressMonitor());
+ try {
+ project.build(IncrementalProjectBuilder.CLEAN_BUILD, new NullProgressMonitor());
+ } catch (CoreException e) {
+ e.printStackTrace();
+ fail("Cannot clean project " + fTapp.getName() + '.' + MESSAGE_TAIL);
+ }
+ buildProject(project);
+ }
+
+ private long getArtifactTimeStamp(IProject project) {
+ List<IFile> files = new ArrayList<IFile>();
+ findFiles(project, getArtefactFullName(project), files);
+ if(files.size() == 0) // File not exists
+ return 0;
+ IFile artefact = files.iterator().next();
+ return artefact.getModificationStamp();
+ }
+
+ private String getArtefactFullName(IProject project) {
+ IConfiguration cfg = null;
+ try {
+ cfg = getProjectConfiguration(project);
+ } catch (CoreException e) {
+ e.printStackTrace();
+ fail("Error. " + MESSAGE_TAIL);
+ }
+ String name = cfg.getArtifactName();
+ String ext = cfg.getArtifactExtension();
+ if((null != ext) && (ext.length() > 0)) {
+ name += '.';
+ name += ext;
+ }
+ return name;
+ }
+
+
+ public void testDepLibs() {
+ buildProject(fTapp);
+ long timeStamp = getArtifactTimeStamp(fTapp);
+ if(timeStamp == 0) {
+ fail("Cannot build project " + fTapp.getName());
+ }
+ try { // To be sure that in case of build the time should be changed
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ // Do nothing
+ }
+ // Check if no build any more
+ buildProject(fTapp);
+ if(timeStamp != getArtifactTimeStamp(fTapp)) {
+ fail("Error. This time it should be nothing to build");
+ }
+ rebuildArtefact(fTlib);
+ buildProject(fTapp);
+ if(timeStamp == getArtifactTimeStamp(fTapp)) {
+ fail("Error. This time it should build application.");
+ }
+ }
+
+ public void testDepUObjs() {
+ buildProject(fTapp);
+ long timeStamp = getArtifactTimeStamp(fTapp);
+ if(timeStamp == 0) {
+ fail("Cannot build project " + fTapp.getName());
+ }
+ try { // To be sure that in case of build the time should be changed
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ // Do nothing
+ }
+ // Check if no build any more
+ buildProject(fTapp);
+ if(timeStamp != getArtifactTimeStamp(fTapp)) {
+ fail("Error. This time it should be nothing to build");
+ }
+// deleteFiles(getProjectFolder(fTobjs), "*.o", new NullProgressMonitor());
+ rebuildArtefact(fTobjs);
+ buildProject(fTapp);
+ if(timeStamp == getArtifactTimeStamp(fTapp)) {
+ fail("Error. This time it should build application.");
+ }
+ }
+
+ // Tests that the URI used to get the time stamp of the artifact is escaped correctly
+ // See AdditionalInput.getArtifactTimeStamp(IToolChain toolChain)
+ public void testGetArtifactTimeStampEscapeURI_bug377295() throws CoreException {
+ setWorkspace("regressions");
+ final IProject project = loadProject("helloworldC");
+ IManagedBuildInfo buildInfo = ManagedBuildManager.getBuildInfo(project);
+ IConfiguration[] configs = buildInfo.getManagedProject().getConfigurations();
+ for (IConfiguration configuration : configs) {
+ configuration.setArtifactName("test [377295]");
+ }
+
+ project.build(IncrementalProjectBuilder.FULL_BUILD, null);
+ // This will trigger AdditionalInput.getArtifactTimeStamp to get called, no IllegalArgumentException should be thrown
+ project.build(IncrementalProjectBuilder.FULL_BUILD, null);
+ }
} \ No newline at end of file

Back to the top