mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Internal Builder dependency tracking tests
This commit is contained in:
parent
d6c3820f2a
commit
c3fbed60b8
2 changed files with 165 additions and 14 deletions
|
@ -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());
|
||||
}
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue