WARNING: these product tests have not been used since AspectJ 1.0.

This directory is for "product" tests, which validate the product as delivered 
to users, i.e., as installed from an installer in relevant combinations. This
type of testing is also called "system" test, or (less correctly) "integration"
testing.  It may make use of unit-test drivers, etc.; the difference is not
in the test tools or techniques, but in the scope of the validation.  However,
validation typically builds on other testing; e.g., if the compiler has been
thoroughly tested, then it may suffice in product testing to validate that
the compiler binaries are the same and that the examples compile using the
scripts which use the compiler binaries.

The ant script aspectj/test-product.xml drives the process by installing the
product, copying this entire directory to the target dir, and invoking
ant product-test.xml. Currently, that script in turn does two things:
 - executes the ajc.bat script to compile the telecom example, and run it
 - invokes ant ant-example.xml to compile/doc/run all examples using
   the ant taskdefs. 
In both cases the results are not validated except that the operations completed.

Setup of the installation directory (aka product or target directory):

  ## dir/file ##            ## ant source ##        ## variable in ant source ##
  {target.dir}              test-product.xml        ${target.dir}
    aspectj-ant             test-product.xml
      aspectj-ant.jar         aspectj-ant installer ${taskdefs.jar}
    bin                       tools installer       ${bin.dir}
    doc                       docs installer        ${lib.dir}
    examples                  docs installer        ${examples.dir}
    lib                       tools installer       ${lib.dir}
      aspectjtools.jar        tools installer       ${aspectjtools.jar}
      aspectjrt.jar           tools installer       ${aspectjrt.jar}
    product                 product-test.xml        ${test.source.dir}
    product-test-output     product-test.xml        ${test.dest.dir}
      ajx-output            ant-examples.xml        ${ajx.base.dir}
        {example}/classes   ant-examples.xml        
        {example}/docs      ant-examples.xml        
        {example}/output    ant-examples.xml        
          out.txt           ant-examples.xml        

---------------------------------------------------- to run tests
cd aspectj
## either this (which builds the ajde and source files, too) ...
build/bin/ant.sh -f build.xml download.files 
## or this (which only builds what's needed)...
build/bin/ant.sh -f build-tools.xml download.files 
build/bin/ant.sh -f build-docs.xml download.files 
build/bin/ant.sh -f build-ant-tasks.xml download.files 
## then run the tests
build/bin/ant.sh -f test-product.xml 
## and inspect the results
cd ../aj-build/temp/aspectj{version}/product-test-output/ajx-output
...

---------------------------------------------------- todo
- include all download.files packages
  - need to test installer text interface for ide installer jars
- file differencer on all packages after install
- source-build tests
- file differencer as regression test for emitted output

-------- updates needed for 1.1
- change licenses in scripts to CPL
- reintegrate comparefiles (see aspectj-attic?)
- 
-------- tests needed for 1.1
- version checking
  - warn when no aspectjrt.jar on classpath.
  - warn when bad aspectjrt.jar on classpath
  - warn when aspectjrt.jar on classpath has the wrong version number
  - no exception printed for any warning
  - no warning when correct aspectjrt.jar on classpath
    (ant doc/examples/build.xml)
    
---- ajbrowser command-line
- ajbrowser on no arguments or only .lst args
- compiler on arguments other than .lst
- compiler help on -help (confusing)

---- compiler command-line
- sources
- binary
  [injars|not] X [aspectpath|not] X [sources|not]

---- ant tasks
- all compiler variants
-   