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
Addressed PR comments
  • Loading branch information
terryluan12 authored and youknowone committed Jan 15, 2026
commit d5035f4a39e3fbe44641abe7eab5815d2d087b80
1 change: 0 additions & 1 deletion .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,6 @@ env:
test.test_multiprocessing_forkserver.test_processes
test.test_multiprocessing_spawn.test_processes
ENV_POLLUTING_TESTS_WINDOWS: >-
test.test_tempfile
# Python version targeted by the CI.
PYTHON_VERSION: "3.13.1"
X86_64_PC_WINDOWS_MSVC_OPENSSL_LIB_DIR: C:\Program Files\OpenSSL\lib\VC\x64\MD
Expand Down
4 changes: 2 additions & 2 deletions Lib/test/test_ast/test_ast.py
Original file line number Diff line number Diff line change
Expand Up @@ -2183,7 +2183,7 @@ def test_yield(self):
self.expr(ast.Yield(ast.Name("x", ast.Store())), "must have Load")
self.expr(ast.YieldFrom(ast.Name("x", ast.Store())), "must have Load")

@unittest.skip('TODO: RUSTPYTHON; thread "main" panicked')
@unittest.skip("TODO: RUSTPYTHON; thread 'main' panicked")
def test_compare(self):
left = ast.Name("x", ast.Load())
comp = ast.Compare(left, [ast.In()], [])
Expand Down Expand Up @@ -2396,7 +2396,7 @@ def test_stdlib_validates(self):
ast.MatchMapping([], [], rest="_"),
]

@unittest.expectedFailure # TODO: RUSTPYTHON; thread 'main' panicked
@unittest.expectedFailure # TODO: RUSTPYTHON
def test_match_validation_pattern(self):
name_x = ast.Name("x", ast.Load())
for pattern in self._MATCH_PATTERNS:
Expand Down
6 changes: 2 additions & 4 deletions Lib/test/test_bdb.py
Original file line number Diff line number Diff line change
Expand Up @@ -616,8 +616,7 @@ def test_step_next_on_last_statement(self):
with TracerRun(self) as tracer:
tracer.runcall(tfunc_main)

