gkbrk / python-jvm-interpreter

Java Virtual Machine implementation in Python
GNU Affero General Public License v3.0
276 stars 22 forks source link

Errors #5

Open Kreijstal opened 6 months ago

Kreijstal commented 6 months ago

I merely git clonned and ran the tests..

$ sh test.sh
EEEE............EE
======================================================================
ERROR: test_cocktail_sort (__main__.ArrayTest.test_cocktail_sort)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "E:/msys64/home/topkek/t/a/python-jvm-interpreter/run_unittest.py", line 89, in setUp
    self.jvm.load_class_file('example/ArrayTest.class')
  File "E:/msys64/home/topkek/t/a/python-jvm-interpreter/pyjvm/Machine.py", line 378, in load_class_file
    c = ClassFile().from_file(path)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:/msys64/home/topkek/t/a/python-jvm-interpreter/pyjvm/ClassFile.py", line 80, in from_file
    c = CPInfo().from_reader(cf)
        ^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:/msys64/home/topkek/t/a/python-jvm-interpreter/pyjvm/CPInfo.py", line 20, in from_reader
    self.tag = CPTag(tag)
               ^^^^^^^^^^
  File "E:/msys64/ucrt64/lib/python3.11/enum.py", line 712, in __call__
    return cls.__new__(cls, value)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "E:/msys64/ucrt64/lib/python3.11/enum.py", line 1135, in __new__
    raise ve_exc
ValueError: 18 is not a valid CPTag

======================================================================
ERROR: test_insertion_sort (__main__.ArrayTest.test_insertion_sort)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "E:/msys64/home/topkek/t/a/python-jvm-interpreter/run_unittest.py", line 89, in setUp
    self.jvm.load_class_file('example/ArrayTest.class')
  File "E:/msys64/home/topkek/t/a/python-jvm-interpreter/pyjvm/Machine.py", line 378, in load_class_file
    c = ClassFile().from_file(path)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:/msys64/home/topkek/t/a/python-jvm-interpreter/pyjvm/ClassFile.py", line 80, in from_file
    c = CPInfo().from_reader(cf)
        ^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:/msys64/home/topkek/t/a/python-jvm-interpreter/pyjvm/CPInfo.py", line 20, in from_reader
    self.tag = CPTag(tag)
               ^^^^^^^^^^
  File "E:/msys64/ucrt64/lib/python3.11/enum.py", line 712, in __call__
    return cls.__new__(cls, value)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "E:/msys64/ucrt64/lib/python3.11/enum.py", line 1135, in __new__
    raise ve_exc
ValueError: 18 is not a valid CPTag

======================================================================
ERROR: test_loop_multiple (__main__.ArrayTest.test_loop_multiple)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "E:/msys64/home/topkek/t/a/python-jvm-interpreter/run_unittest.py", line 89, in setUp
    self.jvm.load_class_file('example/ArrayTest.class')
  File "E:/msys64/home/topkek/t/a/python-jvm-interpreter/pyjvm/Machine.py", line 378, in load_class_file
    c = ClassFile().from_file(path)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:/msys64/home/topkek/t/a/python-jvm-interpreter/pyjvm/ClassFile.py", line 80, in from_file
    c = CPInfo().from_reader(cf)
        ^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:/msys64/home/topkek/t/a/python-jvm-interpreter/pyjvm/CPInfo.py", line 20, in from_reader
    self.tag = CPTag(tag)
               ^^^^^^^^^^
  File "E:/msys64/ucrt64/lib/python3.11/enum.py", line 712, in __call__
    return cls.__new__(cls, value)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "E:/msys64/ucrt64/lib/python3.11/enum.py", line 1135, in __new__
    raise ve_exc
ValueError: 18 is not a valid CPTag

======================================================================
ERROR: test_sum (__main__.ArrayTest.test_sum)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "E:/msys64/home/topkek/t/a/python-jvm-interpreter/run_unittest.py", line 89, in setUp
    self.jvm.load_class_file('example/ArrayTest.class')
  File "E:/msys64/home/topkek/t/a/python-jvm-interpreter/pyjvm/Machine.py", line 378, in load_class_file
    c = ClassFile().from_file(path)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:/msys64/home/topkek/t/a/python-jvm-interpreter/pyjvm/ClassFile.py", line 80, in from_file
    c = CPInfo().from_reader(cf)
        ^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:/msys64/home/topkek/t/a/python-jvm-interpreter/pyjvm/CPInfo.py", line 20, in from_reader
    self.tag = CPTag(tag)
               ^^^^^^^^^^
  File "E:/msys64/ucrt64/lib/python3.11/enum.py", line 712, in __call__
    return cls.__new__(cls, value)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "E:/msys64/ucrt64/lib/python3.11/enum.py", line 1135, in __new__
    raise ve_exc
ValueError: 18 is not a valid CPTag

======================================================================
ERROR: test_reverse_string (__main__.StringTest.test_reverse_string)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "E:/msys64/home/topkek/t/a/python-jvm-interpreter/run_unittest.py", line 56, in setUp
    self.jvm.load_class_file('example/StringTest.class')
  File "E:/msys64/home/topkek/t/a/python-jvm-interpreter/pyjvm/Machine.py", line 378, in load_class_file
    c = ClassFile().from_file(path)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:/msys64/home/topkek/t/a/python-jvm-interpreter/pyjvm/ClassFile.py", line 80, in from_file
    c = CPInfo().from_reader(cf)
        ^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:/msys64/home/topkek/t/a/python-jvm-interpreter/pyjvm/CPInfo.py", line 20, in from_reader
    self.tag = CPTag(tag)
               ^^^^^^^^^^
  File "E:/msys64/ucrt64/lib/python3.11/enum.py", line 712, in __call__
    return cls.__new__(cls, value)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "E:/msys64/ucrt64/lib/python3.11/enum.py", line 1135, in __new__
    raise ve_exc
ValueError: 18 is not a valid CPTag

======================================================================
ERROR: test_rot13_hello_world (__main__.StringTest.test_rot13_hello_world)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "E:/msys64/home/topkek/t/a/python-jvm-interpreter/run_unittest.py", line 56, in setUp
    self.jvm.load_class_file('example/StringTest.class')
  File "E:/msys64/home/topkek/t/a/python-jvm-interpreter/pyjvm/Machine.py", line 378, in load_class_file
    c = ClassFile().from_file(path)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:/msys64/home/topkek/t/a/python-jvm-interpreter/pyjvm/ClassFile.py", line 80, in from_file
    c = CPInfo().from_reader(cf)
        ^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:/msys64/home/topkek/t/a/python-jvm-interpreter/pyjvm/CPInfo.py", line 20, in from_reader
    self.tag = CPTag(tag)
               ^^^^^^^^^^
  File "E:/msys64/ucrt64/lib/python3.11/enum.py", line 712, in __call__
    return cls.__new__(cls, value)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "E:/msys64/ucrt64/lib/python3.11/enum.py", line 1135, in __new__
    raise ve_exc
ValueError: 18 is not a valid CPTag

----------------------------------------------------------------------
Ran 18 tests in 0.236s

FAILED (errors=6)
gkbrk commented 5 months ago

Constant Pool tag 18 is CONSTANT_InvokeDynamic. This wasn't being emitted by the Java compiler for the example code when the interpreter was written.

Which Java version are you compiling with? I think using an older version will probably work. Or adding InvokeDynamic support to python-jvm-interpreter.

Kreijstal commented 5 months ago

temurin 21, can you at least add a warning or assertion warning about the jdk version, thank you, Ill try with older jdk