Skip to main content
aboutsummaryrefslogtreecommitdiffstats
path: root/build
diff options
context:
space:
mode:
authorMikhail Sennikovsky2006-10-09 16:45:28 +0000
committerMikhail Sennikovsky2006-10-09 16:45:28 +0000
commitc3fbed60b87a058afedc59e4e30a323afb7910e3 (patch)
tree30af482f1d2324a7fcc32813a52ac901d9a723c1 /build
parentd6c3820f2ac080073cc3abf91f36b90dd97ee187 (diff)
downloadorg.eclipse.cdt-c3fbed60b87a058afedc59e4e30a323afb7910e3.tar.gz
org.eclipse.cdt-c3fbed60b87a058afedc59e4e30a323afb7910e3.tar.xz
org.eclipse.cdt-c3fbed60b87a058afedc59e4e30a323afb7910e3.zip
Internal Builder dependency tracking tests
Diffstat (limited to 'build')
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/managedbuilder/testplugin/ManagedBuildTestHelper.java11
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/BuildDescriptionModelTests.java168
2 files changed, 165 insertions, 14 deletions
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/managedbuilder/testplugin/ManagedBuildTestHelper.java b/build/org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/managedbuilder/testplugin/ManagedBuildTestHelper.java
index b7af0418379..ff2f95db1ef 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/managedbuilder/testplugin/ManagedBuildTestHelper.java
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/managedbuilder/testplugin/ManagedBuildTestHelper.java
@@ -15,6 +15,7 @@ import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
+import java.io.InputStream;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.List;
@@ -136,6 +137,14 @@ public class ManagedBuildTestHelper {
}
static public IFile createFile(IProject project, String name){
+ return createFile(project, name, new ByteArrayInputStream(new byte[0]));
+ }
+
+ static public IFile createFile(IProject project, String name, String contents){
+ return createFile(project, name, new ByteArrayInputStream(contents.getBytes()));
+ }
+
+ static public IFile createFile(IProject project, String name, InputStream contents){
IFile file = project.getFile(name);
if( !file.exists() ){
try {
@@ -148,7 +157,7 @@ public class ManagedBuildTestHelper {
}
// file.create( new ByteArrayInputStream( "#include <stdio.h>\n extern void bar(); \n int main() { \nprintf(\"Hello, World!!\"); \n bar();\n return 0; }".getBytes() ), false, null );
- file.create( new ByteArrayInputStream( new byte[0] ), false, null );
+ file.create(contents, false, null );
} catch (CoreException e) {
TestCase.fail(e.getLocalizedMessage());
}
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/BuildDescriptionModelTests.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/BuildDescriptionModelTests.java
index 1381d277538..9d75960ad0a 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/BuildDescriptionModelTests.java
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/BuildDescriptionModelTests.java
@@ -23,6 +23,10 @@ import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.eclipse.cdt.core.CCProjectNature;
+import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.model.CoreModel;
+import org.eclipse.cdt.core.model.ICProject;
+import org.eclipse.cdt.internal.core.pdom.indexer.fast.PDOMFastIndexer;
import org.eclipse.cdt.managedbuilder.buildmodel.BuildDescriptionManager;
import org.eclipse.cdt.managedbuilder.buildmodel.IBuildDescription;
import org.eclipse.cdt.managedbuilder.buildmodel.IBuildIOType;
@@ -239,7 +243,7 @@ public class BuildDescriptionModelTests extends TestCase {
IBuildDescription des = null;
try {
- des = BuildDescriptionManager.createBuildDescription(cfg, null, BuildDescriptionManager.REBUILD | BuildDescriptionManager.REMOVED);
+ des = BuildDescriptionManager.createBuildDescription(cfg, null, BuildDescriptionManager.REBUILD | BuildDescriptionManager.REMOVED | BuildDescriptionManager.DEPS);
} catch (CoreException e) {
fail("build description creation failed: " + e.getLocalizedMessage());
}
@@ -262,7 +266,7 @@ public class BuildDescriptionModelTests extends TestCase {
BuildDescription tDes = new BuildDescription(cfg);
IBuildDescription des = null;
try {
- des = BuildDescriptionManager.createBuildDescription(cfg, null, BuildDescriptionManager.REBUILD | BuildDescriptionManager.REMOVED);
+ des = BuildDescriptionManager.createBuildDescription(cfg, null, BuildDescriptionManager.REBUILD | BuildDescriptionManager.REMOVED | BuildDescriptionManager.DEPS);
} catch (CoreException e) {
fail("build description creation failed: " + e.getLocalizedMessage());
}
@@ -331,7 +335,7 @@ public class BuildDescriptionModelTests extends TestCase {
IBuildDescription des = null;
try {
- des = BuildDescriptionManager.createBuildDescription(cfg, null, BuildDescriptionManager.REBUILD | BuildDescriptionManager.REMOVED);
+ des = BuildDescriptionManager.createBuildDescription(cfg, null, BuildDescriptionManager.REBUILD | BuildDescriptionManager.REMOVED | BuildDescriptionManager.DEPS);
} catch (CoreException e) {
fail("build description creation failed: " + e.getLocalizedMessage());
}
@@ -451,7 +455,7 @@ public class BuildDescriptionModelTests extends TestCase {
IBuildDescription des = null;
try {
- des = BuildDescriptionManager.createBuildDescription(cfg, null, BuildDescriptionManager.REBUILD | BuildDescriptionManager.REMOVED);
+ des = BuildDescriptionManager.createBuildDescription(cfg, null, BuildDescriptionManager.REBUILD | BuildDescriptionManager.REMOVED | BuildDescriptionManager.DEPS);
} catch (CoreException e) {
fail("build description creation failed: " + e.getLocalizedMessage());
}
@@ -529,7 +533,7 @@ public class BuildDescriptionModelTests extends TestCase {
IBuildDescription des = null;
try {
- des = BuildDescriptionManager.createBuildDescription(cfg, null, BuildDescriptionManager.REBUILD | BuildDescriptionManager.REMOVED);
+ des = BuildDescriptionManager.createBuildDescription(cfg, null, BuildDescriptionManager.REBUILD | BuildDescriptionManager.REMOVED | BuildDescriptionManager.DEPS);
} catch (CoreException e) {
fail("build description creation failed: " + e.getLocalizedMessage());
}
@@ -964,7 +968,7 @@ public class BuildDescriptionModelTests extends TestCase {
IBuildDescription des = null;
try {
- des = BuildDescriptionManager.createBuildDescription(cfg, null, BuildDescriptionManager.REBUILD | BuildDescriptionManager.REMOVED);
+ des = BuildDescriptionManager.createBuildDescription(cfg, null, BuildDescriptionManager.REBUILD | BuildDescriptionManager.REMOVED | BuildDescriptionManager.DEPS);
} catch (CoreException e) {
fail("build description creation failed: " + e.getLocalizedMessage());
}
@@ -972,6 +976,144 @@ public class BuildDescriptionModelTests extends TestCase {
doTestBuildDescription(des, tDes);
}
+ public void testDes_gnu30_exe_deps(){
+ IProject project = createProject(PREFIX + "gnu30_exe_deps", "cdt.managedbuild.target.gnu30.exe");
+ try {
+ CCProjectNature.addCCNature(project, null);
+ } catch (CoreException e1) {
+ fail("fail to add CC nature");
+ }
+
+ ManagedBuildTestHelper.createFile(project, "a.c", "\n#include \"a.h\"\n#include \"d.h\"\n");
+ ManagedBuildTestHelper.createFile(project, "b.c");
+ ManagedBuildTestHelper.createFile(project, "c.cpp", "\n#include \"b.h\"\n#include \"e.h\"\n");
+ ManagedBuildTestHelper.createFile(project, "d.cpp");
+ ManagedBuildTestHelper.createFile(project, "a.h", "\n#include \"b.h\"\n");
+ ManagedBuildTestHelper.createFile(project, "b.h", "\n#include \"c.h\"\n");
+ ManagedBuildTestHelper.createFile(project, "c.h", "\n");
+ ManagedBuildTestHelper.createFile(project, "d.h", "\n");
+ ManagedBuildTestHelper.createFile(project, "e.h", "\n");
+ ManagedBuildTestHelper.createFile(project, "f.h", "\n");
+
+ ICProject cProject = CoreModel.getDefault().create(project);
+ try {
+ CCorePlugin.getPDOMManager().setIndexerId(cProject, PDOMFastIndexer.ID);
+ } catch (CoreException e2) {
+ doFail("testDes_gnu30_exe_deps: failed to associate the fast indexer with the project");
+ }
+ IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project);
+ IManagedProject mProj = info.getManagedProject();
+ IConfiguration cfg = mProj.getConfigurations()[0];
+ String art = cfg.getArtifactName();
+ String ext = cfg.getArtifactExtension();
+ if(ext != null && ext.length() > 0)
+ art = art + "." + ext;
+
+ String cName = cfg.getName();
+
+ BuildDescription tDes = new BuildDescription(cfg);
+ BuildStep step;
+ BuildIOType type;
+
+ //
+ step = (BuildStep)tDes.getInputStep();
+
+ type = step.createIOType(false, false, null);
+ type.addResource(tDes.createResource("c.cpp"));
+ type.addResource(tDes.createResource("d.cpp"));
+
+ type = step.createIOType(false, false, null);
+ type.addResource(tDes.createResource("a.c"));
+ type.addResource(tDes.createResource("b.c"));
+
+ type = step.createIOType(false, false, null);
+ type.addResource(tDes.createResource("a.h"));
+ type.addResource(tDes.createResource("b.h"));
+ type.addResource(tDes.createResource("c.h"));
+ type.addResource(tDes.createResource("d.h"));
+ type.addResource(tDes.createResource("e.h"));
+ //
+ //
+ step = tDes.createStep(null, null);
+
+ type = step.createIOType(true, false, null);
+ type.addResource(tDes.createResource("a.c"));
+
+ type = step.createIOType(true, false, null);
+ type.addResource(tDes.createResource("a.h"));
+ type.addResource(tDes.createResource("b.h"));
+ type.addResource(tDes.createResource("c.h"));
+ type.addResource(tDes.createResource("d.h"));
+
+ type = step.createIOType(false, true, null);
+ type.addResource(tDes.createResource(cName + "/a.o"));
+ //
+ //
+ step = tDes.createStep(null, null);
+
+ type = step.createIOType(true, false, null);
+ type.addResource(tDes.createResource("b.c"));
+
+ type = step.createIOType(false, true, null);
+ type.addResource(tDes.createResource(cName + "/b.o"));
+ //
+ //
+ step = tDes.createStep(null, null);
+
+ type = step.createIOType(true, false, null);
+ type.addResource(tDes.createResource("c.cpp"));
+
+ type = step.createIOType(true, false, null);
+ type.addResource(tDes.createResource("b.h"));
+ type.addResource(tDes.createResource("c.h"));
+ type.addResource(tDes.createResource("e.h"));
+
+ type = step.createIOType(false, true, null);
+ type.addResource(tDes.createResource(cName + "/c.o"));
+ //
+ //
+ step = tDes.createStep(null, null);
+
+ type = step.createIOType(true, false, null);
+ type.addResource(tDes.createResource("d.cpp"));
+
+ type = step.createIOType(false, true, null);
+ type.addResource(tDes.createResource(cName + "/d.o"));
+ //
+ //
+ step = tDes.createStep(null, null);
+
+ type = step.createIOType(true, true, null);
+ type.addResource(tDes.createResource(cName + "/a.o"));
+ type.addResource(tDes.createResource(cName + "/b.o"));
+ type.addResource(tDes.createResource(cName + "/c.o"));
+ type.addResource(tDes.createResource(cName + "/d.o"));
+
+ type = step.createIOType(false, false, null);
+ type.addResource(tDes.createResource(cName + "/" + art));
+ //
+ //
+ step = (BuildStep)tDes.getOutputStep();
+
+ type = step.createIOType(true, true, null);
+ type.addResource(tDes.createResource(cName + "/" + art));
+ //
+
+ //FIXME: this is very bad, need to wait until the indexing is completed here
+ try {
+ Thread.sleep(10000);
+ } catch (InterruptedException e1) {
+ }
+
+ IBuildDescription des = null;
+ try {
+ des = BuildDescriptionManager.createBuildDescription(cfg, null, BuildDescriptionManager.REBUILD | BuildDescriptionManager.REMOVED | BuildDescriptionManager.DEPS);
+ } catch (CoreException e) {
+ fail("build description creation failed: " + e.getLocalizedMessage());
+ }
+
+ doTestBuildDescription(des, tDes);
+ }
public void testDesTestgnu21_exe(){
IProject project = createProject(PREFIX + "1", "cdt.managedbuild.target.testgnu21.exe");
@@ -1069,7 +1211,7 @@ public class BuildDescriptionModelTests extends TestCase {
IBuildDescription des = null;
try {
- des = BuildDescriptionManager.createBuildDescription(cfg, null, BuildDescriptionManager.REBUILD | BuildDescriptionManager.REMOVED);
+ des = BuildDescriptionManager.createBuildDescription(cfg, null, BuildDescriptionManager.REBUILD | BuildDescriptionManager.REMOVED | BuildDescriptionManager.DEPS);
} catch (CoreException e) {
fail("build description creation failed: " + e.getLocalizedMessage());
}
@@ -1177,7 +1319,7 @@ public class BuildDescriptionModelTests extends TestCase {
IBuildDescription des = null;
try {
- des = BuildDescriptionManager.createBuildDescription(cfg, null, BuildDescriptionManager.REBUILD | BuildDescriptionManager.REMOVED);
+ des = BuildDescriptionManager.createBuildDescription(cfg, null, BuildDescriptionManager.REBUILD | BuildDescriptionManager.REMOVED | BuildDescriptionManager.DEPS);
} catch (CoreException e) {
fail("build description creation failed: " + e.getLocalizedMessage());
}
@@ -1355,7 +1497,7 @@ public class BuildDescriptionModelTests extends TestCase {
IBuildDescription des = null;
try {
- des = BuildDescriptionManager.createBuildDescription(cfg, null, BuildDescriptionManager.REBUILD | BuildDescriptionManager.REMOVED);
+ des = BuildDescriptionManager.createBuildDescription(cfg, null, BuildDescriptionManager.REBUILD | BuildDescriptionManager.REMOVED | BuildDescriptionManager.DEPS);
} catch (CoreException e) {
fail("build description creation failed: " + e.getLocalizedMessage());
}
@@ -1548,7 +1690,7 @@ public class BuildDescriptionModelTests extends TestCase {
IBuildDescription des = null;
try {
- des = BuildDescriptionManager.createBuildDescription(cfg, null, BuildDescriptionManager.REBUILD | BuildDescriptionManager.REMOVED);
+ des = BuildDescriptionManager.createBuildDescription(cfg, null, BuildDescriptionManager.REBUILD | BuildDescriptionManager.REMOVED | BuildDescriptionManager.DEPS);
} catch (CoreException e) {
fail("build description creation failed: " + e.getLocalizedMessage());
}
@@ -1711,7 +1853,7 @@ public class BuildDescriptionModelTests extends TestCase {
IBuildDescription des = null;
try {
- des = BuildDescriptionManager.createBuildDescription(cfg, null, BuildDescriptionManager.REBUILD | BuildDescriptionManager.REMOVED);
+ des = BuildDescriptionManager.createBuildDescription(cfg, null, BuildDescriptionManager.REBUILD | BuildDescriptionManager.REMOVED | BuildDescriptionManager.DEPS);
} catch (CoreException e) {
fail("build description creation failed: " + e.getLocalizedMessage());
}
@@ -1817,7 +1959,7 @@ public class BuildDescriptionModelTests extends TestCase {
IBuildDescription des = null;
try {
- des = BuildDescriptionManager.createBuildDescription(cfg, null, BuildDescriptionManager.REBUILD | BuildDescriptionManager.REMOVED);
+ des = BuildDescriptionManager.createBuildDescription(cfg, null, BuildDescriptionManager.REBUILD | BuildDescriptionManager.REMOVED | BuildDescriptionManager.DEPS);
} catch (CoreException e) {
fail("build description creation failed: " + e.getLocalizedMessage());
}
@@ -2377,7 +2519,7 @@ public class BuildDescriptionModelTests extends TestCase {
IBuildDescription des = null;
try {
- des = BuildDescriptionManager.createBuildDescription(cfg, null, BuildDescriptionManager.REBUILD | BuildDescriptionManager.REMOVED);
+ des = BuildDescriptionManager.createBuildDescription(cfg, null, BuildDescriptionManager.REBUILD | BuildDescriptionManager.REMOVED | BuildDescriptionManager.DEPS);
} catch (CoreException e) {
fail("build description creation failed: " + e.getLocalizedMessage());
}

Back to the top