[Python-3000-checkins] r58910 - python/branches/py3k/Lib/test/inspect_fodder2.py python/branches/py3k/Lib/test/test_inspect.py

christian.heimes python-3000-checkins at python.org
Thu Nov 8 14:48:53 CET 2007


Author: christian.heimes
Date: Thu Nov  8 14:48:53 2007
New Revision: 58910

Modified:
   python/branches/py3k/Lib/test/inspect_fodder2.py
   python/branches/py3k/Lib/test/test_inspect.py
Log:
Applied patch #1127 from Quentin Gallet Gilles: No tests for inspect.getfullargspec()

Modified: python/branches/py3k/Lib/test/inspect_fodder2.py
==============================================================================
--- python/branches/py3k/Lib/test/inspect_fodder2.py	(original)
+++ python/branches/py3k/Lib/test/inspect_fodder2.py	Thu Nov  8 14:48:53 2007
@@ -97,3 +97,11 @@
             return 42
     return X
 method_in_dynamic_class = f().g.im_func
+
+#line 101
+def keyworded(*arg1, arg2=1):
+    pass
+
+#line 105
+def annotated(arg1: list):
+    pass

Modified: python/branches/py3k/Lib/test/test_inspect.py
==============================================================================
--- python/branches/py3k/Lib/test/test_inspect.py	(original)
+++ python/branches/py3k/Lib/test/test_inspect.py	Thu Nov  8 14:48:53 2007
@@ -314,9 +314,8 @@
         got = inspect.getmro(D)
         self.assertEqual(expected, got)
 
-    def assertArgSpecEquals(self, routine, args_e, varargs_e = None,
-                            varkw_e = None, defaults_e = None,
-                            formatted = None):
+    def assertArgSpecEquals(self, routine, args_e, varargs_e=None,
+                            varkw_e=None, defaults_e=None, formatted=None):
         args, varargs, varkw, defaults = inspect.getargspec(routine)
         self.assertEqual(args, args_e)
         self.assertEqual(varargs, varargs_e)
@@ -326,14 +325,48 @@
             self.assertEqual(inspect.formatargspec(args, varargs, varkw, defaults),
                              formatted)
 
+    def assertFullArgSpecEquals(self, routine, args_e, varargs_e=None,
+                                    varkw_e=None, defaults_e=None,
+                                    kwonlyargs_e=[], kwonlydefaults_e=None,
+                                    ann_e={}, formatted=None):
+        args, varargs, varkw, defaults, kwonlyargs, kwonlydefaults, ann = \
+            inspect.getfullargspec(routine)
+        self.assertEqual(args, args_e)
+        self.assertEqual(varargs, varargs_e)
+        self.assertEqual(varkw, varkw_e)
+        self.assertEqual(defaults, defaults_e)
+        self.assertEqual(kwonlyargs, kwonlyargs_e)
+        self.assertEqual(kwonlydefaults, kwonlydefaults_e)
+        self.assertEqual(ann, ann_e)
+        if formatted is not None:
+            self.assertEqual(inspect.formatargspec(args, varargs, varkw, defaults,
+                                                    kwonlyargs, kwonlydefaults, ann),
+                             formatted)
+
     def test_getargspec(self):
-        self.assertArgSpecEquals(mod.eggs, ['x', 'y'], formatted = '(x, y)')
+        self.assertArgSpecEquals(mod.eggs, ['x', 'y'], formatted='(x, y)')
 
         self.assertArgSpecEquals(mod.spam,
                                  ['a', 'b', 'c', 'd', 'e', 'f'],
                                  'g', 'h', (3, 4, 5),
                                  '(a, b, c, d=3, e=4, f=5, *g, **h)')
 
+        self.assertRaises(ValueError, self.assertArgSpecEquals,
+                          mod2.keyworded, [])
+
+        self.assertRaises(ValueError, self.assertArgSpecEquals,
+                          mod2.annotated, [])
+
+    def test_getfullargspec(self):
+        self.assertFullArgSpecEquals(mod2.keyworded, [], varargs_e='arg1',
+                                     kwonlyargs_e=['arg2'],
+                                     kwonlydefaults_e={'arg2':1},
+                                     formatted='(*arg1, arg2=1)')
+
+        self.assertFullArgSpecEquals(mod2.annotated, ['arg1'],
+                                     ann_e={'arg1':types.ListType},
+                                     formatted='(arg1: list)')
+
     def test_getargspec_method(self):
         class A(object):
             def m(self):


More information about the Python-3000-checkins mailing list