Running Automated Tests with PDE Build

In a previous post, I provided a set of projects that you could use to get a sample build running quickly. The idea was that getting your first build running is half the battle. From that point on, you can make small, incremental changes to accomplish what you like.

A common request I’ve received, though, is to provide a similar sample build that includes the running of JUnits using the Eclipse Test Framework. Well here it is! Just download and import the sample projects, and follow the directions in the included readme.txt file.

Note: If you want to run this sample build using Eclipse 3.2, you’ll need to work around a PDE Build defect. For instructions on how to do this, check out the “Problems parsing feature file in a product build” section on the PDE Build wiki page.

51 Responses to Running Automated Tests with PDE Build

  1. Hi,
    thanks for this article. We need to get our build for an RCP app running under cruise so this should help.

    I came across a project called Pluginbuilder which you might find interesting: http://www.pluginbuilder.org/

    Channing

  2. Hi Patrick,
    Sorry about posting to the wrong article. You said:

    > And when you say the test plugins are present, do you mean the plugins that come with the Ecilpse Testing Framework?

    yes

    > If those plugins are there, you should check the log to see if some dependency is not being met when the test plugins are resolving.

    I’ve looked and cannot see anything in the logs.

    > And remember, the test framework needs to run in a complete copy of the Eclipse SDK, not just the RCP runtime binary.

    In fact, we are using a complete 3.3.1.1 eclipse sdk with the test plugins to build with. I am able to run up eclipse from the test directory, which contains our rcp app, the eclipse sdk and test plugins, but there is nothing in the logs to indicate that the plugins do not have unresolved dependencies.

    I think I need to start from scratch again as I have obviously missed a step somewhere.

    Perhaps Eclipse should adopt the pluginbuilder, or something like it, since the PDE build and tests are needed by anyone doing rcp or plugin development, and its very painful.

    Channing

  3. pjpaulin says:

    Hi Channing,

    I jsut went through the code again and it works for me on Windows XP. Are you running on a different platform? If so, you may need to modify some of the directory names in the build.properties file.

    I’ve also updated the instructions to be a little clearer, and you may want to start from scratch and try again.

    It also might help to email me the complete log output from the build process. My email address is listed in the “About Me” section.

    — Patrick

  4. Dora says:

    Hi Patrick,
    Can you please tell me what this is? :

    [echo] Running com.rcpquickstart.helloworld.HelloWorldModelTest. Result file: c:/helloworld-build/test/helloworld/results/com.rcpquickstart.helloworld.HelloWorldModelTest.xml.
    [java] Class not found “com.rcpquickstart.helloworld.HelloWorldModelTest”
    [java] Java Result: 2
    collect-results:
    [style] Warning: the task name is deprecated. Use instead.
    [style] Transforming into c:\helloworld-build\test\helloworld\results
    [concat] No existing resources and no nested text, doing nothing ”
    My build is successful, but i can’t open the application. Can you please give me a suggestion what to do?
    Thank you,
    Dora

  5. Patrick says:

    Hi Dora,

    This error is related to running the unit tests after the actual product build completes. It’s hard to say what’s going on without more information. If you’d like to email me your build.properties file, I’d be happy to take a look.

    — Patrick

  6. Dora says:

    Hi Patrick,
    Thanks for the reply and sorry for not replying earlier,
    I managed to solve the problem.
    Dora

  7. Hi Patrick,

    I’m tyring to get this example up and running under Eclipse 3.4 in linux, and while the build works fine (I can run the resulting application with out probelms), the testing step fails.

    I’ve tried running the build script from:
    * within eclipse, as suggested by the readme;
    * from the command line with ‘ant’; and,
    * from the command line with ‘java -jar -application org.eclipse.ant.core.antRunner test

    All three approaches seem to result in the same thing. The core-test task spits out:

    core-test:

    java-test:
    [echo] Running com.rcpquickstart.helloworld.HelloWorldModelTest. Result file: /home/rcreswick/helloworld-build/test/eclipse/results/com.rcpquickstart.helloworld.HelloWorldModelTest.xml.
    [java] Java Result: 13

    When running with -v, I can find the log, (full version here: http://pastebin.com/m322ba870 should be a valid url until 12/04/2008) and this seems to be the central problem:

    java.lang.RuntimeException: Application “org.eclipse.test.coretestapplication” could not be found in the registry. The applications available are: com.rcpquickstart.helloworld.application, org.eclipse.equinox.app.error.
    at org.eclipse.equinox.internal.app.EclipseAppContainer.startDefaultApp(EclipseAppContainer.java:242)
    at org.eclipse.equinox.internal.app.MainApplicationLauncher.run(MainApplicationLauncher.java:29)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:382)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
    at org.eclipse.core.launcher.Main.main(Main.java:30)

    There are a number of other missing dependencies, so I copied those bundles into the helloworld-build-target/eclipse/plugins folder, but it hasn’t had any effect.

    What do I need to do to get past this Java Result 13 error? (Presumably something with adding the coretestapplication so it can be found, but I’m at a loss as to how to do that).

    Thanks!
    Rogan

  8. Patrick says:

    Hi Rogan,

    If you can run the application after building it, then your dependencies should be fine. After the build, your app along with the Eclipse Testing Framework is copied into a “test” directory. You may want to verify that the ETF is getting copied into the test environment properly. The core-test application exists in the org.eclipse.test plug-in, and if that plug-in is not present or not getting loaded, you will have problems.

    If you’d like to send me the entire log output via email, I’d be happy to take a look.

    — Patrick

  9. Hi Patrick,

    Thanks for the quick reply!

    I’ve gotten this to work by sticking a whole bunch of bundles into helloworld-build/test/eclipse before running `ant test`. They were:

    org.apache.ant_1.7.0.v200803061910/
    org.eclipse.equinox.security_1.0.1.R34x_v20080721.jar
    org.eclipse.jface.text_3.4.1.r341_v20080827-1100.jar
    org.eclipse.core.filesystem_1.2.0.v20080604-1400.jar
    org.eclipse.core.net_1.1.0.I20080604.jar
    org.eclipse.core.resources_3.4.1.R34x_v20080902.jar
    org.eclipse.core.runtime.compatibility_3.2.0.v20071008.jar
    org.eclipse.text_3.4.0.v20080605-1800.jar
    org.eclipse.ui.forms_3.3.101.v20080708_34x.jar
    org.eclipse.ui.ide_3.4.1.M20080903-2000.jar
    org.eclipse.ui.ide.application_1.0.0.I20080603-2000.jar
    org.eclipse.ui.navigator_3.3.101.M20080827-0800.jar
    org.eclipse.ui.navigator.resources_3.3.101.M20080827-0800.jar
    org.eclipse.ui.views_3.3.0.I20080509-2000.jar
    org.eclipse.ui.views.properties.tabbed_3.4.1.M20080730-0800.jar
    org.eclipse.ui.workbench.texteditor_3.4.1.r341_v20080827-1100.jar
    org.eclipse.update.core_3.2.201.R34x_v20080714.jar

    (I identified them by looking at the output of ‘ant -v test’, which write a log to helloworld-build/test/eclipse/results/com.rcpquickstart.helloworld.HelloWorldModelTest.txt )

    Adding those to the SDK zip that is extracted to helloworld-build/test/eclipse made the build process work from end-to-end — with Junit 3.8.

    I’m trying to get JUnit 4 to work now, by applying the patch found here: https://bugs.eclipse.org/bugs/show_bug.cgi?id=153429

    So far I have not had much success. Oddly, I’m running into a very similar exception now (currently running the tests directly from the workbench to get that level of functionality done first):

    java.lang.RuntimeException: Application “org.eclipse.pde.junit.runtime.uitestapplication” could not be found in the registry. The applications available are: org.eclipse.equinox.app.error, org.eclipse.test.dispatcher.coretestapplication, org.eclipse.test.dispatcher.uitestapplication, org.eclipse.ui.ide.workbench, org.eclipse.update.core.standaloneUpdate, org.eclipse.update.core.siteOptimizer, com.rcpquickstart.helloworld.application.
    at org.eclipse.equinox.internal.app.EclipseAppContainer.startDefaultApp(EclipseAppContainer.java:242)
    at org.eclipse.equinox.internal.app.MainApplicationLauncher.run(MainApplicationLauncher.java:29)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:382)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1212)

    This is obviously outside the scope of your example, but I thought I’d post it here to see if you have any suggestions.

    Thanks!
    Rogan

  10. Patrick says:

    Hi Rogan,

    All of those plug-ins should already be in the test environment if you start by copying in a fresh Eclipse SDK. That is what the build script attempts to do.

    As for running JUnit 4 tests, I’ve never tried to apply the patch myself but I’ve worked with others who haven’t had much luck. You may want to ask for help on the Bugzilla entry itself and maybe the people providing the patch can offer help.

    — Patrick

  11. Jevon says:

    It would have been nice if Dora (above) described how she fixed her problem, because I am having the exact same problem šŸ™‚

    After struggling with the testing framework, I got it to build, only except I have this error:

    java-test:
    [echo] Running org.openiaml.model.tests.inference.LoadModelTestCase. Result file: c:/eclipse-33-test/results/org.openiaml.model.tests.inference.LoadModelTestCase.xml.
    [java] Java Result: 2

    The weird thing is that this occurs when loading a JWebUnit2 test case. If I use it to test something like “HelloWorld extends TestCase”, it runs fine.

  12. Patrick says:

    Hi Jevon,

    I’ve never run JWebUnit2 tests with the ETF, but does it have dependencies that may not be available in the test environment after the build?

    If you’d like to send me the log of your build output and also any stack trace generated in the unit test output, I’d be happy to take a look.

    — Patrick

  13. Ed Lott says:

    Greetings to those struggling to get automated testing to work with 3.4. In the past, our process was as follows:

    1) Build our plugin(s).
    2) Copy our plugins to an eclipse installation (i.e. eclipse-SDK-3.4.1) that also contains the ETF plugins (i.e. eclipse-test-framework-3.4.1).
    3) Launch the ETF with a test.xml file that invokes our JUnit test classes.

    When we get to step 3, the launcher fails with Java 13 error.

    Eclipse 3.4 contains changes for the new update manager (i.e. P2). This new functionality makes eclipse much more picky about what plugins it will load. You can’t just copy your plugin(s) into the eclipse plugin folder or even the dropin folder and then launch ETF – the framework will not see them and you’ll get the error.

    To work around this, do the following:

    1) Setup your test installation of eclipse (unzip eclipse-SDK and eclipse-test-framework to the same location).
    2) Add any plugins that you depend on (but do not build) to this installation.
    3) Startup the test installation. Run “Help->Software Updates->Update…” if you like.
    4) Exit the test eclipse installation.
    5) Build your plugins.
    6) Place them in the dropins directory of your test installation.
    7) Startup the test installation of eclipse. Make sure you can see your plugins when you choose “Help->About Eclipse SDK->Plug-in Details”. You may need to restart a couple of times. If you can’t see your plugins, you have a dependency problem that you need to fix.
    8) Exit the test installation of eclipse. Remove your plugin(s) from the dropin directory. Then MAKE A ZIP OF THE TEST INSTALLATION.

    Your automated build process should be changed to resemble the following:

    1) Build your plugin(s).
    2) Blow away the existing test environment and re-create it from the zip you saved in step 8) above.
    3) Copy your plugin(s) to the dropin directory.
    4) Launch ETF with your test.xml file. It should load your plugin(s) and run your test.

    It’s important to run step 2 every time since even a successful invocation of ETF will hose the test environment so that it won’t work the next time.

  14. Patrick says:

    Hi Ed,

    Thanks for the detailed instructions. I have not run into this issue with regular plugins yet, but I have had this problem with fragment-based tests. There are definitely P2 issues with ETF, and I’m wondering what it is about your set up that is causing the problem.

    It would be nice to be able to track down exactly what triggers the problem and submit a Bugzilla entry. Have you had this problem when running the sample build that you can download on this post?

    — Patrick

  15. Dali says:

    Hi Patrick ,

    i’m trying to build my plugin with the PDE export wizard in my .product file.

    my problem is that i’m getting the following problem when i’m launching the app outside eclipse :

    java.lang.RuntimeException: No application id has been found.
    at org.eclipse.equinox.internal.app.EclipseAppContainer.startDefaultApp(EclipseAppContainer.java:236)
    at org.eclipse.equinox.internal.app.EclipseAppContainer.start(EclipseAppContainer.java:98)
    at org.eclipse.equinox.internal.app.Activator.addingService(Activator.java:112)
    at org.osgi.util.tracker.ServiceTracker$Tracked.trackAdding(ServiceTracker.java:1064)
    at org.osgi.util.tracker.ServiceTracker$Tracked.trackInitialServices(ServiceTracker.java:926)
    at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:330)
    at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:274)
    at org.eclipse.equinox.internal.app.Activator.start(Activator.java:54)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl$2.run(BundleContextImpl.java:999)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:993)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:974)
    at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:346)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:260)
    at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:400)
    at org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:111)
    at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:417)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:189)
    at org.eclipse.osgi.framework.internal.core.BundleLoader.findLocalClass(BundleLoader.java:340)
    at org.eclipse.osgi.framework.internal.core.SingleSourcePackage.loadClass(SingleSourcePackage.java:37)
    at org.eclipse.osgi.framework.internal.core.BundleLoader.findClassInternal(BundleLoader.java:405)
    at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:369)
    at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:357)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:83)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
    at org.eclipse.core.internal.runtime.PlatformActivator.startAppContainer(PlatformActivator.java:47)
    at org.eclipse.core.internal.runtime.PlatformActivator.start(PlatformActivator.java:32)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl$2.run(BundleContextImpl.java:999)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:993)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:974)
    at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:346)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:350)
    at org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1118)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:634)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:508)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:282)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:468)
    at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:195)
    at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:297)

    !ENTRY org.eclipse.osgi 2 0 2008-11-20 16:02:58.842
    !MESSAGE One or more bundles are not resolved because the following root constraints are not resolved:
    !SUBENTRY 1 org.eclipse.osgi 2 0 2008-11-20 16:02:58.842
    !MESSAGE Bundle update@plugins/org.apache.xerces_2.8.0.v200705301630.jar was not resolved.
    !SUBENTRY 2 org.apache.xerces 2 0 2008-11-20 16:02:58.842
    !MESSAGE Missing required bundle org.apache.xml.resolver_0.0.0.
    !SUBENTRY 1 org.eclipse.osgi 2 0 2008-11-20 16:02:58.842
    !MESSAGE Bundle update@plugins/EkipBPM_1.0.0.jar was not resolved.
    !SUBENTRY 2 EkipBPM 2 0 2008-11-20 16:02:58.842
    !MESSAGE Missing required bundle MyJars_0.0.0.

    !ENTRY org.eclipse.osgi 2 0 2008-11-20 16:02:58.842
    !MESSAGE The following is a complete list of bundles which are not resolved, see the prior log entry for the root cause if it exists:
    !SUBENTRY 1 org.eclipse.osgi 2 0 2008-11-20 16:02:58.842
    !MESSAGE Bundle update@plugins/EkipBPM_1.0.0.jar [5] was not resolved.
    !SUBENTRY 2 EkipBPM 2 0 2008-11-20 16:02:58.842
    !MESSAGE Missing required bundle MyJars_0.0.0.
    !SUBENTRY 1 org.eclipse.osgi 2 0 2008-11-20 16:02:58.842
    !MESSAGE Bundle update@plugins/org.apache.xerces_2.8.0.v200705301630.jar [21] was not resolved.
    !SUBENTRY 2 org.apache.xerces 2 0 2008-11-20 16:02:58.842
    !MESSAGE Missing required bundle org.apache.xml.resolver_0.0.0.

    My Manifest.MF content is :

    Manifest-Version: 1.0
    Bundle-ManifestVersion: 2
    Bundle-Name: EkipBPM Plug-in
    Bundle-SymbolicName: EkipBPM;singleton:=true
    Bundle-Version: 1.0.0
    Bundle-Activator: com.linedata.ekipgp.ui.workbench.Activator
    Require-Bundle: org.eclipse.stp.bpmn,
    org.eclipse.stp.bpmn.diagram,
    org.eclipse.stp.bpmn.edit,
    org.eclipse.ui.ide,
    MyJars
    Eclipse-LazyStart: false

    When i try using the osgi console to diag my plugin i’m getting the following :

    osgi> diag 881
    initial@reference:file:../.ws/EkipBPM/ [881]
    Missing required bundle org.eclipse.stp.bpmn_0.0.0.
    Missing required bundle org.eclipse.stp.bpmn.diagram_0.0.0.
    Missing required bundle org.eclipse.stp.bpmn.edit_0.0.0.
    Missing required bundle org.eclipse.ui.ide_0.0.0.

    My product is running under eclipse ide ,

    How can i fix this ???:((

    Best Regards ,

    Dali.

  16. Patrick says:

    Hi Dali,

    I’m assuming that your application is running from within the IDE and that you have those required plug-ins in your target platform. Is that correct?

    It looks like there is also a problem with your MyJars plug-in. Is this plug-in included in your product configuration or in a feature listed there?

    — Patrick

  17. Dali says:

    Oh my god !
    indeed , it was the problem.

    Thanx a lot.

  18. Andrew Moore says:

    I’m trying to build a RCP app, and export the product with ant, using your example as a guide. I have been unsuccssful and I’m stuck at the moment. Is there any insight you might be able to give me. Here is my ant output:

    Buildfile: C:\Documents and Settings\Administrator\Desktop\Backup\SIT_1.0\com.ibm.retail.test.messageTest.build\build.xml
    init:
    [copy] Copying 231 files to C:\SIT-build\plugins
    pde-build:
    [java] Buildfile: c:/eclipse/plugins/org.eclipse.pde.build_3.4.1.R34x_v20080805/scripts/productBuild/productBuild.xml
    [java] main:
    [java] preBuild:
    [java] preSetup:
    [java] checkLocalMaps:
    [java] getMapFiles:
    [java] [concat] No existing resources and no nested text, doing nothing
    [java] postSetup:
    [java] checkLocalBase:
    [java] getBaseComponents:
    [java] generateFeature:
    [java] fetch:
    [java] generateFeature:
    [java] [eclipse.generateFeature] Some inter-plug-in dependencies have not been satisfied.
    [java] [eclipse.generateFeature] Bundle com.ibm.retail.test.messageTest:
    [java] [eclipse.generateFeature] Missing required plug-in org.eclipse.ui.workbench.texteditor_0.0.0.
    [java] [eclipse.generateFeature] Missing required plug-in org.eclipse.ui.console_0.0.0.
    [java] [eclipse.generateFeature] Missing required plug-in org.eclipse.jface.text_0.0.0.
    [java] [eclipse.generateFeature] Bundle org.eclipse.core.filesystem.win32.x86:
    [java] [eclipse.generateFeature] Host plug-in org.eclipse.core.filesystem_[1.1.0,2.0.0) has not been found.
    [java] [eclipse.generateFeature] Bundle org.eclipse.core.net.win32.x86:
    [java] [eclipse.generateFeature] Host plug-in org.eclipse.core.net_1.1.0 has not been found.
    [java] [eclipse.generateFeature] Bundle org.eclipse.core.resources.win32.x86:
    [java] [eclipse.generateFeature] Host plug-in org.eclipse.core.resources_[3.4.0,3.5.0) has not been found.
    [java] [eclipse.generateFeature] Bundle org.eclipse.equinox.security.win32.x86:
    [java] [eclipse.generateFeature] Host plug-in org.eclipse.equinox.security_[1.0.0,2.0.0) has not been found.
    [java] [eclipse.generateFeature] Bundle org.eclipse.ui.win32:
    [java] [eclipse.generateFeature] Host plug-in org.eclipse.ui.ide_[3.2.0,4.0.0) has not been found.
    [java] [eclipse.generateFeature] Bundle org.eclipse.update.core.win32:
    [java] [eclipse.generateFeature] Host plug-in org.eclipse.update.core_[3.0.0,4.0.0) has not been found.
    [java] BUILD FAILED
    [java] c:\eclipse\plugins\org.eclipse.pde.build_3.4.1.R34x_v20080805\scripts\productBuild\productBuild.xml:26: The following error occurred while executing this line:
    [java] c:\eclipse\plugins\org.eclipse.pde.build_3.4.1.R34x_v20080805\scripts\productBuild\productBuild.xml:56: Unable to find plug-in: com.ibm.retail.test.messageTest. Please check the error log for more details.
    [java] Total time: 3 seconds

    BUILD FAILED
    C:\Documents and Settings\Administrator\Desktop\Backup\SIT_1.0\com.ibm.retail.test.messageTest.build\build.xml:60: Java returned: 13

    Total time: 12 seconds

    It tells me that the my project plug-in can not be found. I can’t find it either. When is this created and where should it be located.

    Thanks in advance for any help.

    Andrew

  19. Patrick says:

    It looks like your plug-in is missing some dependencies in the build target. The three listed are:

    * org.eclipse.ui.workbench.texteditor
    * org.eclipse.ui.console
    * org.eclipse.jface.text

    These plug-ins are not part of the RCP Runtime Binary and you’ll need to copy them by hand from an Eclipse installation of the appropriate version.

    Hope this helps,

    — Patrick

  20. Andrew E says:

    Thanks Patrick and Ed. I’ve been struggling with getting the testing framework installed in the P2 world, and this has helped immensely.

  21. Andrew E says:

    Just to clarify a bit. I mostly followed Ed’s advice, but since I am running on a server headless and with no UI (all UI packets are forwarded to /dev/null), instead of starting up the eclipse to see if everything is installed, I ran the command:

    eclipse -console

    This brings up the osgi console and lets you know all sorts of fun facts about the state of the bundles in the installation.

  22. andig says:

    Regarding missing dependencies in the build target I’m seeing the same problem with another application I’m trying to build. When you’re saying “copy by hand” you mean from the eclipse SDK to the eclipse runtime folders? Seems a little awkward?

    Thanks,

    — Andi

  23. Patrick says:

    Hi Andi,

    Anytime you build an application, you need to assemble the dependencies that you will compile and run against. Obviously tools like Maven offer solutions to this for non-RCP apps and the Eclipse team itself uses the concept of map files to draw various pieces into a build. I haven’t used map files myself, but you may want to look into it.

    I do agree that it seems a bit awkward to copy files from an Eclipse install into your targets, but this has many benefits over building against the Eclipse SDK itself. I’ve outlined these benefits in other posts:

    http://rcpquickstart.com/2008/04/21/why-create-a-custom-target-platform/
    http://rcpquickstart.com/2008/04/29/rcp-target-platform-tips/

    It’s really not so bad once you start managing your build and development targets in a methodical way.

    — Patrick

  24. Markus says:

    I finally manage to get PDE working. But I have to unzip the RCP first, otherwise it doesn’t work (org.eclipse.test.coretestaporg.eclipse.test.coretestapplicationplication not found). I still get an exception, but the tests run anyway.Should I be concerned about this?
    !ENTRY org.eclipse.equinox.p2.reconciler.dropins 4 0 2009-01-16 12:12:49.027
    !MESSAGE
    !STACK 0
    org.osgi.framework.BundleException: State change in progress for bundle “reference:file:plugins/org.eclipse.equinox.p2.reconciler.dropins_1.0.2.R34x_v20080909.jar” by thread “Start Level Event Dispatcher”.
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.beginStateChange(AbstractBundle.java:1144)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.suspend(AbstractBundle.java:529)
    at org.eclipse.osgi.framework.internal.core.Framework.suspendBundle(Framework.java:1104)
    at org.eclipse.osgi.framework.internal.core.PackageAdminImpl.suspendBundle(PackageAdminImpl.java:281)
    at org.eclipse.osgi.framework.internal.core.PackageAdminImpl.processDelta(PackageAdminImpl.java:416)
    at org.eclipse.osgi.framework.internal.core.PackageAdminImpl.doResolveBundles(PackageAdminImpl.java:224)
    at org.eclipse.osgi.framework.internal.core.PackageAdminImpl$1.run(PackageAdminImpl.java:162)
    at java.lang.Thread.run(Thread.java:619)
    Caused by: org.eclipse.osgi.framework.internal.core.AbstractBundle$BundleStatusException
    … 8 more
    Root exception:
    org.eclipse.osgi.framework.internal.core.AbstractBundle$BundleStatusException
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.beginStateChange(AbstractBundle.java:1144)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.suspend(AbstractBundle.java:529)
    at org.eclipse.osgi.framework.internal.core.Framework.suspendBundle(Framework.java:1104)
    at org.eclipse.osgi.framework.internal.core.PackageAdminImpl.suspendBundle(PackageAdminImpl.java:281)
    at org.eclipse.osgi.framework.internal.core.PackageAdminImpl.processDelta(PackageAdminImpl.java:416)
    at org.eclipse.osgi.framework.internal.core.PackageAdminImpl.doResolveBundles(PackageAdminImpl.java:224)
    at org.eclipse.osgi.framework.internal.core.PackageAdminImpl$1.run(PackageAdminImpl.java:162)
    at java.lang.Thread.run(Thread.java:619)

    !ENTRY org.eclipse.equinox.p2.metadata.repository 4 0 2009-01-16 12:12:50.910
    !MESSAGE ProvisioningEventBus could not be obtained. Metadata caches may not be cleaned up properly.

    !ENTRY org.eclipse.equinox.p2.garbagecollector 4 0 2009-01-16 12:12:50.938
    !MESSAGE ProvisioningEventBus service could not be obtained, CoreGarbageCollector will not function properly.

  25. Patrick says:

    Hi Markus,

    Did this problem occur when you ran the basic example before changes were made to it? I’ve never seen these errors occur before, so I’m not sure exactly what’s going on. I’m also not sure what you mean by “unzip the RCP”. Do you mean unzip the RCP Runtime Binary archive? If so, then yes you’ll definitely need to do this to get things working.

    — Patrick

  26. Markus says:

    No, the basic example ran fine. This is from a project from scratch, where I used your PDE files as templates. With RCP I mean my RCP application.

  27. Patrick says:

    Hi Markus,

    Ok. Well, you’ll definitely need to extract your RCP application into the test environment in order to run the tests. As for the errors, again I’m not sure what’s going on.

    You should definitely make sure that your test environment is starting out with a clean copy of the Eclipse SDK, not a previously run instance. Old configuration data/cache can get in the way of running the tests.

    If this isn’t the issue, you may want to ask on the RCP or Platform newsgroups to find out what these types of errors usually relate to.

    — Patrick

  28. andig says:

    Dear Patrick,
    really value your feedback. Establishing the target environment (RCP binary + Delta pack) proves to be a challenge for me. I’ve setup a folder containing these.
    Still, build process fails with apparently straightforward dependencies:

    [java] [eclipse.generateFeature] Bundle org.eclipse.core.filesystem.win32.x86:
    [java] [eclipse.generateFeature] Host plug-in org.eclipse.core.filesystem_[1.1.0,2.0.0) has not been found.
    [java] [eclipse.generateFeature] Bundle org.eclipse.core.net.win32.x86:
    [java] [eclipse.generateFeature] Host plug-in org.eclipse.core.net_1.1.0 has not been found.
    [java] [eclipse.generateFeature] Bundle org.eclipse.core.resources.win32.x86:
    [java] [eclipse.generateFeature] Host plug-in org.eclipse.core.resources_[3.4.0,3.5.0) has not been found.
    [java] [eclipse.generateFeature] Bundle org.eclipse.equinox.launcher.win32.win32.x86:
    [java] [eclipse.generateFeature] Bundle org.eclipse.equinox.security.win32.x86:
    [java] [eclipse.generateFeature] Host plug-in org.eclipse.equinox.security_[1.0.0,2.0.0) has not been found.
    [java] [eclipse.generateFeature] Bundle org.eclipse.swt.win32.win32.x86:
    [java] [eclipse.generateFeature] Bundle org.eclipse.ui.win32:
    [java] [eclipse.generateFeature] Host plug-in org.eclipse.ui.ide_[3.2.0,4.0.0) has not been found.
    [java] [eclipse.generateFeature] Bundle org.eclipse.update.core.win32:
    [java] [eclipse.generateFeature] Host plug-in org.eclipse.update.core_[3.0.0,4.0.0) has not been found.

    Any ideas what these might be? Is there a particular trick I’m missing?

  29. Patrick says:

    Hi andig,

    These are pretty standard errors that show up in most builds, even successful ones. Can you post the end of the output where the build fails? Or else feel free to email me the whole log.

    — Patrick

  30. Alban says:

    Hi !

    First of all, thanks for this example ! it’s very helpfull !

    But I have a problem…
    Some inter-plug-in dependencies have not been satisfied because, in plugin.xml, we said to take the last version of the plug-in, but, the build.xml wants the plug-in number 0.0.0, and the current version is (for example) 1.0.2…

    What I Have to do ?

    [java] [eclipse.generateFeature] Bundle com.test.side.Application.deployer.alfresco:
    [java] [eclipse.generateFeature] Missing required plug-in com.test.side.Application.generator_0.0.0.
    [java] [eclipse.generateFeature] Missing required plug-in com.test.side.Application.deployer_0.0.0.

    and the current version of com.test.side.Application.generator is 1.0.12 and the same for com.test.side.Application.deployer

  31. Patrick says:

    I wouldn’t worry about the version numbers. Sometimes the PDE Build messages are not accurate that way.

    Are you sure that the plug-in (and all of it’s dependencies are available during the build (either in the target platform or in your build directory)?

    — Patrick

  32. Patrick (B) says:

    Hi Patrick,

    We having a big problem to compile ower RCP application.
    It’s developped under eclipse 3.5 RC3.

    When we tryed to export the .product we have this error :

    —————————————–
    eclipse.buildId=I20090528-2000
    java.version=1.6.0_11
    java.vendor=Sun Microsystems Inc.
    BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=fr_CA
    Command-line arguments: -os win32 -ws win32 -arch x86 -clean

    An error occurred while collecting items to be installed :
    No repository found containing: binary,com.lq.sp.application.product_root.win32.win32.x86,1.0.0
    session context was:(profile=profile, phase=org.eclipse.equinox.internal.provisional.p2.engine.phases.Collect, operand=, action=).

    An exception stack trace is not available.
    —————————————–

    We also try to build with a command line using ANT build.xml (build.properties) and we had this error :

    Java returned: 13

    In the .log file, there is this explaination :

    !SESSION 2009-06-22 10:01:37.926 ———————————————–
    eclipse.buildId=unknown
    java.version=1.6.0_11
    java.vendor=Sun Microsystems Inc.
    BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=fr_CA
    Framework arguments: -application org.eclipse.ant.core.antRunner -buildfile C:/Build/spgGalileo/eclipse/plugins/org.eclipse.pde.build_3.5.0.v20090527-1800/scripts/productBuild/productBuild.xml -Dtimestamp=007
    Command-line arguments: -application org.eclipse.ant.core.antRunner -buildfile C:/Build/spgGalileo/eclipse/plugins/org.eclipse.pde.build_3.5.0.v20090527-1800/scripts/productBuild/productBuild.xml -Dtimestamp=007

    !ENTRY org.eclipse.osgi 4 0 2009-06-22 10:01:40.457
    !MESSAGE Application error
    !STACK 1
    java.lang.RuntimeException: Application “org.eclipse.ant.core.antRunner” could not be found in the registry. The applications available are: org.eclipse.equinox.app.error.
    at org.eclipse.equinox.internal.app.EclipseAppContainer.startDefaultApp(EclipseAppContainer.java:242)
    at org.eclipse.equinox.internal.app.MainApplicationLauncher.run(MainApplicationLauncher.java:29)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1311)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1287)

    Do you have any idea about what is wrong…

    If you have any question or if something is missing, don’t hesitate to ask us,

    Best regards,

  33. Patrick says:

    Hi Patrick,

    For the first issue (exporting inside the IDE), is there a win32 fragment that it’s trying to find? Is that fragment available in your workspace or target platform? It’s hard to tell what’s going on without knowing more about your application.

    For the second issue (exporting running headless), it appears that the antRunner task cannot be located. Are you sure that the ANT plugins are installed in the Eclipse SDK that is being executed? It appears that the application id is correct, so perhaps the plugin or one of its dependencies is missing.

    — Patrick

  34. Reik says:

    Hi Patrick,

    thanx for your infomation. I have a rcp application and a headless build that builds a correct product. However, my eclipse 3.4 headless test results in java.lang.RuntimeException: Application “org.eclipse.test.uitestapplication” could not be found in the registry.

    Therefore, I took your hello word headless test sources. Firstly your headless test ran with my 3.4 eclipse installation into the problem that some plugins were apparantly missing or could not be resolved. After defining the following customized config.ini this (possibly 3.4 specific) problem was solved.

    #Product Runtime Configuration File
    osgi.splashPath=platform:/base/plugins/de.creditreform.aaa.orbis.client.rcp.app
    eclipse.application=de.creditreform.aaa.orbis.client.rcp.app.application
    eclipse.product=de.creditreform.aaa.orbis.client.rcp.app.product
    osgi.bundles=org.eclipse.equinox.preferences@1:start,org.eclipse.equinox.registry@1:start,org.eclipse.equinox.app@1:start,org.eclipse.core.contenttype@1:start,org.eclipse.equinox.common@1:start,org.eclipse.core.jobs@2:start,org.eclipse.core.runtime@3:start,org.eclipse.equinox.simpleconfigurator@4:start
    org.eclipse.equinox.simpleconfigurator.configUrl=file:org.eclipse.equinox.simpleconfigurator/bundles.info
    osgi.bundles.defaultStartLevel=5
    org.eclipse.update.reconcile=false

    However, now I face the same problem with your helloword headless test than I have with my own rcp application:
    java.lang.RuntimeException: Application “org.eclipse.test.coretestapplication” could not be found in the registry. The applications available are: org.eclipse.equinox.app.error.

    Any help greatly appricated!
    Reik

  35. Reik says:

    Corrections and Additions to my last post

    The config.ini is actually:
    #Product Runtime Configuration File
    osgi.splashPath=platform:/base/plugins/com.rcpquickstart.helloworld
    eclipse.application=com.rcpquickstart.helloworld.application
    eclipse.product=com.rcpquickstart.helloworld.product
    osgi.bundles=org.eclipse.equinox.preferences@1:start,org.eclipse.equinox.registry@1:start,org.eclipse.equinox.app@1:start,org.eclipse.core.contenttype@1:start,org.eclipse.equinox.common@1:start,org.eclipse.core.jobs@2:start,org.eclipse.core.runtime@3:start,org.eclipse.equinox.simpleconfigurator@4:start
    org.eclipse.equinox.simpleconfigurator.configUrl=file:org.eclipse.equinox.simpleconfigurator/bundles.info
    osgi.bundles.defaultStartLevel=5
    org.eclipse.update.reconcile=false

    Starting the tests reveals:
    java.lang.RuntimeException: Application “org.eclipse.test.coretestapplication” could not be found in the registry.

    Starting helloWorld.exe reveals:
    java.lang.RuntimeException: Application “com.rcpquickstart.helloworld.application” could not be found in the registry. The applications available are: org.eclipse.equinox.app.error.

  36. Patrick says:

    Hi Reik,

    Sorry for the delay in getting back to you. I think the best approach would be to start with a completely clean version of the example projects and get that building. Can you tell me what plug-ins were initially missing or unresolved (before changes to config.ini)?

    Also, what version of Eclipse are you using to run the build?

    — Patrick

  37. Reik says:

    Hi Patrick,

    back to work after holidays I picked up my old problem. My posted problems concerns Eclipse 3.4.2.

    Meanwhile I learned two lessons:
    1. Providing an own config.ini in the product configuration does not work even if the this file has the same content than the default file automatically created by Eclipse.
    2. Using junit4 in the helloworld.test plugins causes that this plugin is not found during test.

    I just did the following:
    – I used option “Generate a default config.ini file”
    – I removed the emma stuff that caused a problem
    – I now moved your helloworld project to Eclipse 3.5.
    – I totally avoided the use of junit4 (also with Eclipse 3.5)

    Now the build creates a helloworld product that runs fine and the test runs without error. However, the later is not the case with my own application. The build works fine, but the tests runs into the following eclipse console output:

    ui-test:
    eclipse-test:
    [echo] Library.xml executing target ‘eclipse-test’…
    [echo] Eclipse-home for testing: c:/dev/orbisBuild/testOutput/eclipse
    [echo] Result file: c:/dev/orbisBuild/testOutput/eclipse/results/de.creditreform.aaa.orbis.client.rcp.test.GlobalTestSuite.xml.
    [echo] Data-dir: c:/dev/orbisBuild/testOutput/eclipse/junit-workspace -clean.
    [echo] plugin-name: de.creditreform.aaa.orbis.client.rcp.test.
    [echo] Running de.creditreform.aaa.orbis.client.rcp.test.GlobalTestSuite…
    [exec] java.lang.Exception: Could not find plugin “de.creditreform.aaa.orbis.client.rcp.test”
    [exec] at org.eclipse.test.EclipseTestRunner.loadSuiteClass(EclipseTestRunner.java:304)
    [exec] at org.eclipse.test.EclipseTestRunner.getTest(EclipseTestRunner.java:237)
    [exec] at org.eclipse.test.EclipseTestRunner.(EclipseTestRunner.java:220)
    [exec] at org.eclipse.test.EclipseTestRunner.run(EclipseTestRunner.java:204)
    [exec] at org.eclipse.test.UITestApplication$3.run(UITestApplication.java:195)
    [exec] at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
    [exec] at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134)
    [exec] at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3855)
    [exec] at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3476)
    [exec] at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405)
    [exec] at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369)
    [exec] at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221)
    [exec] at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500)
    [exec] at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
    [exec] at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493)
    [exec] at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
    [exec] at de.creditreform.aaa.orbis.client.rcp.app.Application.start(Unknown Source)
    [exec] at org.eclipse.test.UITestApplication.runApplication(UITestApplication.java:138)
    [exec] at org.eclipse.test.UITestApplication.run(UITestApplication.java:60)
    [exec] at org.eclipse.test.UITestApplication.start(UITestApplication.java:210)
    [exec] at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194)
    [exec] at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
    [exec] at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    [exec] at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368)
    [exec] at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
    [exec] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    [exec] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    [exec] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    [exec] at java.lang.reflect.Method.invoke(Unknown Source)
    [exec] at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559)
    [exec] at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514)
    [exec] at org.eclipse.equinox.launcher.Main.run(Main.java:1311)
    [exec] Result: 2

    Any idea appreciated!
    Reik

  38. Patrick says:

    Hi Reik,

    Well according to the trace, the test bundle cannot be located. Are there any message earlier in the build related to this bundle (compilation, etc.)? Does the bundle depend on any others which may not have been copied to the test environment?

    — Patrick

  39. Reik says:

    Hi Patrick,

    Thanks a lot for your suggestions. There are no earlier problems in the console. The test-bundle is part of the test-feature which is part of the application. Therefore it is compiled during the build which is successful.
    A dependency is likely the problem, but I cannot guess which. By change I noticed that removing the junit-bundle from the test-feature, the test-bundle is found but – of course – the following problem exist:

    Exception in thread “WorkbenchTestable” org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.NoClassDefFoundError: junit/framework/TestListener)

    Any further hint?

    Reik

  40. Patrick says:

    Hi Reik,

    It’s tough to say without more information. I would start by looking at dependency differences between your application and the sample one.

    Also, try and strip out as much as possible from the the features you are building to simplify things. If you can get a simple build running then you can start to add other bundles back to the features.

    — Patrick

  41. Reik says:

    Hi Patrick,

    I have it running now. I was wrong assuming the build result was correct. Additionaly, I didn’t have the overview about the growing number of features in the application under test and I noticed that the order defined for the features within a feature may be important.

    My hints for others are:
    1. Test manually and intensively whether the result of your headless test ist really ok. If not analyse it by the osgi console to detect missing dependencies.
    2. Look carefully on the hierarchy of your features (if it is complex as in my case).
    3. Plugins physically present are needless if not registered in a feature. Take care for all plugins!

    Three questions would be good to be answered:
    1. What is the meaning of the buildType. You used buildType=I for the hello world example. Why? What do the others? Where can I find information about this?
    2. There are special plugin-Tests that start the ui, and there are common junit test (the core-tests, I think). Is it correct, that I have to execute them in different test runs with different application IDs for the application parameter?
    3. You specify the hello world application ID in the parameter “testApplication”. For a product test, the product ID should be specified, shouldn’t it? Is there such a parameter?

    Thank you very much for your answers
    Reik

  42. Patrick says:

    Hi Reik,

    1. Build type is just a prefix that will be used to name the artifact created by the build. You can use whatever you want. By tradition, values are N=nightly, I=integration, M=milestone.

    2. You can incorporate multiple tests runs into a single ant target, but yes behind the scenes this will cause multiple launches of headless Eclipse applications.

    3. Where is the “testApplication” parameter specified? I’m not seeing it.

    — Patrick

  43. Reik says:

    Hi Patrick,

    sorry, in your original sources this parameter is indeed not specified. I have introduced it myself because I performed a ui-test and needed the helloworld application to start. My question is, is this a correct product test? I would have assumed to specifiy a product instead of an application.

    Reik

  44. Patrick says:

    Hi Reik,

    I don’t see any problem specifying an application id instead of a product id. The product is really just adding some branding, so from a unit testing perspective you should be ok.

    — Patrick

  45. Reik says:

    Thanks a lot!

    Reik

  46. Eric says:

    Hi Patrick,

    I am having a strange issue. I have the test collector, collecting and running all of the tests properly, but if one of the tests fails, the build still completes with a “Build Successful” message. Is there a way to fail the build if the unit tests are failing ? In the log, I just get:


    [java] postBuild:
    [java] test:
    [java] runAllOfTheUnitTests:
    [java] setupTestDirStructure:
    [java] [unzip] Expanding: /d/geoprog/u/georde/geocraft-build/I.spark/org.geocraft.feature-spark-linux.gtk.x86.zip into /d/geoprog/u/georde/geocraft-build/test
    [java] [unzip] Expanding: /d/geoprog/u/georde/geocraft-build/I.spark/org.geocraft.test.feature-spark-linux.gtk.x86.zip into /d/geoprog/u/georde/geocraft-build/test
    [java] [unzip] Expanding: /d/geoprog/u/georde/geocraft-build/I.spark/org.geocraft.geomath.feature-spark-linux.gtk.x86.zip into /d/geoprog/u/georde/geocraft-build/test
    [java] [unzip] Expanding: /d/geoprog/u/georde/geocraft-build/I.spark/org.geocraft.geomath.test.feature-spark-linux.gtk.x86.zip into /d/geoprog/u/georde/geocraft-build/test
    [java] [unzip] Expanding: /d/geoprog/u/georde/geocraft-build/I.spark/org.geocraft.abavo.feature-spark-linux.gtk.x86.zip into /d/geoprog/u/georde/geocraft-build/test
    [java] [unzip] Expanding: /d/geoprog/u/georde/geocraft-build/I.spark/org.geocraft.abavo.test.feature-spark-linux.gtk.x86.zip into /d/geoprog/u/georde/geocraft-build/test
    [java] [untar] Expanding: /d/geoprog/u/georde/builder/eclipseSDK/eclipse-rcp-galileo-SR2-linux-gtk.tar.gz into /d/geoprog/u/georde/geocraft-build/test
    [java] [unzip] Expanding: /d/geoprog/u/georde/builder/eclipseSDK/eclipse-test-framework-3.6M7.zip into /d/geoprog/u/georde/geocraft-build/test
    [java] all:
    [java] junit:
    [java] init:
    [java] suite:
    [java] [echo] my eclipse home directory is: /d/geoprog/u/georde/geocraft-build/test/eclipse
    [java] [echo] my library file is: /d/geoprog/u/georde/geocraft-build/test/eclipse/plugins/org.eclipse.test_3.3.0/library.xml
    [java] [echo] my plugin-name is: org.geocraft.unittest.suite
    [java] init:
    [java] [mkdir] Created dir: /d/geoprog/u/georde/geocraft-build/test/eclipse/results
    [java] core-test:
    [java] java-test:
    [java] [echo] Running org.geocraft.unittest.suite.AllTests. Result file: /d/geoprog/u/georde/geocraft-build/test/eclipse/results/org.geocraft.unittest.suite.AllTests.xml.
    [java] [java] Java Result: 1
    [java] collect-results:
    [java] [xslt] Transforming into /d/geoprog/u/georde/geocraft-build/test/eclipse/results
    [java] cleanup:

    And then, it continues and ends with “Build Successful”. Can I somehow propagate that failure to the process running the build ?

    Thanks,
    Eric

  47. Patrick says:

    Hi Eric,

    It’s not a strange issue at all, and I have to say I still haven’t figured out a good solution.

    The only thing I came up with was to scan the JUnit output to determine if any tests failed. If you figure out a better way, Iā€™d be very interested šŸ™‚

    — Patrick

  48. kapil says:

    Hello,

    I am RCP Developer.I am trying to automate build and product generation process.

    So I want a script , which will build our project and also generate a product in specified folder.

    I tried above example.I am getting error as below.

    Buildfile: C:\Documents and Settings\yambalk\Desktop\2\pdebuild-tutorial-1\com.rcpquickstart.helloworld.build\build.xml
    clean:
    [delete] Deleting directory c:\helloworld-build
    init:
    [mkdir] Created dir: c:\helloworld-build
    [mkdir] Created dir: c:\helloworld-build\plugins
    [mkdir] Created dir: c:\helloworld-build\features
    [copy] Copying 28 files to c:\helloworld-build\plugins
    [copy] Copying 3 files to c:\helloworld-build\features
    pde-build:
    [java] Buildfile: D:Eclipse_RCP/plugins/org.eclipse.pde.build_3.5.2.R35x_20100114/scripts/productBuild/productBuild.xml
    [java] main:
    [java] preBuild:
    [java] preSetup:
    [java] checkLocalMaps:
    [java] getMapFiles:
    [java] postSetup:
    [java] checkLocalBase:
    [java] getBaseComponents:
    [java] processRepos:
    [java] generateFeature:
    [java] fetch:
    [java] generateFeature:
    [java] [eclipse.generateFeature] Some inter-plug-in dependencies have not been satisfied.
    [java] [eclipse.generateFeature] Bundle com.rcpquickstart.helloworld:
    [java] [eclipse.generateFeature] Missing required plug-in org.eclipse.ui_3.5.2.
    [java] [eclipse.generateFeature] Missing required plug-in org.eclipse.core.runtime_3.5.0.
    [java] [eclipse.generateFeature] Bundle org.eclipse.compare.win32:
    [java] [eclipse.generateFeature] Missing required plug-in org.eclipse.compare_[3.5.0,4.0.0).
    [java] [eclipse.generateFeature] Missing required plug-in org.eclipse.core.filesystem_[1.2.0,2.0.0).
    [java] [eclipse.generateFeature] Missing required plug-in org.eclipse.ui.forms_[3.4.0,4.0.0).
    [java] [eclipse.generateFeature] Missing required plug-in org.eclipse.ui.workbench_[3.5.0,4.0.0).
    [java] [eclipse.generateFeature] Missing required plug-in org.eclipse.jface_[3.5.0,4.0.0).
    [java] [eclipse.generateFeature] Missing required plug-in org.eclipse.core.runtime_[3.5.0,4.0.0).
    [java] [eclipse.generateFeature] Missing required plug-in org.eclipse.core.resources_[3.5.0,4.0.0).
    [java] [eclipse.generateFeature] Bundle org.eclipse.core.filesystem.win32.x86:
    [java] [eclipse.generateFeature] Host plug-in org.eclipse.core.filesystem_[1.1.0,2.0.0) has not been found.
    [java] [eclipse.generateFeature] Bundle org.eclipse.core.net.win32.x86:
    [java] [eclipse.generateFeature] Host plug-in org.eclipse.core.net_1.1.0 has not been found.
    [java] [eclipse.generateFeature] Bundle org.eclipse.core.resources.win32.x86:
    [java] [eclipse.generateFeature] Host plug-in org.eclipse.core.resources_[3.5.0,4.0.0) has not been found.
    [java] [eclipse.generateFeature] Bundle org.eclipse.equinox.launcher.win32.win32.x86:
    [java] [eclipse.generateFeature] Bundle org.eclipse.equinox.security.win32.x86:
    [java] [eclipse.generateFeature] Host plug-in org.eclipse.equinox.security_[1.0.0,2.0.0) has not been found.
    [java] [eclipse.generateFeature] Bundle org.eclipse.swt.win32.win32.x86:
    [java] [eclipse.generateFeature] Bundle org.eclipse.ui.win32:
    [java] [eclipse.generateFeature] Host plug-in org.eclipse.ui.ide_[3.2.0,4.0.0) has not been found.
    [java] [eclipse.generateFeature] Bundle org.eclipse.update.core.win32:
    [java] [eclipse.generateFeature] Host plug-in org.eclipse.update.core_[3.0.0,4.0.0) has not been found.
    [java] generate:
    [java] preGenerate:
    [java] allElements:
    [java] allElementsDelegator:
    [java] init:
    [java] generateScript:
    [java] [eclipse.buildScript] Some inter-plug-in dependencies have not been satisfied.
    [java] [eclipse.buildScript] Bundle com.rcpquickstart.helloworld:
    [java] [eclipse.buildScript] Missing required plug-in org.eclipse.ui_3.5.2.
    [java] [eclipse.buildScript] Missing required plug-in org.eclipse.core.runtime_3.5.0.
    [java] [eclipse.buildScript] Bundle org.eclipse.compare.win32:
    [java] [eclipse.buildScript] Missing required plug-in org.eclipse.compare_[3.5.0,4.0.0).
    [java] [eclipse.buildScript] Missing required plug-in org.eclipse.core.filesystem_[1.2.0,2.0.0).
    [java] [eclipse.buildScript] Missing required plug-in org.eclipse.ui.forms_[3.4.0,4.0.0).
    [java] [eclipse.buildScript] Missing required plug-in org.eclipse.ui.workbench_[3.5.0,4.0.0).
    [java] [eclipse.buildScript] Missing required plug-in org.eclipse.jface_[3.5.0,4.0.0).
    [java] [eclipse.buildScript] Missing required plug-in org.eclipse.core.runtime_[3.5.0,4.0.0).
    [java] [eclipse.buildScript] Missing required plug-in org.eclipse.core.resources_[3.5.0,4.0.0).
    [java] [eclipse.buildScript] Bundle org.eclipse.core.filesystem.win32.x86:
    [java] [eclipse.buildScript] Host plug-in org.eclipse.core.filesystem_[1.1.0,2.0.0) has not been found.
    [java] [eclipse.buildScript] Bundle org.eclipse.core.net.win32.x86:
    [java] [eclipse.buildScript] Host plug-in org.eclipse.core.net_1.1.0 has not been found.
    [java] [eclipse.buildScript] Bundle org.eclipse.core.resources.win32.x86:
    [java] [eclipse.buildScript] Host plug-in org.eclipse.core.resources_[3.5.0,4.0.0) has not been found.
    [java] [eclipse.buildScript] Bundle org.eclipse.equinox.launcher.win32.win32.x86:
    [java] [eclipse.buildScript] Bundle org.eclipse.equinox.security.win32.x86:
    [java] [eclipse.buildScript] Host plug-in org.eclipse.equinox.security_[1.0.0,2.0.0) has not been found.
    [java] [eclipse.buildScript] Bundle org.eclipse.swt.win32.win32.x86:
    [java] [eclipse.buildScript] Bundle org.eclipse.ui.win32:
    [java] [eclipse.buildScript] Host plug-in org.eclipse.ui.ide_[3.2.0,4.0.0) has not been found.
    [java] [eclipse.buildScript] Bundle org.eclipse.update.core.win32:
    [java] [eclipse.buildScript] Host plug-in org.eclipse.update.core_[3.0.0,4.0.0) has not been found.
    [java] BUILD FAILED
    [java] D:\Eclipse_RCP\plugins\org.eclipse.pde.build_3.5.2.R35x_20100114\scripts\productBuild\productBuild.xml:39: The following error occurred while executing this line:
    [java] D:\Eclipse_RCP\plugins\org.eclipse.pde.build_3.5.2.R35x_20100114\scripts\build.xml:91: The following error occurred while executing this line:
    [java] D:\Eclipse_RCP\plugins\org.eclipse.pde.build_3.5.2.R35x_20100114\templates\headless-build\customTargets.xml:12: The following error occurred while executing this line:
    [java] D:\Eclipse_RCP\plugins\org.eclipse.pde.build_3.5.2.R35x_20100114\scripts\productBuild\allElements.xml:20: The following error occurred while executing this line:
    [java] D:\Eclipse_RCP\plugins\org.eclipse.pde.build_3.5.2.R35x_20100114\scripts\genericTargets.xml:106: Bundle org.eclipse.swt.win32.win32.x86_3.3.0.v3346 failed to resolve.:
    [java] Total time: 0 seconds

    BUILD FAILED
    C:\Documents and Settings\yambalk\Desktop\2\pdebuild-tutorial-1\com.rcpquickstart.helloworld.build\build.xml:58: Java returned: 13

    Total time: 3 seconds

    Please help me.

    Thanks in advance.

    Kapil

  49. kapil says:

    Hello,

    Sorry I orgot to mention the eclipse and RCP version I am using.

    Eclipse for RCP/Plug-in Developers 1.2.2.20100216-1730 epp.package.rcp
    Eclipse Platform 3.5.2.M20100211-1343 org.eclipse.platform.ide
    Eclipse Platform 3.5.2.R35x_v20100210-0800-9hEiFzmFst-TiEn9hNYgDWg1XN8ulH_JvCNGB org.eclipse.platform.feature.group
    Eclipse Help System 1.1.2.R35x_v20100119-7e7eFAnFEx2X_fZltJhDjz-D org.eclipse.help.feature.group
    Eclipse RCP 3.5.2.R35x_v20100119-9SA0FxwFnoCU5XxWItFdXXb27BA6 org.eclipse.rcp.feature.group

    kapil

  50. Hi Kapil,

    The download here is out of date and that’s why it’s not working for Eclipse 3.5. I would also start with the simple build without the tests. One step at a time…

    You can get the new download here:

    http://www.modumind.com/2007/06/06/getting-started-with-pde-build/

    — Patrick

  51. […] Running Automated Tests with PDE Build | RCP Quickstart … ā€“ org.eclipse.core.net_1.1.0.I20080604.jar org.eclipse.core.resources_3.4.1.R34x_v20080902.jar org.eclipse.core.runtime.compatibility_3.2..v20071008.jar org.eclipse.text_3.4..v20080605-1800.jar org.eclipse.ui.forms_3.3.101.v20080708_34x.jar […]

Leave a comment