changeset 22497:a3f74fed899b

test: Check for JRE at runtime before executing BIST tests which use Java. * ov-class.cc, ov-java.cc, ov-typeinfo.cc, fieldnames.m, methods.m, javachk.m, usejava.m: Add check on `usejava ("jvm")' before executing BIST test which uses Java features.
author Rik <rik@octave.org>
date Thu, 15 Sep 2016 10:24:45 -0700
parents d7931cb69486
children 4d9c371d2cca
files libinterp/octave-value/ov-class.cc libinterp/octave-value/ov-java.cc libinterp/octave-value/ov-typeinfo.cc scripts/general/fieldnames.m scripts/general/methods.m scripts/java/javachk.m scripts/java/usejava.m
diffstat 7 files changed, 48 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/libinterp/octave-value/ov-class.cc	Thu Sep 15 08:56:14 2016 -0700
+++ b/libinterp/octave-value/ov-class.cc	Thu Sep 15 10:24:45 2016 -0700
@@ -1779,6 +1779,9 @@
 %!assert (class (single (1.1)), "single")
 %!assert (class (uint8 (1)), "uint8")
 %!testif HAVE_JAVA
+%! if (! usejava ("jvm"))
+%!   return;
+%! endif
 %! jobj = javaObject ("java.lang.StringBuffer");
 %! assert (class (jobj), "java.lang.StringBuffer");
 
@@ -1882,6 +1885,9 @@
 %!assert (isa ({1, 2}, {"numeric", "integer", "cell"}), [false false true])
 
 %!testif HAVE_JAVA
+%! if (! usejava ("jvm"))
+%!   return;
+%! endif
 %! ## The first and last assert() are equal on purpose.  The assert() in
 %! ## the middle with an invalid class name will cause the java code to
 %! ## throw exceptions which we then must clear properly (or all other calls
--- a/libinterp/octave-value/ov-java.cc	Thu Sep 15 08:56:14 2016 -0700
+++ b/libinterp/octave-value/ov-java.cc	Thu Sep 15 10:24:45 2016 -0700
@@ -2868,6 +2868,9 @@
 ## Java itself.  Create a Short and check if it really is a short, i.e.,
 ## whether it overflows.
 %!testif HAVE_JAVA
+%! if (! usejava ("jvm"))
+%!   return;
+%! endif
 %! assert (javaObject ("java.lang.Short", 40000).doubleValue < 0);
 */
 
@@ -2940,6 +2943,9 @@
 
 /*
 %!testif HAVE_JAVA
+%! if (! usejava ("jvm"))
+%!   return;
+%! endif
 %! ## Check for valid first two Java version numbers
 %! jver = strsplit (javaMethod ("getProperty", "java.lang.System", "java.version"), ".");
 %! assert (isfinite (str2double (jver{1})) && isfinite (str2double (jver{2})));
@@ -3210,12 +3216,18 @@
 /*
 ## Check automatic conversion of java primitive arrays into octave types.
 %!testif HAVE_JAVA
+%! if (! usejava ("jvm"))
+%!   return;
+%! endif
 %! assert (javaObject ("java.lang.String", "hello").getBytes (),
 %!         int8 ([104 101 108 108 111]'));
 
 ## Check automatic conversion of octave types into java primitive arrays.
 ## Note that uint8 is casted to int8.
 %!testif HAVE_JAVA
+%! if (! usejava ("jvm"))
+%!   return;
+%! endif
 %! assert (javaMethod ("binarySearch", "java.util.Arrays", [90 100 255], 255), 2);
 %! assert (javaMethod ("binarySearch", "java.util.Arrays", uint8 ([90 100 255]), uint8 (255)) < 0);
 %! assert (javaMethod ("binarySearch", "java.util.Arrays", uint8 ([90 100 128]), uint8 (128)) < 0);
@@ -3224,6 +3236,9 @@
 
 ## Check we can create objects that wrap java literals
 %!testif HAVE_JAVA <38821>
+%! if (! usejava ("jvm"))
+%!   return;
+%! endif
 %! assert (class (javaObject ("java.lang.Byte",     uint8 (1))), "java.lang.Byte");
 %! assert (class (javaObject ("java.lang.Byte",      int8 (1))), "java.lang.Byte");
 %! assert (class (javaObject ("java.lang.Short",   uint16 (1))), "java.lang.Short");
@@ -3235,6 +3250,9 @@
 
 ## Test for automatic conversion of specific numeric classes
 %!testif HAVE_JAVA <48013>
+%! if (! usejava ("jvm"))
+%!   return;
+%! endif
 %! assert (javaMethod ("valueOf", "java.lang.Byte",     int8 (1)), 1)
 %! assert (javaMethod ("valueOf", "java.lang.Short",   int16 (1)), 1)
 %! assert (javaMethod ("valueOf", "java.lang.Integer", int32 (1)), 1)
@@ -3246,6 +3264,9 @@
 
 ## Automatic conversion from string cell array into String[]
 %!testif HAVE_JAVA <45290>
+%! if (! usejava ("jvm"))
+%!   return;
+%! endif
 %! assert (javaMethod ("binarySearch", "java.util.Arrays", {"aaa", "bbb", "ccc", "zzz"}, "aaa"), 0);
 %! assert (javaMethod ("binarySearch", "java.util.Arrays", {"aaa", "bbb", "ccc", "zzz"}, "zzz"), 3);
 %! assert (javaMethod ("binarySearch", "java.util.Arrays", {"aaa", "bbb", "ccc", "zzz"}, "hhh") < 0);
--- a/libinterp/octave-value/ov-typeinfo.cc	Thu Sep 15 08:56:14 2016 -0700
+++ b/libinterp/octave-value/ov-typeinfo.cc	Thu Sep 15 10:24:45 2016 -0700
@@ -682,6 +682,9 @@
 %! assert (typeinfo (cvar), "onCleanup");
 
 %!testif HAVE_JAVA
+%! if (! usejava ("jvm"))
+%!   return;
+%! endif
 %! x = javaObject ("java.lang.StringBuffer");
 %! assert (typeinfo (x), "octave_java");
 
--- a/scripts/general/fieldnames.m	Thu Sep 15 08:56:14 2016 -0700
+++ b/scripts/general/fieldnames.m	Thu Sep 15 10:24:45 2016 -0700
@@ -75,11 +75,17 @@
 
 ## test Java classname by passing classname
 %!testif HAVE_JAVA
+%! if (! usejava ("jvm"))
+%!   return;
+%! endif
 %! names = fieldnames ("java.lang.Double");
 %! assert (any (strcmp (names, "MAX_VALUE")));
 
 ## test Java classname by passing java object
 %!testif HAVE_JAVA
+%! if (! usejava ("jvm"))
+%!   return;
+%! endif
 %! names = fieldnames (javaObject ("java.lang.Double", 10));
 %! assert (any (strcmp (names, "MAX_VALUE")));
 %! assert (all (ismember ({"POSITIVE_INFINITY", "NEGATIVE_INFINITY", ...
@@ -88,6 +94,9 @@
 %!                        names)));
 
 %!testif HAVE_JAVA
+%! if (! usejava ("jvm"))
+%!   return;
+%! endif
 %! names = fieldnames (javaObject ("java.lang.String", "Hello"));
 %! assert (any (strcmp (names, "CASE_INSENSITIVE_ORDER")));
 
--- a/scripts/general/methods.m	Thu Sep 15 08:56:14 2016 -0700
+++ b/scripts/general/methods.m	Thu Sep 15 10:24:45 2016 -0700
@@ -81,6 +81,9 @@
 
 ## test Java classname
 %!testif HAVE_JAVA
+%! if (! usejava ("jvm"))
+%!   return;
+%! endif
 %! mtds = methods ("java.lang.Double");
 %! search = strfind (mtds, "java.lang.Double valueOf");
 %! assert (! isempty ([search{:}]));
--- a/scripts/java/javachk.m	Thu Sep 15 08:56:14 2016 -0700
+++ b/scripts/java/javachk.m	Thu Sep 15 10:24:45 2016 -0700
@@ -142,6 +142,9 @@
 %! assert (msg.identifier, "Java DESKTOP");
 
 %!testif HAVE_JAVA
+%! if (! usejava ("jvm"))
+%!   return;
+%! endif
 %! assert (javachk ("jvm"), "");
 
 ## Test input validation
--- a/scripts/java/usejava.m	Thu Sep 15 08:56:14 2016 -0700
+++ b/scripts/java/usejava.m	Thu Sep 15 10:24:45 2016 -0700
@@ -86,6 +86,9 @@
 %!assert (usejava ("desktop"), false)
 
 %!testif HAVE_JAVA
+%! if (! usejava ("jvm"))
+%!   return;
+%! endif
 %! assert (usejava ("jvm"), true);
 
 ## Test input validation