tools/derbyrunjartest.java doesn't use jvmflags

Details

Description

tools/derbyrunjartest.java doesn't use the jvmflags property when it starts a sub-process, so one cannot pass custom flags to the process. This makes it difficult to get the test to pass when running with code coverage tools.

For example, for EMMA, we need to manipulate the classpath and reduce the verbosity level. And we need to pass a -javaagent flag if we're running with JaCoCo. Using the jvmflags property works for those tests that don't spawn processes.

Attached is a patch that rewrites derbyrunjartest as a JUnit
test and removes it from the old harness.

Both suites.All and derbyall passed with the patch.

Details:

build.xml

Add derbyrun.jar to the classpath when running JUnit tests under EMMA. It wasn't needed before, since none of the other JUnit tests used derbyrun.jar.

functionTests/master/derbyrunjartest.out

Remove old canon.

functionTests/suites/derbytools.runall

Remove from old harness suite.

functionTests/tests/tools/build.xml

Make sure newly created policy file gets copied to classes directory.

functionTests/tests/tools/derbyrunjartest.java

Execute the tools and compare actual output with the expected output using BaseTestCase.assertExecJavaCmdAsExpected().

functionTests/tests/tools/derbyrunjartest.policy

Additional permissions needed for the test to run (test classes need permission to find the location of derbyrun.jar). The original version of the test ran without a security manager for this reason.

functionTests/tests/tools/derbyrunjartest_app.properties

functionTests/tests/tools/derbyrunjartest_sed.properties

Remove files used by the old harness.

junit/BaseTestCase.java

Added logic to pass emma.jar to the classpath of the sub-process when running java -jar. Since you cannot add jar files directly to the classpath when running with -jar, emma.jar is added to the bootclasspath.

Knut Anders Hatlen
added a comment - 20/Jun/12 14:07 Attached is a patch that rewrites derbyrunjartest as a JUnit
test and removes it from the old harness.
Both suites.All and derbyall passed with the patch.
Details:
build.xml
Add derbyrun.jar to the classpath when running JUnit tests under EMMA. It wasn't needed before, since none of the other JUnit tests used derbyrun.jar.
functionTests/master/derbyrunjartest.out
Remove old canon.
functionTests/suites/derbytools.runall
Remove from old harness suite.
functionTests/tests/tools/build.xml
Make sure newly created policy file gets copied to classes directory.
functionTests/tests/tools/derbyrunjartest.java
Execute the tools and compare actual output with the expected output using BaseTestCase.assertExecJavaCmdAsExpected().
functionTests/tests/tools/derbyrunjartest.policy
Additional permissions needed for the test to run (test classes need permission to find the location of derbyrun.jar). The original version of the test ran without a security manager for this reason.
functionTests/tests/tools/derbyrunjartest_app.properties
functionTests/tests/tools/derbyrunjartest_sed.properties
Remove files used by the old harness.
junit/BaseTestCase.java
Added logic to pass emma.jar to the classpath of the sub-process when running java -jar. Since you cannot add jar files directly to the classpath when running with -jar, emma.jar is added to the bootclasspath.

Reopening the issue since I forgot to add the JUnit test to the tools._Suite. Also, the test case for the server command fails on J2ME platforms, because the server isn't supported on those platforms, and should be skipped.

Knut Anders Hatlen
added a comment - 04/Jul/12 12:50 Reopening the issue since I forgot to add the JUnit test to the tools._Suite. Also, the test case for the server command fails on J2ME platforms, because the server isn't supported on those platforms, and should be skipped.