|
7 | 7 | from operator import le, lt, ge, gt, eq, ne
|
8 | 8 |
|
9 | 9 | import unittest
|
| 10 | +import unittest.mock |
10 | 11 | from test import support
|
11 | 12 |
|
12 | 13 | order_comparisons = le, lt, ge, gt
|
@@ -51,6 +52,8 @@ def pickle_C(obj):
|
51 | 52 | self.assertRaises(TypeError, copy.copy, x)
|
52 | 53 | copyreg.pickle(C, pickle_C, C)
|
53 | 54 | y = copy.copy(x)
|
| 55 | + self.assertIsInstance(y, C) |
| 56 | + self.assertEqual(y.foo, x.foo) |
54 | 57 |
|
55 | 58 | def test_copy_reduce_ex(self):
|
56 | 59 | class C(object):
|
@@ -313,6 +316,8 @@ def pickle_C(obj):
|
313 | 316 | self.assertRaises(TypeError, copy.deepcopy, x)
|
314 | 317 | copyreg.pickle(C, pickle_C, C)
|
315 | 318 | y = copy.deepcopy(x)
|
| 319 | + self.assertIsInstance(y, C) |
| 320 | + self.assertEqual(y.foo, x.foo) |
316 | 321 |
|
317 | 322 | def test_deepcopy_reduce_ex(self):
|
318 | 323 | class C(object):
|
@@ -874,6 +879,10 @@ def m(self):
|
874 | 879 | self.assertIs(g.b.__self__, g)
|
875 | 880 | g.b()
|
876 | 881 |
|
| 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() |
877 | 886 |
|
878 | 887 | def global_foo(x, y): return x+y
|
879 | 888 |
|
|
0 commit comments