Skip to content

Commit a020140

Browse files
committed
add test to check the fallback is not called if not required
1 parent 7389cba commit a020140

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

Lib/test/test_copy.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from operator import le, lt, ge, gt, eq, ne
88

99
import unittest
10+
import unittest.mock
1011
from test import support
1112

1213
order_comparisons = le, lt, ge, gt
@@ -51,6 +52,8 @@ def pickle_C(obj):
5152
self.assertRaises(TypeError, copy.copy, x)
5253
copyreg.pickle(C, pickle_C, C)
5354
y = copy.copy(x)
55+
self.assertIsInstance(y, C)
56+
self.assertEqual(y.foo, x.foo)
5457

5558
def test_copy_reduce_ex(self):
5659
class C(object):
@@ -313,6 +316,8 @@ def pickle_C(obj):
313316
self.assertRaises(TypeError, copy.deepcopy, x)
314317
copyreg.pickle(C, pickle_C, C)
315318
y = copy.deepcopy(x)
319+
self.assertIsInstance(y, C)
320+
self.assertEqual(y.foo, x.foo)
316321

317322
def test_deepcopy_reduce_ex(self):
318323
class C(object):
@@ -874,6 +879,10 @@ def m(self):
874879
self.assertIs(g.b.__self__, g)
875880
g.b()
876881

882+
def test_deepcopy_standard_types_no_fallback(self):
883+
with unittest.mock.patch('copy._deepcopy_fallback') as _deepcopy_fallback_mock:
884+
x=copy.deepcopy({'str': 's', 'int': 0, 'list': [1,(1,2)]})
885+
_deepcopy_fallback_mock.assert_not_called()
877886

878887
def global_foo(x, y): return x+y
879888

0 commit comments

Comments
 (0)