# AssertionError: All paired tuples have not been processed, the last one was number 1 [('next',), ('quit',)]
@unittest.expectedFailure # TODO: RUSTPYTHON
@unittest.expectedFailure # TODO: RUSTPYTHON; AssertionError: All paired tuples have not been processed, the last one was number 1 [('next',), ('quit',)]
def test_stepinstr(self):
self.expect_set = [
('line', 2, 'tfunc_main'), ('stepinstr', ),
Expand Down Expand Up @@ -1249,8 +1248,7 @@ def main():
with TracerRun(self) as tracer:
tracer.runcall(tfunc_import)

# AssertionError: All paired tuples have not been processed, the last one was number 1 [('next',)]
@unittest.expectedFailure # TODO: RUSTPYTHON
@unittest.expectedFailure # TODO: RUSTPYTHON; AssertionError: All paired tuples have not been processed, the last one was number 1 [('next',)]
def test_next_to_botframe(self):
# gh-125422
# Check that next command won't go to the bottom frame.
Expand Down
2 changes: 1 addition & 1 deletion Lib/test/test_class.py
Original file line number Diff line number Diff line change
Expand Up @@ -554,7 +554,7 @@ class Custom:
self.assertFalse(hasattr(o, "__call__"))
self.assertFalse(hasattr(c, "__call__"))

@unittest.skip('TODO: RUSTPYTHON; segmentation fault')
@unittest.skip("TODO: RUSTPYTHON, segmentation fault")
def testSFBug532646(self):
# Test for SF bug 532646

Expand Down
8 changes: 4 additions & 4 deletions Lib/test/test_cmd_line_script.py
Original file line number Diff line number Diff line change
Expand Up @@ -209,19 +209,19 @@ def check_repl_stderr_flush(self, separate_stderr=False):
self.assertIn(b'File "<stdin>"', stderr.readline())
self.assertIn(b'ZeroDivisionError', stderr.readline())

@unittest.skip('TODO: RUSTPYTHON; hanging')
@unittest.skip("TODO: RUSTPYTHON, test hang in middle")
def test_repl_stdout_flush(self):
self.check_repl_stdout_flush()

@unittest.skip('TODO: RUSTPYTHON; hanging')
@unittest.skip("TODO: RUSTPYTHON, test hang in middle")
def test_repl_stdout_flush_separate_stderr(self):
self.check_repl_stdout_flush(True)

@unittest.skip('TODO: RUSTPYTHON; hanging')
@unittest.skip("TODO: RUSTPYTHON, test hang in middle")
def test_repl_stderr_flush(self):
self.check_repl_stderr_flush()

@unittest.skip('TODO: RUSTPYTHON; hanging')
@unittest.skip("TODO: RUSTPYTHON, test hang in middle")
def test_repl_stderr_flush_separate_stderr(self):
self.check_repl_stderr_flush(True)

Expand Down
1 change: 1 addition & 0 deletions Lib/test/test_configparser.py
Original file line number Diff line number Diff line change
Expand Up @@ -762,6 +762,7 @@ def test_read_returns_file_list(self):
parsed_files = cf.read([], encoding="utf-8")
self.assertEqual(parsed_files, [])

# XXX: RUSTPYTHON; This test might cause CI hang
def test_read_returns_file_list_with_bytestring_path(self):
if self.delimiters[0] != '=':
self.skipTest('incompatible format')
Expand Down
6 changes: 3 additions & 3 deletions Lib/test/test_descr.py
Original file line number Diff line number Diff line change
Expand Up @@ -1834,7 +1834,7 @@ def __init__(self, foo):
object.__init__(A(3))
self.assertRaises(TypeError, object.__init__, A(3), 5)

# TODO: RUSTPYTHON; The `expectedFailure` here is from CPython, so this test actually fails
# TODO: RUSTPYTHON; The `expectedFailure` here is from CPython, so this test must fail
# @unittest.expectedFailure
def test_restored_object_new(self):
class A(object):
Expand Down Expand Up @@ -5193,7 +5193,7 @@ def __pow__(self, *args):


class MiscTests(unittest.TestCase):
@unittest.skip('TODO: RUSTPYTHON; rustpython panicked at "dict has non-string keys: [PyObject PyBaseObject]"')
@unittest.skip("TODO: RUSTPYTHON; rustpython panicked at 'dict has non-string keys: [PyObject PyBaseObject]'")
def test_type_lookup_mro_reference(self):
# Issue #14199: _PyType_Lookup() has to keep a strong reference to
# the type MRO because it may be modified during the lookup, if
Expand Down Expand Up @@ -5640,7 +5640,7 @@ def __repr__(self):
objcopy2 = deepcopy(objcopy)
self._assert_is_copy(obj, objcopy2)

@unittest.skip('TODO: RUSTPYTHON; hanging')
@unittest.skip('TODO: RUSTPYTHON')
def test_issue24097(self):
# Slot name is freed inside __getattr__ and is later used.
class S(str): # Not interned
Expand Down
2 changes: 1 addition & 1 deletion Lib/test/test_docxmlrpc.py
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,7 @@ def test_annotations(self):
b'method_annotation</strong></a>(x: bytes)</dt></dl>'),
response.read())

@unittest.expectedFailure # TODO: RUSTPYTHON; hTypeError: HTMLDoc.heading() missing 2 required positional arguments: "fgcol" and "bgcol"
@unittest.expectedFailure # TODO: RUSTPYTHON; TypeError: HTMLDoc.heading() missing 2 required positional arguments: "fgcol" and "bgcol"
def test_server_title_escape(self):
# bpo-38243: Ensure that the server title and documentation
# are escaped for HTML.
Expand Down
2 changes: 1 addition & 1 deletion Lib/test/test_ftplib.py
Original file line number Diff line number Diff line change
Expand Up @@ -921,6 +921,7 @@ def setUp(self, encoding=DEFAULT_ENCODING):

@skipUnless(ssl, "SSL not available")
@requires_subprocess()
@unittest.skip("TODO: RUSTPYTHON; SSL + asyncore has problem")
class TestTLS_FTPClass(TestCase):
"""Specific TLS_FTP class tests."""

