From: Benjamin Peterson Date: Wed, 3 Feb 2010 01:13:41 +0000 (+0000) Subject: Merged revisions 77866-77867 via svnmerge from X-Git-Tag: v3.2a1~1758 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=16323988ba164480233cdc284e2aaf0018985856;p=python Merged revisions 77866-77867 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r77866 | benjamin.peterson | 2010-01-30 17:26:05 -0600 (Sat, 30 Jan 2010) | 1 line move test outside WITH_THREAD section ........ r77867 | benjamin.peterson | 2010-01-30 17:28:38 -0600 (Sat, 30 Jan 2010) | 1 line be robust against test being run over and over (such as -R) ........ --- diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c index 55475c742f..cefcbff98d 100644 --- a/Modules/_testcapimodule.c +++ b/Modules/_testcapimodule.c @@ -1362,15 +1362,23 @@ raise_exception(PyObject *self, PyObject *args) return NULL; } -#ifdef WITH_THREAD + +static int test_run_counter = 0; static PyObject * test_datetime_capi(PyObject *self, PyObject *args) { if (PyDateTimeAPI) { - PyErr_SetString(PyExc_AssertionError, - "PyDateTime_CAPI somehow initialized"); - return NULL; + if (test_run_counter) { + /* Probably regrtest.py -R */ + Py_RETURN_NONE; + } + else { + PyErr_SetString(PyExc_AssertionError, + "PyDateTime_CAPI somehow initialized"); + return NULL; + } } + test_run_counter++; PyDateTime_IMPORT; if (PyDateTimeAPI) Py_RETURN_NONE; @@ -1378,6 +1386,9 @@ test_datetime_capi(PyObject *self, PyObject *args) { return NULL; } + +#ifdef WITH_THREAD + /* 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