ยปCore Development>Code coverage>Modules/_testembed.c

Python code coverage for Modules/_testembed.c

#countcontent
1n/a#include <Python.h>
2n/a#include <stdio.h>
3n/a
4n/avoid print_subinterp(void)
50{
6n/a /* Just output some debug stuff */
70 PyThreadState *ts = PyThreadState_Get();
80 printf("interp %p, thread state %p: ", ts->interp, ts);
90 fflush(stdout);
100 PyRun_SimpleString(
11n/a "import sys;"
12n/a "print('id(modules) =', id(sys.modules));"
13n/a "sys.stdout.flush()"
14n/a );
150}
16n/a
17n/aint main(int argc, char *argv[])
180{
19n/a PyThreadState *mainstate, *substate;
20n/a#ifdef WITH_THREAD
21n/a PyGILState_STATE gilstate;
22n/a#endif
23n/a int i, j;
24n/a
250 for (i=0; i<3; i++) {
260 printf("--- Pass %d ---\n", i);
27n/a /* HACK: the "./" at front avoids a search along the PATH in
28n/a Modules/getpath.c */
290 Py_SetProgramName(L"./_testembed");
300 Py_Initialize();
310 mainstate = PyThreadState_Get();
32n/a
33n/a#ifdef WITH_THREAD
340 PyEval_InitThreads();
350 PyEval_ReleaseThread(mainstate);
36n/a
370 gilstate = PyGILState_Ensure();
38n/a#endif
390 print_subinterp();
400 PyThreadState_Swap(NULL);
41n/a
420 for (j=0; j<3; j++) {
430 substate = Py_NewInterpreter();
440 print_subinterp();
450 Py_EndInterpreter(substate);
46n/a }
47n/a
480 PyThreadState_Swap(mainstate);
490 print_subinterp();
50n/a#ifdef WITH_THREAD
510 PyGILState_Release(gilstate);
52n/a#endif
53n/a
540 PyEval_RestoreThread(mainstate);
550 Py_Finalize();
56n/a }
570 return 0;
58n/a}