Expand Down Expand Up @@ -1006,7 +1007,6 @@ def test_context(self):
self.assertIs(sock.context, ctx)
self.assertIsInstance(sock, ssl.SSLSocket)

@unittest.skip('TODO: RUSTPYTHON; flaky')
def test_ccc(self):
self.assertRaises(ValueError, self.client.ccc)
self.client.login(secure=True)
Expand Down
2 changes: 1 addition & 1 deletion Lib/test/test_importlib/test_locks.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ def f():
self.assertEqual(len(results), NTHREADS)
return results

@unittest.skip("TODO: RUSTPYTHON, flaky test")
@unittest.skip("TODO: RUSTPYTHON, sometimes hangs")
def test_deadlock(self):
results = self.run_deadlock_avoidance_test(True)
# At least one of the threads detected a potential deadlock on its
Expand Down
2 changes: 1 addition & 1 deletion Lib/test/test_json/test_recursion.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ def default(self, o):
self.fail("didn't raise ValueError on default recursion")

# TODO: RUSTPYTHON
@unittest.skip('TODO: RUSTPYTHON; crashes')
@unittest.skip("TODO: RUSTPYTHON; crashes")
def test_highly_nested_objects_decoding(self):
# test that loading highly-nested objects doesn't segfault when C
# accelerations are used. See #12017
Expand Down
8 changes: 4 additions & 4 deletions Lib/test/test_list.py
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ def test_empty_slice(self):
x[:] = x
self.assertEqual(x, [])

@unittest.skip('TODO: RUSTPYTHON; crash')
@unittest.skip("TODO: RUSTPYTHON; crash")
def test_list_resize_overflow(self):
# gh-97616: test new_allocated * sizeof(PyObject*) overflow
# check in list_resize()
Expand All @@ -118,7 +118,7 @@ def test_list_resize_overflow(self):
with self.assertRaises((MemoryError, OverflowError)):
lst *= size

@unittest.skip('TODO: RUSTPYTHON; hangs')
@unittest.skip("TODO: RUSTPYTHON; hangs")
def test_repr_mutate(self):
class Obj:
@staticmethod
Expand Down Expand Up @@ -227,7 +227,7 @@ class L(list): pass
with self.assertRaises(TypeError):
(3,) + L([1,2])

@unittest.skip('TODO: RUSTPYTHON; hang')
@unittest.skip("TODO: RUSTPYTHON; hang")
def test_equal_operator_modifying_operand(self):
# test fix for seg fault reported in bpo-38588 part 2.
class X:
Expand All @@ -253,7 +253,7 @@ def __eq__(self, other):
list4 = [1]
self.assertFalse(list3 == list4)

@unittest.skip('TODO: RUSTPYTHON; hang')
@unittest.skip("TODO: RUSTPYTHON; hang")
def test_lt_operator_modifying_operand(self):
# See gh-120298
class evil:
Expand Down
2 changes: 1 addition & 1 deletion Lib/test/test_marshal.py
Original file line number Diff line number Diff line change
Expand Up @@ -498,7 +498,7 @@ def testModule(self):
self.helper(code)
self.helper3(code)

@unittest.skip('TODO: RUSTPYTHON')
@unittest.skip("TODO: RUSTPYTHON")
def testRecursion(self):
obj = 1.2345
d = {"hello": obj, "goodbye": obj, obj: "hello"}
Expand Down
2 changes: 1 addition & 1 deletion Lib/test/test_poll.py
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ def test_poll_c_limits(self):
self.assertRaises(OverflowError, pollster.poll, INT_MAX + 1)
self.assertRaises(OverflowError, pollster.poll, UINT_MAX + 1)

@unittest.skip('TODO: RUSTPYTHON; fd reallocation')
@unittest.skip("TODO: RUSTPYTHON fd reallocation")
@threading_helper.reap_threads
def test_threaded_poll(self):
r, w = os.pipe()
Expand Down
16 changes: 2 additions & 14 deletions Lib/test/test_set.py
Original file line number Diff line number Diff line change
Expand Up @@ -1809,29 +1809,24 @@ def check_set_op_does_not_crash(self, function):
self.assertIn("changed size during iteration", str(e))


