Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Mark failing tests
  • Loading branch information
ShaharNaveh committed Jul 25, 2025
commit 7f97034055f13b4c4d5f23c0fb9ea3b51fda4241
279 changes: 279 additions & 0 deletions Lib/test/test_pickle.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,16 @@ class PyPickleTests(AbstractPickleModuleTests, unittest.TestCase):
Pickler = pickle._Pickler
Unpickler = pickle._Unpickler

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_dump_load_oob_buffers(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_dump_load_oob_buffers()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_dumps_loads_oob_buffers(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_dumps_loads_oob_buffers()


class PyUnpicklerTests(AbstractUnpickleTests, unittest.TestCase):

Expand All @@ -55,6 +65,21 @@ def loads(self, buf, **kwds):
u = self.unpickler(f, **kwds)
return u.load()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_badly_escaped_string(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_badly_escaped_string()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_correctly_quoted_string(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_correctly_quoted_string()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_load_python2_str_as_bytes(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_load_python2_str_as_bytes()


class PyPicklingErrorTests(AbstractPicklingErrorTests, unittest.TestCase):

Expand All @@ -67,6 +92,31 @@ def dumps(self, arg, proto=None, **kwargs):
f.seek(0)
return bytes(f.read())

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_picklebuffer_error(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_picklebuffer_error()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_reduce_ex_None(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_reduce_ex_None()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_bad_getattr(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_bad_getattr()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_buffer_callback_error(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_buffer_callback_error()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_non_continuous_buffer(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_non_continuous_buffer()


class PyPicklerTests(AbstractPickleTests, unittest.TestCase):

Expand All @@ -85,6 +135,121 @@ def loads(self, buf, **kwds):
u = self.unpickler(f, **kwds)
return u.load()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_c_methods(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_c_methods()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_complex_newobj_ex(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_complex_newobj_ex()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_py_methods(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_py_methods()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_buffers_error(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_buffers_error()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_builtin_functions(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_builtin_functions()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_bytearray_memoization(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_bytearray_memoization()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_bytes_memoization(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_bytes_memoization()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_in_band_buffers(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_in_band_buffers()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_oob_buffers(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_oob_buffers()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_oob_buffers_writable_to_readonly(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_oob_buffers_writable_to_readonly()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_optional_frames(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_optional_frames()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_pickle_setstate_None(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_pickle_setstate_None()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_recursive_nested_names2(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_recursive_nested_names2()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_buffers_error(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_buffers_error()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_builtin_functions(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_builtin_functions()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_bytearray_memoization(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_bytearray_memoization()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_bytes_memoization(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_bytes_memoization()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_in_band_buffers(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_in_band_buffers()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_oob_buffers(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_oob_buffers()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_oob_buffers_writable_to_readonly(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_oob_buffers_writable_to_readonly()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_optional_frames(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_optional_frames()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_pickle_setstate_None(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_pickle_setstate_None()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_recursive_nested_names2(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_recursive_nested_names2()


class InMemoryPickleTests(AbstractPickleTests, AbstractUnpickleTests,
BigmemPickleTests, unittest.TestCase):
Expand All @@ -104,6 +269,85 @@ def loads(self, buf, **kwds):
test_find_class = None
test_custom_find_class = None

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_c_methods(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_c_methods()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_complex_newobj_ex(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_complex_newobj_ex()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_badly_escaped_string(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_badly_escaped_string()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_correctly_quoted_string(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_correctly_quoted_string()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_load_python2_str_as_bytes(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_load_python2_str_as_bytes()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_py_methods(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_py_methods()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_recursive_nested_names2(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_recursive_nested_names2()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_oob_buffers_writable_to_readonly(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_oob_buffers_writable_to_readonly()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_buffers_error(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_buffers_error()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_builtin_functions(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_builtin_functions()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_bytearray_memoization(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_bytearray_memoization()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_bytes_memoization(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_bytes_memoization()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_in_band_buffers(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_in_band_buffers()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_oob_buffers(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_oob_buffers()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_optional_frames(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_optional_frames()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_pickle_setstate_None(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_pickle_setstate_None()

class PersistentPicklerUnpicklerMixin(object):

Expand Down Expand Up @@ -327,12 +571,32 @@ def _persistent_load(subself, pid):
del unpickler.persistent_load
self.assertEqual(unpickler.persistent_load, old_persistent_load)

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_pickler_instance_attribute(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_pickler_instance_attribute()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_pickler_super(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_pickler_super()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_pickler_super_instance_attribute(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_pickler_super_instance_attribute()


class PyPicklerUnpicklerObjectTests(AbstractPicklerUnpicklerObjectTests, unittest.TestCase):

pickler_class = pickle._Pickler
unpickler_class = pickle._Unpickler

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_pickle_invalid_reducer_override(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_pickle_invalid_reducer_override()


class PyDispatchTableTests(AbstractDispatchTableTests, unittest.TestCase):

Expand All @@ -341,6 +605,11 @@ class PyDispatchTableTests(AbstractDispatchTableTests, unittest.TestCase):
def get_dispatch_table(self):
return pickle.dispatch_table.copy()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_dispatch_table_None_item(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_dispatch_table_None_item()


class PyChainDispatchTableTests(AbstractDispatchTableTests, unittest.TestCase):

Expand All @@ -349,6 +618,11 @@ class PyChainDispatchTableTests(AbstractDispatchTableTests, unittest.TestCase):
def get_dispatch_table(self):
return collections.ChainMap({}, pickle.dispatch_table)

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_dispatch_table_None_item(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_dispatch_table_None_item()


class PyPicklerHookTests(AbstractHookTests, unittest.TestCase):
class CustomPyPicklerClass(pickle._Pickler,
Expand Down Expand Up @@ -698,6 +972,11 @@ def test_multiprocessing_exceptions(self):
self.assertEqual(mapping('multiprocessing', name),
('multiprocessing.context', name))

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_exceptions(self): # TODO(RUSTPYTHON): Remove this test when it passes
return super().test_exceptions()


def load_tests(loader, tests, pattern):
tests.addTest(doctest.DocTestSuite(pickle))
Expand Down
Loading