1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

Test for PR 80185 - output message to console when there are no source files to build

This commit is contained in:
Leo Treggiari 2005-05-27 03:46:34 +00:00
parent 3950ab52ae
commit bc4f611eb1
3 changed files with 67 additions and 9 deletions

View file

@ -242,6 +242,27 @@ public class ManagedBuildTestHelper {
return true;
}
static public boolean verifyFilesDoNotExist(IProject project, IPath testDir, IPath[] files) {
try {
project.refreshLocal(IResource.DEPTH_INFINITE, null);
} catch (Exception e) {
Assert.fail("File " + files[0].lastSegment() + " - project refresh failed.");
}
for (int i=0; i<files.length; i++) {
IPath testFile = testDir.append(files[i]);
IPath fullPath = project.getLocation().append(testFile);
try {
if (fullPath.toFile().exists()) {
Assert.fail("File " + testFile.lastSegment() + " unexpectedly found.");
return false;
}
} catch (Exception e) {
Assert.fail("File " + fullPath.toString() + " could not be referenced.");
}
}
return true;
}
static public StringBuffer readContentsStripLineEnds(IProject project, IPath path) {
StringBuffer buff = new StringBuffer();
IPath fullPath = project.getLocation().append(path);

View file

@ -25,6 +25,8 @@ import junit.framework.TestSuite;
import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo;
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
import org.eclipse.cdt.managedbuilder.core.IConfiguration;
import org.eclipse.cdt.managedbuilder.core.IResourceConfiguration;
import org.eclipse.cdt.managedbuilder.projectconverter.UpdateManagedProjectManager;
import org.eclipse.cdt.managedbuilder.testplugin.CTestPlugin;
import org.eclipse.cdt.managedbuilder.testplugin.ManagedBuildTestHelper;
@ -57,6 +59,7 @@ public class ManagedProject30MakefileTests extends TestCase {
//suite.addTest(new ManagedProject30MakefileTests("test30LinkedFolder"));
suite.addTest(new ManagedProject30MakefileTests("test30CopyandDeploy"));
suite.addTest(new ManagedProject30MakefileTests("test30DeleteFile"));
suite.addTest(new ManagedProject30MakefileTests("test30NoFilesToBuild"));
suite.addTest(new ManagedProject30MakefileTests("test30_1"));
suite.addTest(new ManagedProject30MakefileTests("test30_2"));
@ -132,12 +135,12 @@ public class ManagedProject30MakefileTests extends TestCase {
return projects;
}
private void buildProjects(IProject projects[], IPath[] files) {
private void buildProjectsWorker(IProject projects[], IPath[] files, boolean compareBenchmark) {
if(projects == null || projects.length == 0)
return;
boolean succeeded = true;
for(int i = 0; i < projects.length; i++){
for (int i = 0; i < projects.length; i++){
IProject curProject = projects[i];
IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(curProject);
@ -146,7 +149,7 @@ public class ManagedProject30MakefileTests extends TestCase {
boolean isCompatible = UpdateManagedProjectManager.isCompatibleProject(info);
assertTrue(isCompatible);
if(isCompatible){
if (isCompatible){
// Build the project in order to generate the makefiles
try{
curProject.build(IncrementalProjectBuilder.INCREMENTAL_BUILD,null);
@ -163,18 +166,31 @@ public class ManagedProject30MakefileTests extends TestCase {
if (i == 0) {
String configName = info.getDefaultConfiguration().getName();
IPath buildDir = Path.fromOSString(configName);
succeeded = ManagedBuildTestHelper.compareBenchmarks(curProject, buildDir, files);
if (compareBenchmark)
succeeded = ManagedBuildTestHelper.compareBenchmarks(curProject, buildDir, files);
else
succeeded = ManagedBuildTestHelper.verifyFilesDoNotExist(curProject, buildDir, files);
}
}
}
}
if (succeeded) { // Otherwise leave the projects around for comparison
for(int i = 0; i < projects.length; i++)
for (int i = 0; i < projects.length; i++)
ManagedBuildTestHelper.removeProject(projects[i].getName());
}
}
// Build projects and compare benchmarks
private void buildProjects(IProject projects[], IPath[] files) {
buildProjectsWorker(projects, files, true);
}
// Build projects but don't compare benchmarks because there should be not build files generated
private void buildDegenerativeProjects(IProject projects[], IPath[] files) {
buildProjectsWorker(projects, files, false);
}
private void createPathVariable(IPath tmpDir) {
IWorkspace workspace = ResourcesPlugin.getWorkspace();
workspace = ResourcesPlugin.getWorkspace();
@ -348,10 +364,31 @@ public class ManagedProject30MakefileTests extends TestCase {
IResource[] fileResource = (IResource[])resourceList.toArray(new IResource[resourceList.size()]);
try {
workspace.delete(fileResource, false, null);
} catch (Exception e) {fail("could not delete file in project " + project.getName());}
try {
buildProjects(projects, makefiles);
} finally {};
} catch (Exception e) {
fail("could not delete file in project " + project.getName());
}
buildProjects(projects, makefiles);
}
/* (non-Javadoc)
* tests 3.0 managed build system with a project which has only a single source file that is marked as
* "excluded from build" to see that this degenerative case is handled gracefully
*/
public void test30NoFilesToBuild(){
IPath[] makefiles = {
Path.fromOSString("makefile"),
Path.fromOSString("objects.mk"),
Path.fromOSString("subdir.mk"),
Path.fromOSString("sources.mk")};
IProject[] projects = createProjects("noFilesToBuild", null, null, true);
IProject project = projects[0];
IFile projfile = project.getFile("filetobeexcluded.cxx");
IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project);
IConfiguration config = info.getDefaultConfiguration();
IResourceConfiguration rconfig = config.createResourceConfiguration(projfile);
rconfig.setExclude(true);
buildDegenerativeProjects(projects, makefiles);
}
/* (non-Javadoc)