@unittest.skip("TODO: RUSTPYTHON; segfault")
class TestBinaryOpsMutating(TestOperationsMutating):

@unittest.skip('TODO: RUSTPYTHON; segfault')
def test_eq_with_mutation(self):
self.check_set_op_does_not_crash(lambda a, b: a == b)

@unittest.skip('TODO: RUSTPYTHON; segfault')
def test_ne_with_mutation(self):
self.check_set_op_does_not_crash(lambda a, b: a != b)

@unittest.skip('TODO: RUSTPYTHON; segfault')
def test_lt_with_mutation(self):
self.check_set_op_does_not_crash(lambda a, b: a < b)

@unittest.skip('TODO: RUSTPYTHON; segfault')
def test_le_with_mutation(self):
self.check_set_op_does_not_crash(lambda a, b: a <= b)

@unittest.skip('TODO: RUSTPYTHON; segfault')
def test_gt_with_mutation(self):
self.check_set_op_does_not_crash(lambda a, b: a > b)

@unittest.skip('TODO: RUSTPYTHON; segfault')
def test_ge_with_mutation(self):
self.check_set_op_does_not_crash(lambda a, b: a >= b)

Expand All @@ -1852,19 +1847,16 @@ def f(a, b):
a &= b
self.check_set_op_does_not_crash(f)

@unittest.skip('TODO: RUSTPYTHON; segfault')
def test_ior_with_mutation(self):
def f(a, b):
a |= b
self.check_set_op_does_not_crash(f)

@unittest.skip('TODO: RUSTPYTHON; segfault')
def test_isub_with_mutation(self):
def f(a, b):
a -= b
self.check_set_op_does_not_crash(f)

