From 6e921912d7551192655950c8652b8e668edb37f6 Mon Sep 17 00:00:00 2001 From: JaeyoungAhn Date: Sat, 25 Mar 2023 16:32:13 +0900 Subject: [PATCH 1/2] update test_deque from cpython v3.11.2 --- Lib/test/test_deque.py | 92 +++++++++++++++--------------------------- 1 file changed, 32 insertions(+), 60 deletions(-) diff --git a/Lib/test/test_deque.py b/Lib/test/test_deque.py index 0cf3a36634..ec88d4da8b 100644 --- a/Lib/test/test_deque.py +++ b/Lib/test/test_deque.py @@ -1,4 +1,5 @@ from collections import deque +import doctest import unittest from test import support, seq_tests import gc @@ -743,8 +744,9 @@ class C(object): @support.cpython_only def test_sizeof(self): + MAXFREEBLOCKS = 16 BLOCKLEN = 64 - basesize = support.calcvobjsize('2P4nP') + basesize = support.calcvobjsize('2P5n%dPP' % MAXFREEBLOCKS) blocksize = struct.calcsize('P%dPP' % BLOCKLEN) self.assertEqual(object.__sizeof__(deque()), basesize) check = self.check_sizeof @@ -781,6 +783,9 @@ def test_runtime_error_on_empty_deque(self): class Deque(deque): pass +class DequeWithSlots(deque): + __slots__ = ('x', 'y', '__dict__') + class DequeWithBadIter(deque): def __iter__(self): raise TypeError @@ -810,40 +815,28 @@ def test_basics(self): self.assertEqual(len(d), 0) def test_copy_pickle(self): - - d = Deque('abc') - - e = d.__copy__() - self.assertEqual(type(d), type(e)) - self.assertEqual(list(d), list(e)) - - e = Deque(d) - self.assertEqual(type(d), type(e)) - self.assertEqual(list(d), list(e)) - - for proto in range(pickle.HIGHEST_PROTOCOL + 1): - s = pickle.dumps(d, proto) - e = pickle.loads(s) - self.assertNotEqual(id(d), id(e)) - self.assertEqual(type(d), type(e)) - self.assertEqual(list(d), list(e)) - - d = Deque('abcde', maxlen=4) - - e = d.__copy__() - self.assertEqual(type(d), type(e)) - self.assertEqual(list(d), list(e)) - - e = Deque(d) - self.assertEqual(type(d), type(e)) - self.assertEqual(list(d), list(e)) - - for proto in range(pickle.HIGHEST_PROTOCOL + 1): - s = pickle.dumps(d, proto) - e = pickle.loads(s) - self.assertNotEqual(id(d), id(e)) - self.assertEqual(type(d), type(e)) - self.assertEqual(list(d), list(e)) + for cls in Deque, DequeWithSlots: + for d in cls('abc'), cls('abcde', maxlen=4): + d.x = ['x'] + d.z = ['z'] + + e = d.__copy__() + self.assertEqual(type(d), type(e)) + self.assertEqual(list(d), list(e)) + + e = cls(d) + self.assertEqual(type(d), type(e)) + self.assertEqual(list(d), list(e)) + + for proto in range(pickle.HIGHEST_PROTOCOL + 1): + s = pickle.dumps(d, proto) + e = pickle.loads(s) + self.assertNotEqual(id(d), id(e)) + self.assertEqual(type(d), type(e)) + self.assertEqual(list(d), list(e)) + self.assertEqual(e.x, d.x) + self.assertEqual(e.z, d.z) + self.assertFalse(hasattr(e, 'y')) # TODO: RUSTPYTHON @unittest.expectedFailure @@ -1036,31 +1029,10 @@ def test_free_after_iterating(self): __test__ = {'libreftest' : libreftest} -def test_main(verbose=None): - import sys - test_classes = ( - TestBasic, - TestVariousIteratorArgs, - TestSubclass, - TestSubclassWithKwargs, - TestSequence, - ) - - support.run_unittest(*test_classes) - - # verify reference counting - if verbose and hasattr(sys, "gettotalrefcount"): - import gc - counts = [None] * 5 - for i in range(len(counts)): - support.run_unittest(*test_classes) - gc.collect() - counts[i] = sys.gettotalrefcount() - print(counts) +def load_tests(loader, tests, pattern): + tests.addTest(doctest.DocTestSuite()) + return tests - # doctests - from test import test_deque - support.run_doctest(test_deque, verbose) if __name__ == "__main__": - test_main(verbose=True) + unittest.main() From 395e7b390a094ce3b00c419f5a4d62473c319d00 Mon Sep 17 00:00:00 2001 From: JaeyoungAhn Date: Sat, 25 Mar 2023 17:37:56 +0900 Subject: [PATCH 2/2] updated test_deque.py from CPython v3.11.2 --- Lib/test/test_deque.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Lib/test/test_deque.py b/Lib/test/test_deque.py index ec88d4da8b..2b0144eb06 100644 --- a/Lib/test/test_deque.py +++ b/Lib/test/test_deque.py @@ -814,6 +814,8 @@ def test_basics(self): d.clear() self.assertEqual(len(d), 0) + # TODO: RUSTPYTHON + @unittest.expectedFailure def test_copy_pickle(self): for cls in Deque, DequeWithSlots: for d in cls('abc'), cls('abcde', maxlen=4):