]> granicus.if.org Git - python/commitdiff
Merged revisions 77866-77867 via svnmerge from
authorBenjamin Peterson <benjamin@python.org>
Wed, 3 Feb 2010 01:13:41 +0000 (01:13 +0000)
committerBenjamin Peterson <benjamin@python.org>
Wed, 3 Feb 2010 01:13:41 +0000 (01:13 +0000)
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)
........

Modules/_testcapimodule.c

index 55475c742f6f8572eaec0ed2263cdb4db4573ea4..cefcbff98d0cf037100723415ef25f616e18753b 100644 (file)
@@ -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