]> granicus.if.org Git - python/commitdiff
Issue #23568: Add rdivmod support to MagicMock() objects.
authorBerker Peksag <berker.peksag@gmail.com>
Sat, 14 Mar 2015 23:51:56 +0000 (01:51 +0200)
committerBerker Peksag <berker.peksag@gmail.com>
Sat, 14 Mar 2015 23:51:56 +0000 (01:51 +0200)
Patch by Håkan Lövdahl.

Lib/unittest/mock.py
Lib/unittest/test/testmock/testmagicmethods.py
Misc/NEWS

index 5555774467d4cad9b90904ea703dcbf81295c1f8..dcb2d8f302d7a32dd3f35564df60a36ba9a087ec 100644 (file)
@@ -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 "
index cc0e707ece656282ba8373eae3f4fa6bf8842e85..73b717d704f66a66848dd4ba2c908bce8be3e92c 100644 (file)
@@ -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()
index 170cd4e94cb66a971c7909caa139d4def82e3064..90edc969562bb57052e3f10c1dbeeed20daaad7d 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -18,6 +18,9 @@ Core and Builtins
 Library
 -------
 
+- Issue #23568: Add rdivmod support to MagicMock() objects.
+  Patch by Håkan Lövdahl.
+
 - Issue #23138: Fixed parsing cookies with absent keys or values in cookiejar.
   Patch by Demian Brecht.