From a622b064ffaac6d23dcf270297ed0471ce3b5b67 Mon Sep 17 00:00:00 2001 From: David Inglis Date: Sat, 25 Feb 2006 04:29:00 +0000 Subject: [PATCH] moved standard make test into it own plugin --- .../ScannerConfigConsoleParserTests.java | 2 +- .../tests/ScannerConfigDiscoveryTests.java | 8 +- .../builder/tests/StandardBuildTests.java | 4 + .../core/tests/StandardBuildTestHelper.java | 269 ++++++++++++++++++ .../META-INF/MANIFEST.MF | 3 +- .../testplugin/ManagedBuildTestHelper.java | 2 - .../core/tests/AllStandardBuildTests.java | 42 --- ...nagedBuildCoreTests_SharedToolOptions.java | 11 +- .../core/tests/ManagedBuildMacrosTests.java | 4 +- .../core/tests/MultiVersionSupportTests.java | 13 +- .../core/tests/ResourceBuildCoreTests.java | 6 +- 11 files changed, 291 insertions(+), 73 deletions(-) rename build/{org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/standardbuilder/core => org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/builder}/tests/ScannerConfigConsoleParserTests.java (99%) rename build/{org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/standardbuilder/core => org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/builder}/tests/ScannerConfigDiscoveryTests.java (91%) create mode 100644 build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/core/tests/StandardBuildTestHelper.java delete mode 100644 build/org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/standardbuilder/core/tests/AllStandardBuildTests.java diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/standardbuilder/core/tests/ScannerConfigConsoleParserTests.java b/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/builder/tests/ScannerConfigConsoleParserTests.java similarity index 99% rename from build/org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/standardbuilder/core/tests/ScannerConfigConsoleParserTests.java rename to build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/builder/tests/ScannerConfigConsoleParserTests.java index ba5c2be29de..ff1835375c9 100644 --- a/build/org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/standardbuilder/core/tests/ScannerConfigConsoleParserTests.java +++ b/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/builder/tests/ScannerConfigConsoleParserTests.java @@ -8,7 +8,7 @@ * Contributors: * IBM - Initial API and implementation *******************************************************************************/ -package org.eclipse.cdt.standardbuilder.core.tests; +package org.eclipse.cdt.make.builder.tests; import java.util.ArrayList; import java.util.List; diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/standardbuilder/core/tests/ScannerConfigDiscoveryTests.java b/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/builder/tests/ScannerConfigDiscoveryTests.java similarity index 91% rename from build/org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/standardbuilder/core/tests/ScannerConfigDiscoveryTests.java rename to build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/builder/tests/ScannerConfigDiscoveryTests.java index fe5c628284b..1595d42c3b3 100644 --- a/build/org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/standardbuilder/core/tests/ScannerConfigDiscoveryTests.java +++ b/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/builder/tests/ScannerConfigDiscoveryTests.java @@ -8,7 +8,7 @@ * Contributors: * IBM - Initial API and implementation *******************************************************************************/ -package org.eclipse.cdt.standardbuilder.core.tests; +package org.eclipse.cdt.make.builder.tests; import java.io.ByteArrayInputStream; import java.util.Map; @@ -21,8 +21,8 @@ import org.eclipse.cdt.core.parser.IScannerInfo; import org.eclipse.cdt.make.core.MakeCorePlugin; import org.eclipse.cdt.make.core.MakeProjectNature; import org.eclipse.cdt.make.core.scannerconfig.ScannerConfigNature; +import org.eclipse.cdt.make.core.tests.StandardBuildTestHelper; import org.eclipse.cdt.make.internal.core.scannerconfig2.PerProjectSICollector; -import org.eclipse.cdt.managedbuilder.testplugin.ManagedBuildTestHelper; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; @@ -50,7 +50,7 @@ public class ScannerConfigDiscoveryTests extends TestCase { protected void setUp() throws Exception { fMonitor = new NullProgressMonitor(); - fCProject = ManagedBuildTestHelper.createProject("SCD", (IPath)null, MakeCorePlugin.MAKE_PROJECT_ID, null); + fCProject = StandardBuildTestHelper.createProject("SCD", (IPath)null, MakeCorePlugin.MAKE_PROJECT_ID); fCFile = fCProject.getProject().getFile("main.c"); if (!fCFile.exists()) { fCFile.create(new ByteArrayInputStream(" \n".getBytes()), false, fMonitor); @@ -58,7 +58,7 @@ public class ScannerConfigDiscoveryTests extends TestCase { } protected void tearDown() throws Exception { - ManagedBuildTestHelper.removeProject("SCDC"); + StandardBuildTestHelper.removeProject("SCDC"); } public void testGetCCompilerBuiltins() throws CoreException { diff --git a/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/builder/tests/StandardBuildTests.java b/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/builder/tests/StandardBuildTests.java index 241dc53cf47..755760d82df 100644 --- a/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/builder/tests/StandardBuildTests.java +++ b/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/builder/tests/StandardBuildTests.java @@ -54,6 +54,10 @@ public class StandardBuildTests extends TestCase { suite.addTest(new StandardBuildTests("testProjectSettings")); suite.addTest(new StandardBuildTests("testProjectConversion")); suite.addTest(new StandardBuildTests("testProjectCleanup")); + + suite.addTestSuite(ScannerConfigConsoleParserTests.class); + suite.addTestSuite(ScannerConfigDiscoveryTests.class); + return suite; } diff --git a/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/core/tests/StandardBuildTestHelper.java b/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/core/tests/StandardBuildTestHelper.java new file mode 100644 index 00000000000..45d7e953351 --- /dev/null +++ b/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/core/tests/StandardBuildTestHelper.java @@ -0,0 +1,269 @@ +package org.eclipse.cdt.make.core.tests; + +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; + +import junit.framework.Assert; + +import org.eclipse.cdt.core.CCorePlugin; +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.IWorkspaceDescription; +import org.eclipse.core.resources.IWorkspaceRoot; +import org.eclipse.core.resources.IWorkspaceRunnable; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.core.runtime.Path; + +public class StandardBuildTestHelper { + /* (non-Javadoc) + * Create a new project named name 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 + */ + static public IProject createProject( + final String name, + final IPath location, + final String projectId) + throws CoreException { + IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); + final IProject newProjectHandle = root.getProject(name); + IProject project = null; + + if (!newProjectHandle.exists()) { + IWorkspace workspace = ResourcesPlugin.getWorkspace(); + IWorkspaceDescription workspaceDesc = workspace.getDescription(); + workspaceDesc.setAutoBuilding(false); + workspace.setDescription(workspaceDesc); + IProjectDescription description = workspace.newProjectDescription(newProjectHandle.getName()); + //description.setLocation(root.getLocation()); + project = CCorePlugin.getDefault().createCProject(description, newProjectHandle, new NullProgressMonitor(), projectId); + } else { + project = newProjectHandle; + } + + // Open the project if we have to + if (!project.isOpen()) { + project.open(new NullProgressMonitor()); + } + + return project; + } + + /** + * Remove the IProject with the name specified in the argument from the + * receiver's workspace. + * + * @param name + */ + static public void removeProject(String name) { + IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); + final IProject project = root.getProject(name); + if (project.exists()) { + IWorkspace workspace = ResourcesPlugin.getWorkspace(); + IWorkspaceRunnable runnable = new IWorkspaceRunnable() { + public void run(IProgressMonitor monitor) throws CoreException { + System.gc(); + System.runFinalization(); + project.delete(true, true, null); + } + }; + NullProgressMonitor monitor = new NullProgressMonitor(); + try { + workspace.run(runnable, root, IWorkspace.AVOID_UPDATE, monitor); + } catch (CoreException e2) { + Assert.assertTrue(false); + } + } + } + + static public boolean compareBenchmarks(final IProject project, IPath testDir, IPath[] files) { + IWorkspace workspace = ResourcesPlugin.getWorkspace(); + IWorkspaceRunnable runnable = new IWorkspaceRunnable() { + public void run(IProgressMonitor monitor) throws CoreException { + project.refreshLocal(IResource.DEPTH_INFINITE, monitor); + } + }; + try { + NullProgressMonitor monitor = new NullProgressMonitor(); + workspace.run(runnable, workspace.getRoot(), IWorkspace.AVOID_UPDATE, monitor); + } catch (Exception e) { + Assert.fail("File " + files[0].lastSegment() + " - project refresh failed."); + } + for (int i=0; i 1) { + IPath newDir = tmpSrcDir; + do { + IPath dir = file.uptoSegment(1); + newDir = newDir.append(dir); + file = file.removeFirstSegments(1); + succeed = newDir.toFile().mkdir(); + } while (file.segmentCount() > 1); + } + IPath destFile = tmpSrcDir.append(files[i]); + FileWriter writer = null; + try { + writer = new FileWriter(destFile.toFile()); + } catch (Exception e) { + Assert.fail("File " + files[i].toString() + " could not be written."); + } + try { + int c; + do { + c = srcReader.read(); + if (c == -1) break; + writer.write(c); + } while (c != -1); + srcReader.close(); + writer.close(); + } catch (Exception e) { + Assert.fail("File " + file.toString() + " could not be copied."); + } + } + } + } + } + return tmpSrcDir; + } + + static public void deleteTempDir(IPath tmpSubDir, IPath[] files) { + IPath tmpSrcDir = null; + String userDirStr = System.getProperty("user.home"); + if (userDirStr != null) { + IPath userDir = Path.fromOSString(userDirStr); + tmpSrcDir = userDir.append(tmpSubDir); + if (userDir.toString().equalsIgnoreCase(tmpSrcDir.toString())) { + Assert.fail("Temporary sub-directory cannot be the empty string."); + } else { + File tmpSrcDirFile = tmpSrcDir.toFile(); + if (!tmpSrcDirFile.exists()) { + Assert.fail("Temporary directory " + tmpSrcDirFile.toString() + " does not exist."); + } else { + for (int i=0; i