@unittest.skip('TODO: RUSTPYTHON; segfault')
def test_ixor_with_mutation(self):
def f(a, b):
a ^= b
Expand Down Expand Up @@ -1906,12 +1898,12 @@ class TestBinaryOpsMutating_Subclass_Set(TestBinaryOpsMutating, unittest.TestCas
constructor2 = set


@unittest.skip("TODO: RUSTPYTHON; segfault")
class TestMethodsMutating(TestOperationsMutating):

def test_issubset_with_mutation(self):
self.check_set_op_does_not_crash(set.issubset)

@unittest.skip('TODO: RUSTPYTHON; segfault')
def test_issuperset_with_mutation(self):
self.check_set_op_does_not_crash(set.issuperset)

Expand All @@ -1927,22 +1919,18 @@ def test_difference_with_mutation(self):
def test_symmetric_difference_with_mutation(self):
self.check_set_op_does_not_crash(set.symmetric_difference)

@unittest.skip('TODO: RUSTPYTHON; segfault')
def test_isdisjoint_with_mutation(self):
self.check_set_op_does_not_crash(set.isdisjoint)

@unittest.skip('TODO: RUSTPYTHON; segfault')
def test_difference_update_with_mutation(self):
self.check_set_op_does_not_crash(set.difference_update)

def test_intersection_update_with_mutation(self):
self.check_set_op_does_not_crash(set.intersection_update)

@unittest.skip('TODO: RUSTPYTHON; segfault')
def test_symmetric_difference_update_with_mutation(self):
self.check_set_op_does_not_crash(set.symmetric_difference_update)

@unittest.skip('TODO: RUSTPYTHON; segfault')
def test_update_with_mutation(self):
self.check_set_op_does_not_crash(set.update)

Expand Down
27 changes: 18 additions & 9 deletions Lib/test/test_socket.py
Original file line number Diff line number Diff line change
Expand Up @@ -905,7 +905,8 @@ def requireSocket(*args):
class GeneralModuleTests(unittest.TestCase):

@unittest.skipUnless(_socket is not None, 'need _socket module')
@unittest.expectedFailure # TODO: RUSTPYTHON; gc.is_tracked not implemented
# TODO: RUSTPYTHON; gc.is_tracked not implemented
@unittest.expectedFailure
def test_socket_type(self):
self.assertTrue(gc.is_tracked(_socket.socket))
with self.assertRaisesRegex(TypeError, "immutable"):
Expand Down Expand Up @@ -968,7 +969,8 @@ def testSocketError(self):
with self.assertRaises(OSError, msg=msg % 'socket.gaierror'):
raise socket.gaierror

@unittest.expectedFailure # TODO: RUSTPYTHON; error message format differs
# TODO: RUSTPYTHON; error message format differs
@unittest.expectedFailure
def testSendtoErrors(self):
# Testing that sendto doesn't mask failures. See #10169.
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
Expand Down Expand Up @@ -2392,7 +2394,8 @@ def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.interface = "vcan0"

@unittest.expectedFailure # TODO: RUSTPYTHON - J1939 constants not fully implemented
# TODO: RUSTPYTHON - J1939 constants not fully implemented
@unittest.expectedFailure
@unittest.skipUnless(hasattr(socket, "CAN_J1939"),
'socket.CAN_J1939 required for this test.')
def testJ1939Constants(self):
Expand Down Expand Up @@ -2434,7 +2437,8 @@ def testCreateJ1939Socket(self):
with socket.socket(socket.PF_CAN, socket.SOCK_DGRAM, socket.CAN_J1939) as s:
pass

@unittest.expectedFailure # TODO: RUSTPYTHON - AF_CAN J1939 address format not fully implemented
# TODO: RUSTPYTHON - AF_CAN J1939 address format not fully implemented
@unittest.expectedFailure
def testBind(self):
try:
with socket.socket(socket.PF_CAN, socket.SOCK_DGRAM, socket.CAN_J1939) as s:
Expand Down Expand Up @@ -6485,7 +6489,8 @@ def remoteProcessServer(cls, q):
s2.close()
s.close()

@unittest.expectedFailure # TODO: RUSTPYTHON; multiprocessing.SemLock not implemented
# TODO: RUSTPYTHON; multiprocessing.SemLock not implemented
@unittest.expectedFailure
def testShare(self):
# Transfer the listening server socket to another process
# and service it from there.
Expand Down Expand Up @@ -6887,7 +6892,8 @@ def test_sha256(self):
op.send(b'')
self.assertEqual(op.recv(512), expected)

@unittest.expectedFailure # TODO: RUSTPYTHON - AF_ALG not fully implemented
# TODO: RUSTPYTHON - AF_ALG not fully implemented
@unittest.expectedFailure
def test_hmac_sha1(self):
# gh-109396: In FIPS mode, Linux 6.5 requires a key
# of at least 112 bits. Use a key of 152 bits.
Expand All @@ -6903,7 +6909,8 @@ def test_hmac_sha1(self):

# Although it should work with 3.19 and newer the test blocks on
# Ubuntu 15.10 with Kernel 4.2.0-19.
@unittest.expectedFailure # TODO: RUSTPYTHON - AF_ALG not fully implemented
# TODO: RUSTPYTHON - AF_ALG not fully implemented
@unittest.expectedFailure
@support.requires_linux_version(4, 3)
def test_aes_cbc(self):
key = bytes.fromhex('06a9214036b8a15b512e03d534120006')
Expand Down Expand Up @@ -6945,7 +6952,8 @@ def test_aes_cbc(self):
self.assertEqual(len(dec), msglen * multiplier)
self.assertEqual(dec, msg * multiplier)

@unittest.expectedFailure # TODO: RUSTPYTHON - AF_ALG not fully implemented
# TODO: RUSTPYTHON - AF_ALG not fully implemented
@unittest.expectedFailure
@support.requires_linux_version(4, 9) # see gh-73510
def test_aead_aes_gcm(self):
kernel_version = support._get_kernel_version("Linux")
Expand Down Expand Up @@ -7015,7 +7023,8 @@ def test_aead_aes_gcm(self):
res = op.recv(len(msg) - taglen)
self.assertEqual(plain, res[assoclen:])

@unittest.expectedFailure # TODO: RUSTPYTHON - AF_ALG not fully implemented
# TODO: RUSTPYTHON - AF_ALG not fully implemented
@unittest.expectedFailure
@support.requires_linux_version(4, 3) # see test_aes_cbc
def test_drbg_pr_sha256(self):
# deterministic random bit generator, prediction resistance, sha256
Expand Down
Loading