]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-32153: Add unit test for create_autospec with partial function returned in getatt...
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Mon, 3 Dec 2018 08:26:06 +0000 (00:26 -0800)
committerChris Withers <chris@withers.org>
Mon, 3 Dec 2018 08:26:06 +0000 (08:26 +0000)
* Add create_autospec with partial function returned in getattr

* Use self.assertFalse instead of assert

* Use different names and remove object
(cherry picked from commit c667b094ae37799a7e42ba5cd2ad501cc7920888)

Co-authored-by: Xtreak <tirkarthi@users.noreply.github.com>
Lib/unittest/test/testmock/testhelpers.py

index 7919482ae99c7f07e2726edd9418620e99c2427c..9edebf5516600971e8aca02cac336531ed706e82 100644 (file)
@@ -8,6 +8,7 @@ from unittest.mock import (
 )
 
 from datetime import datetime
+from functools import partial
 
 class SomeClass(object):
     def one(self, a, b):
@@ -871,6 +872,19 @@ class SpecSignatureTest(unittest.TestCase):
         mocked.assert_called_once_with(4, 5, 6)
 
 
+    def test_autospec_getattr_partial_function(self):
+        # bpo-32153 : getattr returning partial functions without
+        # __name__ should not create AttributeError in create_autospec
+        class Foo:
+
+            def __getattr__(self, attribute):
+                return partial(lambda name: name, attribute)
+
+        proxy = Foo()
+        autospec = create_autospec(proxy)
+        self.assertFalse(hasattr(autospec, '__name__'))
+
+
 class TestCallList(unittest.TestCase):
 
     def test_args_list_contains_call_list(self):