Incremental test of AjcTask Ant task

This directory contains files for manually testing two AjcTask Ant task facilities: incTest.xml is an Ant script which builds two input jars and runs an incremental test using a tag file.

The results must be verified by hand manually at present; This test should be updated to run using JUnit like AjcTaskTest.java.

Sample procedure

This shows how to set up the test and check whether the incremental tag file and resource-copying features work. Throughout, {ant} is assumed to be ../../../lib/ant/bin/ant and the directory is assumed to be this directory, with the Ant build script incTest.xml. The script uses the eclipse classpath rather than aspectjtools.jar, so that updates to the sources can be tested without rebuilding the distribution.
  1. Set up the output jars
      {ant} -f incTest.xml setup
    This should produce one.jar and two.jar in the directory injars/.

  2. Start the run with the default settings (use output/tagfile.txt as the tag file and to include the non-.class contents of the input jars in the output jar):
      {ant} -f incTest.xml test
    The task will do an initial compilation and silently wait.

  3. In another shell, test the classes in the generated output jar:
      export CLASSPATH="../../../lib/test/aspectjrt.jar;output/outjar.jar"
      java packageOne.Main
    Inspect the files in the src/ and injarSrc/ directories to find other main classes and to determine the expected result of the aspect. As of this writing, the aspect src/TraceMains.java should emit messages before and after the execution of any static main(String[]) method.

  4. Check that the output jar got the injar and src files:
      jar tf output/outjar.jar

    The output should list the non-.class files in injarSrc/ and the non CVS/.java files in the src/ dir.

  5. To test incremental compiles, edit the aspect src/TraceMains.java to modify the behavior. You can also modify the input jars or source files. Then touch or edit output/tagfile.txt to provoke recompilation.

  6. Test the generated output jar again to see if the changes are reflected in the runtime behavior and if files are being copied correctly.

  7. Repeat this process until satisfied. Delete the tagfile to quit:
      rm output/tagfile.txt

  8. Also run the targets test-all and test-both.

Many combination of the option variants are possible. Test the relevant ones by editing the incTest.xml script and redoing the test.

OptionVariants
incrementalnone, -incremental, -tagFile
outputnone (default "."), destDir, output jar
injarsnone, one, two
injar copyingoff (default), on
source resource copyingoff (default), various patterns

Clean-up

Take care to preserve CVS state after running this test. It calls on you to edit checked-in files and generates files to local repository directories. The best thing is to delete the output and injars directories (using the clean task) and revert to repository forms for sources (unless fixing them).

Upgrade

This needs to be upgraded to run automatically. There is a file/tree-comparison utility to revive from the aspectj-attic which can be used to compare expected and actual results of the jar files. Setting up the tasks to run incrementally might be done using the parallel task, but...

In any case, the nested options tested here should move to non-incremental JUnit tests.