[pypy-commit] pypy default: Test an obscure difference between C-defined and Python-defined functions
rlamy
pypy.commits at gmail.com
Mon Nov 13 13:15:03 EST 2017
Author: Ronan Lamy <ronan.lamy at gmail.com>
Branch:
Changeset: r93004:3b8c612bb506
Date: 2017-11-13 18:14 +0000
http://bitbucket.org/pypy/pypy/changeset/3b8c612bb506/
Log: Test an obscure difference between C-defined and Python-defined
functions
diff --git a/pypy/module/cpyext/test/test_methodobject.py b/pypy/module/cpyext/test/test_methodobject.py
--- a/pypy/module/cpyext/test/test_methodobject.py
+++ b/pypy/module/cpyext/test/test_methodobject.py
@@ -93,6 +93,22 @@
assert mod.isSameFunction(mod.getarg_O)
raises(SystemError, mod.isSameFunction, 1)
+ def test_function_as_method(self):
+ # Unlike user functions, builtins don't become methods
+ mod = self.import_extension('foo', [
+ ('f', 'METH_NOARGS',
+ '''
+ return PyLong_FromLong(42);
+ '''),
+ ])
+ class A(object): pass
+ A.f = mod.f
+ A.g = lambda: 42
+ assert A.f() == 42
+ raises(TypeError, A.g)
+ assert A().f() == 42
+ raises(TypeError, A().g)
+
def test_check(self):
mod = self.import_extension('foo', [
('check', 'METH_O',
@@ -116,4 +132,3 @@
assert mod.check(A) == 0
assert mod.check(A.meth) == 0
assert mod.check(A.stat) == 0
-
More information about the pypy-commit
mailing list