Signed-off-by: Tomek Grabiec <tgrab...@gmail.com> --- Makefile | 3 +- regression/jvm/ClassExceptionsTest.java | 66 +++++++++++++++++++++++++++++++ regression/run-suite.sh | 1 + 3 files changed, 69 insertions(+), 1 deletions(-) create mode 100644 regression/jvm/ClassExceptionsTest.java
diff --git a/Makefile b/Makefile index 0273900..44a7768 100644 --- a/Makefile +++ b/Makefile @@ -238,7 +238,8 @@ REGRESSION_TEST_SUITE_CLASSES = \ regression/jvm/LongArithmeticExceptionsTest.class \ regression/jvm/MethodInvocationExceptionsTest.class \ regression/jvm/ObjectCreationAndManipulationExceptionsTest.class \ - regression/jvm/SynchronizationExceptionsTest.class + regression/jvm/SynchronizationExceptionsTest.class \ + regression/jvm/ClassExceptionsTest.class $(REGRESSION_TEST_SUITE_CLASSES): %.class: %.java $(E) " JAVAC " $@ diff --git a/regression/jvm/ClassExceptionsTest.java b/regression/jvm/ClassExceptionsTest.java new file mode 100644 index 0000000..7a875d5 --- /dev/null +++ b/regression/jvm/ClassExceptionsTest.java @@ -0,0 +1,66 @@ +/* + * Copyright (C) 2009 Tomasz Grabiec + * + * This file is released under the GPL version 2 with the following + * clarification and special exception: + * + * Linking this library statically or dynamically with other modules is + * making a combined work based on this library. Thus, the terms and + * conditions of the GNU General Public License cover the whole + * combination. + * + * As a special exception, the copyright holders of this library give you + * permission to link this library with independent modules to produce an + * executable, regardless of the license terms of these independent + * modules, and to copy and distribute the resulting executable under terms + * of your choice, provided that you also meet, for each linked independent + * module, the terms and conditions of the license of that module. An + * independent module is a module which is not derived from or based on + * this library. If you modify this library, you may extend this exception + * to your version of the library, but you are not obligated to do so. If + * you do not wish to do so, delete this exception statement from your + * version. + * + * Please refer to the file LICENSE for details. + */ +package jvm; + +import jato.internal.VM; + +/** + * @author Tomasz Grabiec + */ +public class ClassExceptionsTest extends TestCase { + static class A { + public static int field; + }; + + public static void testClassInitFailure() { + boolean caught = false; + + VM.enableFault(VM.FAULT_IN_CLASS_INIT, "ClassExceptionsTest$A"); + + try { + A.field = 0; + } catch (ExceptionInInitializerError e) { + caught = true; + } + + VM.disableFault(VM.FAULT_IN_CLASS_INIT); + + assertTrue(caught); + + caught = false; + try { + A.field = 0; + } catch (NoClassDefFoundError e) { + caught = true; + } + + assertTrue(caught); + } + + public static void main(String []args) { + testClassInitFailure(); + } +} \ No newline at end of file diff --git a/regression/run-suite.sh b/regression/run-suite.sh index 688b595..7dc87bf 100755 --- a/regression/run-suite.sh +++ b/regression/run-suite.sh @@ -84,6 +84,7 @@ if [ -z "$CLASS_LIST" ]; then run_java jvm.MethodInvocationExceptionsTest 0 run_java jvm.ObjectCreationAndManipulationExceptionsTest 0 run_java jvm.SynchronizationExceptionsTest 0 + run_java jvm.ClassExceptionsTest 0 else for i in $CLASS_LIST; do run_java $i 0 -- 1.6.0.6 ------------------------------------------------------------------------------ _______________________________________________ Jatovm-devel mailing list Jatovm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jatovm-devel