[pypy-svn] r8862 - in pypy/dist/pypy/module: . test

arigo at codespeak.net arigo at codespeak.net
Fri Feb 4 13:43:52 CET 2005


Author: arigo
Date: Fri Feb  4 12:12:40 2005
New Revision: 8862

Modified:
   pypy/dist/pypy/module/__builtin__module.py
   pypy/dist/pypy/module/test/test_builtin.py
Log:
Patch from David Fraser.


Modified: pypy/dist/pypy/module/__builtin__module.py
==============================================================================
--- pypy/dist/pypy/module/__builtin__module.py	(original)
+++ pypy/dist/pypy/module/__builtin__module.py	Fri Feb  4 12:12:40 2005
@@ -577,8 +577,8 @@
     def __get__(self, obj, klass=None):
         if klass is None:
             klass = type(obj)
-        def newfunc(*args):
-            return self.f(klass, *args)
+        def newfunc(*args, **kwargs):
+            return self.f(klass, *args, **kwargs)
         return newfunc
 
 if not hasattr(dict, 'fromkeys'):

Modified: pypy/dist/pypy/module/test/test_builtin.py
==============================================================================
--- pypy/dist/pypy/module/test/test_builtin.py	(original)
+++ pypy/dist/pypy/module/test/test_builtin.py	Fri Feb  4 12:12:40 2005
@@ -323,6 +323,30 @@
         raises(TypeError, issubclass, int, 6)
         raises(TypeError, issubclass, int, (float, 6))
 
+    def test_staticmethod(self):
+        class X:
+            def f(*args, **kwds): return args, kwds
+            f = staticmethod(f)
+        assert X.f() == ((), {})
+        assert X.f(42, x=43) == ((42,), {'x': 43})
+        assert X().f() == ((), {})
+        assert X().f(42, x=43) == ((42,), {'x': 43})
+
+    def test_classmethod(self):
+        class X:
+            def f(*args, **kwds): return args, kwds
+            f = classmethod(f)
+        class Y(X):
+            pass
+        assert X.f() == ((X,), {})
+        assert X.f(42, x=43) == ((X, 42), {'x': 43})
+        assert X().f() == ((X,), {})
+        assert X().f(42, x=43) == ((X, 42), {'x': 43})
+        assert Y.f() == ((Y,), {})
+        assert Y.f(42, x=43) == ((Y, 42), {'x': 43})
+        assert Y().f() == ((Y,), {})
+        assert Y().f(42, x=43) == ((Y, 42), {'x': 43})
+
 
 class TestInternal:
 



More information about the Pypy-commit mailing list