diff --git a/core/org.eclipse.cdt.ui.tests/.classpath b/core/org.eclipse.cdt.ui.tests/.classpath index 9fb20c1d6fd..a067b89762f 100644 --- a/core/org.eclipse.cdt.ui.tests/.classpath +++ b/core/org.eclipse.cdt.ui.tests/.classpath @@ -3,6 +3,7 @@ + diff --git a/core/org.eclipse.cdt.ui.tests/build.properties b/core/org.eclipse.cdt.ui.tests/build.properties index 1eab93ac3d4..36df47cc74a 100644 --- a/core/org.eclipse.cdt.ui.tests/build.properties +++ b/core/org.eclipse.cdt.ui.tests/build.properties @@ -1 +1 @@ -source.cdttests.jar = src/ +source.cdttests.jar = src/, ui/, core/, model/ diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/AllCoreTests.java b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/AllCoreTests.java new file mode 100644 index 00000000000..962e93ad87c --- /dev/null +++ b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/AllCoreTests.java @@ -0,0 +1,44 @@ +package org.eclipse.cdt.core.model.tests; +/* + * (c) Copyright QNX Software Systems Ltd. 2002. + * All Rights Reserved. + */ + +import org.eclipse.cdt.internal.core.model.TranslationUnit; +import org.eclipse.cdt.testplugin.util.*; + +import junit.framework.Test; +import junit.framework.TestSuite; + + +/** + * + * AllTests.java + * This is the main entry point for running this suite of JUnit tests + * for all tests within the package "org.eclipse.cdt.core.model" + * + * @author Judy N. Green + * @since Jul 19, 2002 + */ +public class AllCoreTests { + + public static void main(String[] args) { + junit.textui.TestRunner.run(suite()); + } + + public static Test suite() { + TestSuite suite = new TestSuite(); + + // Just add more test cases here as you create them for + // each class being tested + + suite.addTest(CModelTests.suite()); + suite.addTest(CModelExceptionTest.suite()); + suite.addTest(FlagTests.suite()); + suite.addTest(ArchiveTests.suite()); + suite.addTest(TranslationUnitTests.suite()); + return suite; + + } +} // End of AllCoreTests.java + diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/ArchiveTests.java b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/ArchiveTests.java new file mode 100644 index 00000000000..1bd4e9be66f --- /dev/null +++ b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/ArchiveTests.java @@ -0,0 +1,305 @@ +package org.eclipse.cdt.core.model.tests; + +/* + * (c) Copyright QNX Software Systems Ltd. 2002. + * All Rights Reserved. + */ + + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; + +import junit.framework.TestCase; +import junit.framework.TestSuite; +import org.eclipse.cdt.testplugin.*; +import org.eclipse.cdt.testplugin.util.*; +import org.eclipse.cdt.core.model.*; +import org.eclipse.core.internal.runtime.Log; +import org.eclipse.core.resources.*; +import org.eclipse.core.runtime.*; +import org.eclipse.cdt.core.CCorePlugin; +import org.eclipse.cdt.core.CCProjectNature; +import org.eclipse.cdt.core.CProjectNature; +import org.eclipse.cdt.internal.core.model.*; + + +/** + * @author Peter Graves + * + * This file contains a set of generic tests for the core C model's Archive + * class. There is nothing exotic here, mostly just sanity type tests + * + */ +public class ArchiveTests extends TestCase { + IWorkspace workspace; + IWorkspaceRoot root; + ICProject testProject; + IFile cfile, exefile, libfile, archfile, objfile; + Path cpath, exepath, libpath, archpath, objpath; + NullProgressMonitor monitor; + + + /** + * Constructor for ArchiveTests + * @param name + */ + public ArchiveTests(String name) { + super(name); + /*** + * The assume that they have a working workspace + * and workspace root object to use to create projects/files in, + * so we need to get them setup first. + */ + workspace= ResourcesPlugin.getWorkspace(); + root= workspace.getRoot(); + monitor = new NullProgressMonitor(); + if (workspace==null) + fail("Workspace was not setup"); + if (root==null) + fail("Workspace root was not setup"); + + } + + /** + * Sets up the test fixture. + * + * Called before every test case method. + * + * Example code test the packages in the project + * "com.qnx.tools.ide.cdt.core" + */ + protected void setUp() throws CoreException,FileNotFoundException { + + /*** + * Setup the various files, paths and projects that are needed by the + * tests + */ + String pluginRoot=org.eclipse.core.runtime.Platform.getPlugin("org.eclipse.cdt.ui.tests").find(new Path("/")).getFile(); + testProject=CProjectHelper.createCProject("filetest", "none"); + if (testProject==null) + fail("Unable to create project"); + + cfile = testProject.getProject().getFile("exetest.c"); + if (!cfile.exists()) { + cfile.create(new FileInputStream(pluginRoot+"model/org/eclipse/cdt/core/model/tests/resources/exe/main.c"),false, monitor); + + } + cpath=new Path(workspace.getRoot().getLocation()+"/filetest/main.c"); + + objfile = testProject.getProject().getFile("exetest.o"); + if (!objfile.exists()) { + objfile.create(new FileInputStream(pluginRoot+"model/org/eclipse/cdt/core/model/tests/resources/exe/x86/o.g/main.o"),false, monitor); + + } + objpath=new Path(workspace.getRoot().getLocation()+"/filetest/main.o"); + + exefile = testProject.getProject().getFile("test_g"); + if (!exefile.exists()) { + exefile.create(new FileInputStream(pluginRoot+"model/org/eclipse/cdt/core/model/tests/resources/exe/x86/o.g/exe_g"),false, monitor); + + } + exepath=new Path(workspace.getRoot().getLocation()+"/filetest/exe_g"); + + archfile = testProject.getProject().getFile("libtestlib_g.a"); + if (!archfile.exists()) { + archfile.create(new FileInputStream(pluginRoot+"model/org/eclipse/cdt/core/model/tests/resources/testlib/x86/a.g/libtestlib_g.a"),false, monitor); + + } + libpath=new Path(workspace.getRoot().getLocation()+"/filetest/libtestlib_g.so"); + + libfile = testProject.getProject().getFile("libtestlib_g.so"); + if (!libfile.exists()) { + libfile.create(new FileInputStream(pluginRoot+"model/org/eclipse/cdt/core/model/tests/resources/testlib/x86/so.g/libtestlib_g.so"),false, monitor); + + } + archpath=new Path(workspace.getRoot().getLocation()+"/filetest/libtestlib_g.a"); + + + } + + /** + * Tears down the test fixture. + * + * Called after every test case method. + */ + protected void tearDown() throws CoreException { + CProjectHelper.delete(testProject); + } + + public static TestSuite suite() { + return new TestSuite(ArchiveTests.class); + } + + public static void main (String[] args){ + junit.textui.TestRunner.run(suite()); + } + + + /*** + * This is a simple test to make sure we can not create an Archive with + * a non-archive Ifile/IPath + * Note: This test is of questionable merit, as people should always be + * getting their binaries from the project, not creating them themselves + + */ + public void testArchive() throws CoreException { + Archive myArchive; + boolean caught; + + myArchive=null; + caught=false; + try { + myArchive=new Archive(testProject, cfile); + } catch (IllegalArgumentException e) { + caught=true; + } + assertTrue("PR:12037 Created an archive with a C file", caught); + myArchive=null; + caught=false; + try { + myArchive=new Archive(testProject, cpath); + } catch (IllegalArgumentException e) { + caught=true; + } + assertTrue("Created an archive with a C file", caught); + + myArchive=null; + caught=false; + try { + myArchive=new Archive(testProject, objfile); + } catch (IllegalArgumentException e) { + caught=true; + } + assertTrue("Created an archive with a .o file", caught); + myArchive=null; + caught=false; + try { + myArchive=new Archive(testProject, objpath); + } catch (IllegalArgumentException e) { + caught=true; + } + assertTrue("Created an archive with a .o file", caught); + + myArchive=null; + caught=false; + try { + myArchive=new Archive(testProject, exefile); + } catch (IllegalArgumentException e) { + caught=true; + } + assertTrue("Created an archive with a exe file", caught); + myArchive=null; + caught=false; + try { + myArchive=new Archive(testProject, exepath); + } catch (IllegalArgumentException e) { + caught=true; + } + assertTrue("Created an archive with a exe file", caught); + + myArchive=null; + caught=false; + try { + myArchive=new Archive(testProject, libfile); + } catch (IllegalArgumentException e) { + caught=true; + } + assertTrue("Created an archive with a .so file", caught); + myArchive=null; + caught=false; + try { + myArchive=new Archive(testProject, libpath); + } catch (IllegalArgumentException e) { + caught=true; + } + assertTrue("Created an archive with a .so file", caught); + + myArchive=null; + caught=false; + try { + myArchive=new Archive(testProject, archfile); + } catch (IllegalArgumentException e) { + caught=true; + } + assertTrue("Created an archive with a .a file", !caught); + myArchive=null; + caught=false; + try { + myArchive=new Archive(testProject, archpath); + } catch (IllegalArgumentException e) { + caught=true; + } + assertTrue("Created an archive with a .a file", !caught); + + + } + + + + public void testGetBinaries() throws CoreException,FileNotFoundException { + Archive myArchive; + IBinary[] bins; + ICElement[] elements; + ExpectedStrings expBin, expObj[]; + String[] myStrings; + int x; + IArchive[] myArchives; + + + /**** + * Setup the expected strings for the binaries, and the elements within + * the binaries + */ + myStrings=new String[2]; + myStrings[0]="test.o"; + myStrings[1]="test2.o"; + expBin=new ExpectedStrings(myStrings); + + expObj=new ExpectedStrings[2]; + myStrings[0]="func1"; + myStrings[1]="func2"; + expObj[0]=new ExpectedStrings(myStrings); + myStrings[0]="test2func1"; + myStrings[1]="test2func2"; + expObj[1]=new ExpectedStrings(myStrings); + + /*** + * Grab the archive we want to test, and find all the binaries and + * all the elements in all the binaries and make sure we get + * everything we expect. + */ + myArchive=CProjectHelper.findArchive(testProject, "libtestlib_g.a"); + if (myArchive==null) + fail("Could not find archive"); + bins=myArchive.getBinaries(); + for (x=0;x +#include + +/* A function prototype */ +int func2p(void); + +/* A global variable */ +int globalvar; + +/* A enumeration */ +enum myenum {ENUM_A=1, ENUM_B=2, ENUM_C=3, ENUM_D=4}; + +/* A structure. This also includes a typedef around the strcture def + * which at the time of writing was not picked up. + */ +typedef struct mystruct { + int a; + char b; + long c; +} mystruct_t; + +/* A union */ +union myunion { + int x; + char y; + long z; +}; + +/* A typedef */ +typedef struct mystruct mytype; + + +/* A couple functions */ + +void * func1(void) +{ + return(NULL); +} + + +int func2(void) +{ + return(0); +} + +int main(int argc, char ** argv) +{ + int var1; + printf("Hello world\n"); +} + + +void func3() +{ + printf("This is not really here\n"); +} diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/Makefile b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/Makefile new file mode 100644 index 00000000000..0e22650c04c --- /dev/null +++ b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/Makefile @@ -0,0 +1,8 @@ +LIST=VARIANT +ifndef QRECURSE +QRECURSE=recurse.mk +ifdef QCONFIG +QRDIR=$(dir $(QCONFIG)) +endif +endif +include $(QRDIR)$(QRECURSE) diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/common.mk b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/common.mk new file mode 100644 index 00000000000..6e21c521623 --- /dev/null +++ b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/common.mk @@ -0,0 +1,7 @@ +ifndef QCONFIG +QCONFIG=qconfig.mk +endif +include $(QCONFIG) +USEFILE= +LIBS+=socket +include $(MKFILES_ROOT)/qtargets.mk diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/main.c b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/main.c new file mode 100644 index 00000000000..62952639754 --- /dev/null +++ b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/main.c @@ -0,0 +1,7 @@ +#include + +int main() +{ + printf("Hello there\n"); + return(0); +} diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/ppc/Makefile b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/ppc/Makefile new file mode 100644 index 00000000000..0e22650c04c --- /dev/null +++ b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/ppc/Makefile @@ -0,0 +1,8 @@ +LIST=VARIANT +ifndef QRECURSE +QRECURSE=recurse.mk +ifdef QCONFIG +QRDIR=$(dir $(QCONFIG)) +endif +endif +include $(QRDIR)$(QRECURSE) diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/ppc/be.g/Makefile b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/ppc/be.g/Makefile new file mode 100644 index 00000000000..2c760893e32 --- /dev/null +++ b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/ppc/be.g/Makefile @@ -0,0 +1 @@ +include ../../common.mk diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/ppc/be.g/exe_g b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/ppc/be.g/exe_g new file mode 100644 index 00000000000..1c54db11d20 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/ppc/be.g/exe_g differ diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/ppc/be.g/main.o b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/ppc/be.g/main.o new file mode 100644 index 00000000000..41e9e97110e Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/ppc/be.g/main.o differ diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/ppc/be.g/test.o b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/ppc/be.g/test.o new file mode 100644 index 00000000000..9a35dfb2cf9 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/ppc/be.g/test.o differ diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/ppc/be.g/test2.o b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/ppc/be.g/test2.o new file mode 100644 index 00000000000..bae3191b475 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/ppc/be.g/test2.o differ diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/test.c b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/test.c new file mode 100644 index 00000000000..23baffafb31 --- /dev/null +++ b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/test.c @@ -0,0 +1,14 @@ +#include + + +int func1 (void) +{ + printf("This is func1\n"); + return(1); +} + +char * func2(void) +{ + printf("This is func2\n"); + return(0); +} diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/test2.c b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/test2.c new file mode 100644 index 00000000000..7b26241b059 --- /dev/null +++ b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/test2.c @@ -0,0 +1,13 @@ +#include + +int test2func1(void) +{ + printf("This is a function in the second object\n"); + return(1); +} + +int test2func2(void) +{ + printf("This is another function in the second object\n"); + return(2); +} diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/x86/Makefile b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/x86/Makefile new file mode 100644 index 00000000000..0e22650c04c --- /dev/null +++ b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/x86/Makefile @@ -0,0 +1,8 @@ +LIST=VARIANT +ifndef QRECURSE +QRECURSE=recurse.mk +ifdef QCONFIG +QRDIR=$(dir $(QCONFIG)) +endif +endif +include $(QRDIR)$(QRECURSE) diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/x86/o.g/Makefile b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/x86/o.g/Makefile new file mode 100644 index 00000000000..2c760893e32 --- /dev/null +++ b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/x86/o.g/Makefile @@ -0,0 +1 @@ +include ../../common.mk diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/x86/o.g/exe_g b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/x86/o.g/exe_g new file mode 100644 index 00000000000..465e16de33d Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/x86/o.g/exe_g differ diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/x86/o.g/main.o b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/x86/o.g/main.o new file mode 100644 index 00000000000..8c61c21f50d Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/x86/o.g/main.o differ diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/x86/o.g/test.o b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/x86/o.g/test.o new file mode 100644 index 00000000000..5f956885cbf Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/x86/o.g/test.o differ diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/x86/o.g/test2.o b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/x86/o.g/test2.o new file mode 100644 index 00000000000..aa8de348603 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/x86/o.g/test2.o differ diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/x86/o/Makefile b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/x86/o/Makefile new file mode 100644 index 00000000000..2c760893e32 --- /dev/null +++ b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/x86/o/Makefile @@ -0,0 +1 @@ +include ../../common.mk diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/x86/o/exe b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/x86/o/exe new file mode 100644 index 00000000000..d13631162d7 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/x86/o/exe differ diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/x86/o/main.o b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/x86/o/main.o new file mode 100644 index 00000000000..a5c78c1ca4e Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/x86/o/main.o differ diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/x86/o/test.o b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/x86/o/test.o new file mode 100644 index 00000000000..357c3985ea1 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/x86/o/test.o differ diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/x86/o/test2.o b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/x86/o/test2.o new file mode 100644 index 00000000000..52e88a7397b Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exe/x86/o/test2.o differ diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exebig/Makefile b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exebig/Makefile new file mode 100644 index 00000000000..0e22650c04c --- /dev/null +++ b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exebig/Makefile @@ -0,0 +1,8 @@ +LIST=VARIANT +ifndef QRECURSE +QRECURSE=recurse.mk +ifdef QCONFIG +QRDIR=$(dir $(QCONFIG)) +endif +endif +include $(QRDIR)$(QRECURSE) diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exebig/common.mk b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exebig/common.mk new file mode 100644 index 00000000000..80c1e67f6f8 --- /dev/null +++ b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exebig/common.mk @@ -0,0 +1,7 @@ +ifndef QCONFIG +QCONFIG=qconfig.mk +endif +include $(QCONFIG) +USEFILE= + +include $(MKFILES_ROOT)/qtargets.mk diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exebig/main.c b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exebig/main.c new file mode 100644 index 00000000000..ce93b899e09 --- /dev/null +++ b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exebig/main.c @@ -0,0 +1,8 @@ +#include +int bigArray[100]; +int x[10]={1,2,3,4,5,6,7,8,9,0}; +int main() +{ + printf("Hello there\n"); + return(0); +} diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exebig/x86/Makefile b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exebig/x86/Makefile new file mode 100644 index 00000000000..0e22650c04c --- /dev/null +++ b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exebig/x86/Makefile @@ -0,0 +1,8 @@ +LIST=VARIANT +ifndef QRECURSE +QRECURSE=recurse.mk +ifdef QCONFIG +QRDIR=$(dir $(QCONFIG)) +endif +endif +include $(QRDIR)$(QRECURSE) diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exebig/x86/o.g/Makefile b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exebig/x86/o.g/Makefile new file mode 100644 index 00000000000..2c760893e32 --- /dev/null +++ b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exebig/x86/o.g/Makefile @@ -0,0 +1 @@ +include ../../common.mk diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exebig/x86/o.g/exebig_g b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exebig/x86/o.g/exebig_g new file mode 100644 index 00000000000..3aacf6267c5 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exebig/x86/o.g/exebig_g differ diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exebig/x86/o.g/main.o b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exebig/x86/o.g/main.o new file mode 100644 index 00000000000..e7d818de524 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/exebig/x86/o.g/main.o differ diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/testlib/Makefile b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/testlib/Makefile new file mode 100644 index 00000000000..0e22650c04c --- /dev/null +++ b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/testlib/Makefile @@ -0,0 +1,8 @@ +LIST=VARIANT +ifndef QRECURSE +QRECURSE=recurse.mk +ifdef QCONFIG +QRDIR=$(dir $(QCONFIG)) +endif +endif +include $(QRDIR)$(QRECURSE) diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/testlib/common.mk b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/testlib/common.mk new file mode 100644 index 00000000000..dd99ed569bc --- /dev/null +++ b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/testlib/common.mk @@ -0,0 +1,6 @@ +ifndef QCONFIG +QCONFIG=qconfig.mk +endif +include $(QCONFIG) + +include $(MKFILES_ROOT)/qtargets.mk diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/testlib/test.c b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/testlib/test.c new file mode 100644 index 00000000000..23baffafb31 --- /dev/null +++ b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/testlib/test.c @@ -0,0 +1,14 @@ +#include + + +int func1 (void) +{ + printf("This is func1\n"); + return(1); +} + +char * func2(void) +{ + printf("This is func2\n"); + return(0); +} diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/testlib/test2.c b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/testlib/test2.c new file mode 100644 index 00000000000..7b26241b059 --- /dev/null +++ b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/testlib/test2.c @@ -0,0 +1,13 @@ +#include + +int test2func1(void) +{ + printf("This is a function in the second object\n"); + return(1); +} + +int test2func2(void) +{ + printf("This is another function in the second object\n"); + return(2); +} diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/testlib/x86/Makefile b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/testlib/x86/Makefile new file mode 100644 index 00000000000..0e22650c04c --- /dev/null +++ b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/testlib/x86/Makefile @@ -0,0 +1,8 @@ +LIST=VARIANT +ifndef QRECURSE +QRECURSE=recurse.mk +ifdef QCONFIG +QRDIR=$(dir $(QCONFIG)) +endif +endif +include $(QRDIR)$(QRECURSE) diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/testlib/x86/a.g/Makefile b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/testlib/x86/a.g/Makefile new file mode 100644 index 00000000000..2c760893e32 --- /dev/null +++ b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/testlib/x86/a.g/Makefile @@ -0,0 +1 @@ +include ../../common.mk diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/testlib/x86/a.g/libtestlib_g.a b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/testlib/x86/a.g/libtestlib_g.a new file mode 100644 index 00000000000..06377b5ef2f Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/testlib/x86/a.g/libtestlib_g.a differ diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/testlib/x86/a.g/test.o b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/testlib/x86/a.g/test.o new file mode 100644 index 00000000000..a12942b1527 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/testlib/x86/a.g/test.o differ diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/testlib/x86/a.g/test2.o b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/testlib/x86/a.g/test2.o new file mode 100644 index 00000000000..87e730cd7c5 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/testlib/x86/a.g/test2.o differ diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/testlib/x86/so.g/Makefile b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/testlib/x86/so.g/Makefile new file mode 100644 index 00000000000..2c760893e32 --- /dev/null +++ b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/testlib/x86/so.g/Makefile @@ -0,0 +1 @@ +include ../../common.mk diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/testlib/x86/so.g/libtestlib_g.so b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/testlib/x86/so.g/libtestlib_g.so new file mode 100644 index 00000000000..c0e76f7695b Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/testlib/x86/so.g/libtestlib_g.so differ diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/testlib/x86/so.g/libtestlib_gS.a b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/testlib/x86/so.g/libtestlib_gS.a new file mode 100644 index 00000000000..b03c33bdc91 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/testlib/x86/so.g/libtestlib_gS.a differ diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/testlib/x86/so.g/test.o b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/testlib/x86/so.g/test.o new file mode 100644 index 00000000000..c9009cb22dc Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/testlib/x86/so.g/test.o differ diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/testlib/x86/so.g/test2.o b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/testlib/x86/so.g/test2.o new file mode 100644 index 00000000000..a13bcd826b8 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/testlib/x86/so.g/test2.o differ diff --git a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/testplugin/CProjectHelper.java b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/testplugin/CProjectHelper.java index 02e0051ab9f..0c295a28bd3 100644 --- a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/testplugin/CProjectHelper.java +++ b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/testplugin/CProjectHelper.java @@ -13,6 +13,14 @@ import org.eclipse.cdt.core.CProjectNature; import org.eclipse.cdt.core.model.CModelException; import org.eclipse.cdt.core.model.ICFolder; import org.eclipse.cdt.core.model.ICProject; +import org.eclipse.cdt.internal.core.model.Archive; +import org.eclipse.cdt.internal.core.model.Binary; +import org.eclipse.cdt.internal.core.model.BinaryContainer; +import org.eclipse.cdt.internal.core.model.TranslationUnit; +import org.eclipse.cdt.core.model.ICElement; +import org.eclipse.cdt.internal.core.model.ArchiveContainer; +import org.eclipse.cdt.core.model.IArchive; +import org.eclipse.cdt.core.model.IBinary; import org.eclipse.cdt.internal.core.model.CModelManager; import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IFile; @@ -135,7 +143,132 @@ public class CProjectHelper { //IClasspathEntry cpe= JavaCore.newProjectEntry(required.getProject().getFullPath()); //addToClasspath(cproject, cpe); } - + + /** + * Attempts to find an archive with the given name in the workspace + */ + public static Archive findArchive(ICProject testProject,String name) { + Archive myArchive; + int x; + IArchive[] myArchives; + ArchiveContainer archCont; + /*** + * Since ArchiveContainer.getArchives does not wait until + * all the archives in the project have been parsed before + * returning the list, we have to do a sync ArchiveContainer.getChildren + * first to make sure we find all the archives. + */ + archCont=(ArchiveContainer)testProject.getArchiveContainer(); + archCont.getChildren(true); + myArchives=testProject.getArchiveContainer().getArchives(); + if (myArchives.length<1) + return(null); + myArchive=null; + for (x=0;x