You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

readme-release-tests.html 4.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. <html>
  2. <title>AspectJ release testing</title>
  3. <body>
  4. <h1>AspectJ release testing</h1>
  5. This describes tests to validate AspectJ before a release.
  6. <u>WARNING<u>: this file is being superceded by
  7. <a href="../build/release-checklist.txt">
  8. ../build/release-checklist.txt</a>.
  9. Some tests may be omitted for pre-release distributions, but all
  10. should be run for final releases.
  11. For information on how to build and run tests, see
  12. <a href="../build/readme-build-and-test-aspectj.html">
  13. ../build/readme-build-and-test-aspectj.html</a>
  14. and
  15. <a href="readme-tests-module.html">
  16. readme-tests-module.html</a>.
  17. <p>(Most of these can and should be rolled into an Ant script
  18. for automation; until that script is written, this describes
  19. tests and could and/or should be run.)
  20. <p>Before a release, run the following tests using a Java 1.3 VM
  21. (the minimum required by the AspectJ tools):
  22. <ol>
  23. <li>JUnit tests. Run these before the final build
  24. using <code>tests/junitModules.xml</code>
  25. (which runs all the
  26. <code>modules/{module}/testsrc/{module}ModuleTests.java</code>).
  27. <p>
  28. </li>
  29. <li>All compiler tests in <code>tests/ajcTests.xml</code>
  30. and <code>tests/ajcTestsFailing.xml</code>.
  31. Run these before the final build using the test harness,
  32. as follows:
  33. <pre>
  34. cd tests/
  35. java -jar {..}/testing-drivers-all.jar ajcTests.xml -release
  36. </pre>
  37. The <code>-release</code> option skips tests
  38. marked <code>purejava</code> or <code>knownLimitation</code>
  39. and only emits one-line results for each test:
  40. <pre>
  41. PASS one test identifier()
  42. FAIL another test identifier()
  43. ...
  44. </pre>
  45. (Use <code>-help</code> on the harness to see the full
  46. definition of the <code>-release</code> alias.)
  47. Save the output
  48. to the appropriate subdirectory of the
  49. <a href="../../releases">org.aspectj/releases</a> directory
  50. with the name
  51. <code>ajcTests-result-{version}.txt</code>.
  52. or <code>ajcTests-result-{version}-emacssym.txt</code>.
  53. <p>
  54. Compare results with a prior release or test run using TestDiffs:
  55. <pre>
  56. set CLASSPATH="{..}/testing-drivers-all.jar"
  57. java org.aspectj.testing.util.TestDiffs {first-run}.txt {second-run}.txt
  58. </pre>
  59. This will generate lists of tests fixed, broken, missing, or
  60. added. For a release, no tests from <code>ajcTests.xml</code>
  61. should be broken, and missing tests (those in the first run absent from the
  62. second run) should be justified (usually the test was
  63. removed as invalid). A test will show up as
  64. missing from the first run and added to the second run if
  65. it is renamed between runs.
  66. For a final release, no test should be <code>FAIL</code> unless it is
  67. deferred (including those from <code>ajcTestsFailing.xml</code>).
  68. <p>
  69. For (at least final) releases, run all relevant variants:
  70. <ul>
  71. <li>With and without <code>-emacssym</code></li>
  72. <li>1.3 and 1.4 VM's</li>
  73. <li>without -release and with purejava tests. While
  74. these may fail, they should not crash the compiler.</li>
  75. </ul>
  76. <li>Examples. Run these on the built/installed release.
  77. The following should build and run the spacewar example:
  78. <pre>
  79. cd {aspectj-install}/doc/examples
  80. {ant 1.5.1} -f build.xml
  81. </pre>
  82. Also run 2-3 other targets from Ant and some examples directly:
  83. <ul>
  84. <li>
  85. The target <code>all</code>
  86. runs all examples, and <code>nonGui</code> runs those
  87. that do not require manual operation;
  88. </li>
  89. <li>The target<code>tracing-bc</code> does bytecode weaving
  90. </li>
  91. <li>The target<code>tracing-adapter-ajc</code> compiles the
  92. tracing example using the <javac> task and the
  93. Ajc compiler adapter.
  94. </li>
  95. <li>
  96. Run the compiled examples in a 1.1 VM
  97. (the minimum required for running AspectJ code).
  98. </li>
  99. </ul>
  100. <p>
  101. This quick test verifies that the
  102. <code>aspectjtools.jar</code> and <code>aspectjrt.jar</code>
  103. are installed and have a matching version, that the examples actually
  104. compile and run, etc.
  105. <p>
  106. </li>
  107. <li>If there are any bugs which are closed with this release
  108. but which do not have an automated test case run using
  109. JUnit or the harness, those bugs should be manually tested
  110. against the release.
  111. <p>
  112. </li>
  113. <li>Any other tests warranted by release objectives.
  114. E.g., make sure it works as expected for any demos or
  115. for any clients (e.g., Emacs, AJDT).
  116. </li>
  117. <li>Compile large open-source Java projects using AspectJ.
  118. </li>
  119. <li>Run the AspectJ compiler against the Jacks test suite.
  120. </li>
  121. <li>Manually step through the
  122. <a href="ajde/script.html">ajde/script.html</a>
  123. on the AspectJ browser.
  124. </ol>
  125. <p>Some failures with past releases to consider checking:
  126. <ul>
  127. <li>debug info not included in .class files</li>
  128. <li>API not included in documentation</li>
  129. <li>Ant variables not filtered into doc files (e.g., ant-tasks.html)</li>
  130. <li>Manual dates not changed in docs or readme</li>
  131. <li>Inconsistent version information between runtime and tools classes</li>
  132. </ul>
  133. </body>
  134. </html>