]> granicus.if.org Git - python/commitdiff
add a test of loading the datetime capi
authorBenjamin Peterson <benjamin@python.org>
Sun, 13 Dec 2009 21:27:53 +0000 (21:27 +0000)
committerBenjamin Peterson <benjamin@python.org>
Sun, 13 Dec 2009 21:27:53 +0000 (21:27 +0000)
Modules/_testcapimodule.c

index f2181ebce5ed6fede069acd0c85276f02c5f1aaf..c5c2c6be9758661d1e35b9ee34bc836ec9848474 100644 (file)
@@ -8,6 +8,7 @@
 #include "Python.h"
 #include <float.h>
 #include "structmember.h"
+#include "datetime.h"
 
 #ifdef WITH_THREAD
 #include "pythread.h"
@@ -806,6 +807,20 @@ raise_exception(PyObject *self, PyObject *args)
 
 #ifdef WITH_THREAD
 
+static PyObject *
+test_datetime_capi(PyObject *self, PyObject *args) {
+       if (PyDateTimeAPI) {
+               PyErr_SetString(PyExc_AssertionError,
+                               "PyDateTime_CAPI somehow initialized");
+               return NULL;
+       }
+       PyDateTime_IMPORT;
+        if (PyDateTimeAPI)
+               Py_RETURN_NONE;
+       else
+               return NULL;
+}
+
 /* test_thread_state spawns a thread of its own, and that thread releases
  * `thread_done` when it's finished.  The driver code has to know when the
  * thread finishes, because the thread uses a PyObject (the callable) that
@@ -1012,6 +1027,7 @@ code_newempty(PyObject *self, PyObject *args)
 static PyMethodDef TestMethods[] = {
        {"raise_exception",     raise_exception,                 METH_VARARGS},
        {"test_config",         (PyCFunction)test_config,        METH_NOARGS},
+       {"test_datetime_capi",  test_datetime_capi,              METH_NOARGS},
        {"test_list_api",       (PyCFunction)test_list_api,      METH_NOARGS},
        {"test_dict_iteration", (PyCFunction)test_dict_iteration,METH_NOARGS},
        {"test_lazy_hash_inheritance",  (PyCFunction)test_lazy_hash_inheritance,METH_NOARGS},