Jump to: navigation, search

Developer's guide to adding new plugins to the AJDT release

Revision as of 23:41, 18 January 2009 by Andrew.eisenberg.as (Talk | contribs)

Adding source plugins that contain tests only (not for distribution)

Locally (to be checked in to CVS):

  1. Check the test plugin into CVS (See the developer's guide for more information on CVS.
  2. Add test plugin to the feature org.eclipse.aspectj.feature_tests
  3. Ensure that it is "unpacked" (check box in the plug-ins page)
  4. Ensure a test.xml is in the plugin copy from another test plugin and change paths appropriately. Ensure to select either ui-test or core-test
  5. JUnit 4 is not supported by eclipse testing framework (org.eclipse.test). bug 153429 tracks this.
  6. Update the customTargets.xml ant script in update site project, org.eclipse.aspectj.updatesite. (Note that build.xml and build-minimal.xml are no longer used and can probably be deleted, I don't even know if they still work. Certainly, the build.xml scripts in the individual plugins are broken.)
  7. Edit the build.properties file and ensure that it contains the test.xml and all other files required for the binary build. The .class files should be in their own jar. Can copy from other build.properties files.
  8. Edit MANIFEST.MF and add the new jar (specified in build.properties) to the classpath.

On the build server:

  1. Ensure that org.eclipse.test and org.eclipse.ant.optional.junit plugins are installed in the target Eclipse for testing. The target Eclipse for testing is ~/cruisecontrol-2.3.1/test/eclipseXX (XX is the major.minor version number). The plugins can be found here with the automated test plugins (link to version 3.4.1, this is likely to be forward compatible).
  2. Update run-test3X.sh on build server to include new test plugin. Copy from other entries
  3. Update build-AJDT1.X.xml on build server to include checking out the plugin, checking the results, and deleting old versions. This is spread throughout the script, so copy from the other plugins. copy from other entries. Make sure that upload-build1.6weaving.xml is not touched because these changes should not be sent to the download server.
  4. Update config.xml on build server to ensure that test results are included in the log.


Note that if you want to run the tests locally through the testing framework (a good idea in order to ensure that everything is set up properly), do this:

  1. Download and install the Eclipse testing framework: org.eclipse.test, and org.eclipse.ant.optional.junit.
  2. Create a new debug launch configuration.
  3. Set the Program args to be something like this:
-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -f ${workspace_loc}/org.eclipse.contribution.weaving.jdt.tests/testbackup.xml -classname org.eclipse.contribution.weaving.jdt.tests.AllWeavingTests -testpluginname org.eclipse.contribution.weaving.jdt.tests
  1. Set the VM args to be something like this:
-Ddata-dir=${workspace_loc}/org.eclipse.test/results -Dplugin-name=org.eclipse.contribution.weaving.jdt.tests -Dclassname=org.eclipse.contribution.weaving.jdt.tests.AllWeavingTests -Declipse-home=/Users/andrew/Eclipse/Installations/Eclipse3.4
-Xms40m
-Xmx768m
-XX:PermSize=128M
-XX:MaxPermSize=256M
  1. Ensure that the Configuration page uses an Equinox Aspects-aware config.ini.

This article describes the headless testing process.

Adding source plugins that are meant for distribution

A lot of similarity to above, but some differences

Locally:

  1. Check new plugin into cvs
  2. Add plugin to appropriate feature (probably org.eclipse.ajdt-feature). This plugin should probably be "packed".
  3. Update the customTargets.xml ant script in update site project (org.eclipse.aspectj.updatesite). Note that build.xml and build-minimal.xml are no longer.

On the build server:

  1. Update the build-ajdt1.X.xml, upload-build1.X.xml ant scripts.

That's probably it.

Adding third party binary plugins for distribution

AJDT does not do this yet, but we may choose to bundle our own version of Equinox Aspects. If we do this, then how to do this for other third party plugins will be described here.