From: Benjamin Peterson Date: Thu, 16 Oct 2008 23:56:29 +0000 (+0000) Subject: add tests for PyInstanceMethod_Type X-Git-Tag: v3.0rc2~65 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9b6df6afe0b647ab336ab5cd8a03c44b55d6544b;p=python add tests for PyInstanceMethod_Type --- diff --git a/Lib/test/test_capi.py b/Lib/test/test_capi.py index 6c87645b06..efa7c345a4 100644 --- a/Lib/test/test_capi.py +++ b/Lib/test/test_capi.py @@ -2,10 +2,34 @@ # these are all functions _testcapi exports whose name begins with 'test_'. import sys +import unittest from test import support import _testcapi +def testfunction(self): + """some doc""" + return self + +class InstanceMethod: + id = _testcapi.instancemethod(id) + testfunction = _testcapi.instancemethod(testfunction) + +class CAPITest(unittest.TestCase): + + def test_instancemethod(self): + inst = InstanceMethod() + self.assertEqual(id(inst), inst.id()) + self.assert_(inst.testfunction() is inst) + self.assertEqual(inst.testfunction.__doc__, testfunction.__doc__) + self.assertEqual(InstanceMethod.testfunction.__doc__, testfunction.__doc__) + + InstanceMethod.testfunction.attribute = "test" + self.assertEqual(testfunction.attribute, "test") + self.assertRaises(AttributeError, setattr, inst.testfunction, "attribute", "test") + + def test_main(): + support.run_unittest(CAPITest) for name in dir(_testcapi): if name.startswith('test_'): @@ -47,5 +71,6 @@ def test_main(): t.start() t.join() + if __name__ == "__main__": test_main() diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c index 940605e476..b1cb6fe240 100644 --- a/Modules/_testcapimodule.c +++ b/Modules/_testcapimodule.c @@ -1231,6 +1231,8 @@ PyInit__testcapi(void) PyModule_AddObject(m, "PY_SSIZE_T_MAX", PyLong_FromSsize_t(PY_SSIZE_T_MAX)); PyModule_AddObject(m, "PY_SSIZE_T_MIN", PyLong_FromSsize_t(PY_SSIZE_T_MIN)); PyModule_AddObject(m, "SIZEOF_PYGC_HEAD", PyLong_FromSsize_t(sizeof(PyGC_Head))); + Py_INCREF(&PyInstanceMethod_Type); + PyModule_AddObject(m, "instancemethod", (PyObject *)&PyInstanceMethod_Type); TestError = PyErr_NewException("_testcapi.error", NULL, NULL); Py_INCREF(TestError);