summaryrefslogtreecommitdiffstats
path: root/Lib/unittest
diff options
context:
space:
mode:
authorBerker Peksag <berker.peksag@gmail.com>2015-03-14 23:51:56 (GMT)
committerBerker Peksag <berker.peksag@gmail.com>2015-03-14 23:51:56 (GMT)
commita785dece572e7f2bcc8a10aab3a661208e94583e (patch)
tree4647ae8b61c4310466473d46514e858ab7f7f2c2 /Lib/unittest
parentb19542d062603031ab3f4c2f5f485f449ebc46ca (diff)
downloadcpython-a785dece572e7f2bcc8a10aab3a661208e94583e.zip
cpython-a785dece572e7f2bcc8a10aab3a661208e94583e.tar.gz
cpython-a785dece572e7f2bcc8a10aab3a661208e94583e.tar.bz2
Issue #23568: Add rdivmod support to MagicMock() objects.
Patch by Håkan Lövdahl.
Diffstat (limited to 'Lib/unittest')
-rw-r--r--Lib/unittest/mock.py4
-rw-r--r--Lib/unittest/test/testmock/testmagicmethods.py15
2 files changed, 18 insertions, 1 deletions
diff --git a/Lib/unittest/mock.py b/Lib/unittest/mock.py
index 5555774..dcb2d8f 100644
--- a/Lib/unittest/mock.py
+++ b/Lib/unittest/mock.py
@@ -1644,7 +1644,9 @@ magic_methods = (
"len contains iter "
"hash str sizeof "
"enter exit "
- "divmod neg pos abs invert "
+ # we added divmod and rdivmod here instead of numerics
+ # because there is no idivmod
+ "divmod rdivmod neg pos abs invert "
"complex int float index "
"trunc floor ceil "
"bool next "
diff --git a/Lib/unittest/test/testmock/testmagicmethods.py b/Lib/unittest/test/testmock/testmagicmethods.py
index cc0e707..73b717d 100644
--- a/Lib/unittest/test/testmock/testmagicmethods.py
+++ b/Lib/unittest/test/testmock/testmagicmethods.py
@@ -424,5 +424,20 @@ class TestMockingMagicMethods(unittest.TestCase):
self.assertEqual(list(m), [])
+ def test_divmod_and_rdivmod(self):
+ m = MagicMock()
+ self.assertIsInstance(divmod(5, m), MagicMock)
+ m.__divmod__.return_value = (2, 1)
+ self.assertEqual(divmod(m, 2), (2, 1))
+ m = MagicMock()
+ foo = divmod(2, m)
+ self.assertIsInstance(foo, MagicMock)
+ foo_direct = m.__divmod__(2)
+ self.assertIsInstance(foo_direct, MagicMock)
+ bar = divmod(m, 2)
+ self.assertIsInstance(bar, MagicMock)
+ bar_direct = m.__rdivmod__(2)
+ self.assertIsInstance(bar_direct, MagicMock)
+
if __name__ == '__main__':
unittest.main()