You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by kr...@apache.org on 2011/06/07 06:39:11 UTC
svn commit: r1132860 - in
/db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit:
BaseTestCase.java SecurityManagerSetup.java
Author: kristwaa
Date: Tue Jun 7 04:39:11 2011
New Revision: 1132860
URL: http://svn.apache.org/viewvc?rev=1132860&view=rev
Log:
DERBY-5262: Running JUnit tests with Java 1.4.2 fails if the package private tests are on the classpath
Check that the running JVM can support Java 1.5 class files before trying to
load the package private file (which are compiled with Java 1.5) when setting
up the security manager for tests.
Patch file: derby-5262-1a-secmansetup_check_class_version.diff
Modified:
db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/BaseTestCase.java
db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/SecurityManagerSetup.java
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/BaseTestCase.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/BaseTestCase.java?rev=1132860&r1=1132859&r2=1132860&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/BaseTestCase.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/BaseTestCase.java Tue Jun 7 04:39:11 2011
@@ -625,6 +625,36 @@ public abstract class BaseTestCase
}
/**
+ * Returns the major version of the class specification version supported
+ * by the running JVM.
+ * <ul>
+ * <li>48 = Java 1.4</li>
+ * <li>49 = Java 1.5</li>
+ * <li>50 = Java 1.6</li>
+ * <li>51 = Java 1.7</li>
+ * </ul>
+ *
+ * @return Major version of class version specification, i.e. 49 for 49.0,
+ * or -1 if the version can't be obtained for some reason.
+ */
+ public static int getClassVersionMajor() {
+ String tmp = getSystemProperty("java.class.version");
+ if (tmp == null) {
+ println("VM doesn't have property java.class.version");
+ return -1;
+ }
+ // Is String.split safe to use by now?
+ int dot = tmp.indexOf('.');
+ int major = -1;
+ try {
+ major = Integer.parseInt(tmp.substring(0, dot));
+ } catch (NumberFormatException nfe) {
+ // Ignore, return -1.
+ }
+ return major;
+ }
+
+ /**
* Check if we have old style (before Sun Java 1.7) Solaris interruptible
* IO. On Sun Java 1.5 >= update 22 and Sun Java 1.6 this can be disabled
* with Java option {@code -XX:-UseVMInterruptibleIO}. On Sun Java 1.7 it
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/SecurityManagerSetup.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/SecurityManagerSetup.java?rev=1132860&r1=1132859&r2=1132860&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/SecurityManagerSetup.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/SecurityManagerSetup.java Tue Jun 7 04:39:11 2011
@@ -291,8 +291,12 @@ public final class SecurityManagerSetup
classPathSet.setProperty("derbyTesting.jaxpjar", jaxp);
URL testing = getURL(SecurityManagerSetup.class);
- URL ppTesting = getURL("org.apache.derby.PackagePrivateTestSuite");
-
+ URL ppTesting = null;
+ // Only try to load PackagePrivateTestSuite if the running JVM is
+ // Java 1.5 or newer (class version 49 = Java 1.5).
+ if (BaseTestCase.getClassVersionMajor() >= 49) {
+ ppTesting = getURL("org.apache.derby.PackagePrivateTestSuite");
+ }
boolean isClasspath = testing.toExternalForm().endsWith("/");
if (isClasspath) {
classPathSet.setProperty("derbyTesting.codeclasses",