Mercurial > cpython-lru_cache-weakref
annotate Modules/_testembed.c @ 87690:66c1c9f32567 default tip
Add use_weakref option to functools.lru_cache
The use_weakref option makes lru_cache create weak references to the function
arguments when creating the cache key, which prevents them from staying in the
memory forever even after all other references to them are gone.
This is a proof of concept for http://bugs.python.org/issue19859
| author | Radomir Dopieralski <devel@sheep.art.pl> |
|---|---|
| date | Tue, 03 Dec 2013 16:02:48 +0100 |
| parents | 9cd88b39ef62 |
| children |
| rev | line source |
|---|---|
|
69553
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
1 #include <Python.h> |
|
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
2 #include <stdio.h> |
|
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
3 |
|
86399
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
4 /********************************************************* |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
5 * Embedded interpreter tests that need a custom exe |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
6 * |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
7 * Executed via 'EmbeddingTests' in Lib/test/test_capi.py |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
8 *********************************************************/ |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
9 |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
10 static void _testembed_Py_Initialize(void) |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
11 { |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
12 /* HACK: the "./" at front avoids a search along the PATH in |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
13 Modules/getpath.c */ |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
14 Py_SetProgramName(L"./_testembed"); |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
15 Py_Initialize(); |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
16 } |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
17 |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
18 |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
19 /***************************************************** |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
20 * Test repeated initalisation and subinterpreters |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
21 *****************************************************/ |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
22 |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
23 static void print_subinterp(void) |
|
69553
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
24 { |
|
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
25 /* Just output some debug stuff */ |
|
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
26 PyThreadState *ts = PyThreadState_Get(); |
|
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
27 printf("interp %p, thread state %p: ", ts->interp, ts); |
|
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
28 fflush(stdout); |
|
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
29 PyRun_SimpleString( |
|
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
30 "import sys;" |
|
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
31 "print('id(modules) =', id(sys.modules));" |
|
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
32 "sys.stdout.flush()" |
|
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
33 ); |
|
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
34 } |
|
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
35 |
|
86399
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
36 static void test_repeated_init_and_subinterpreters(void) |
|
69553
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
37 { |
|
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
38 PyThreadState *mainstate, *substate; |
|
69585
79fcd71d0356
Fix compilation of _testembed.c without threads
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69553
diff
changeset
|
39 #ifdef WITH_THREAD |
|
69553
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
40 PyGILState_STATE gilstate; |
|
69585
79fcd71d0356
Fix compilation of _testembed.c without threads
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69553
diff
changeset
|
41 #endif |
|
69553
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
42 int i, j; |
|
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
43 |
|
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
44 for (i=0; i<3; i++) { |
|
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
45 printf("--- Pass %d ---\n", i); |
|
86399
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
46 _testembed_Py_Initialize(); |
|
69553
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
47 mainstate = PyThreadState_Get(); |
|
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
48 |
|
69585
79fcd71d0356
Fix compilation of _testembed.c without threads
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69553
diff
changeset
|
49 #ifdef WITH_THREAD |
|
69553
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
50 PyEval_InitThreads(); |
|
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
51 PyEval_ReleaseThread(mainstate); |
|
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
52 |
|
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
53 gilstate = PyGILState_Ensure(); |
|
69585
79fcd71d0356
Fix compilation of _testembed.c without threads
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69553
diff
changeset
|
54 #endif |
|
69553
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
55 print_subinterp(); |
|
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
56 PyThreadState_Swap(NULL); |
|
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
57 |
|
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
58 for (j=0; j<3; j++) { |
|
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
59 substate = Py_NewInterpreter(); |
|
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
60 print_subinterp(); |
|
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
61 Py_EndInterpreter(substate); |
|
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
62 } |
|
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
63 |
|
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
64 PyThreadState_Swap(mainstate); |
|
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
65 print_subinterp(); |
|
69585
79fcd71d0356
Fix compilation of _testembed.c without threads
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69553
diff
changeset
|
66 #ifdef WITH_THREAD |
|
69553
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
67 PyGILState_Release(gilstate); |
|
69585
79fcd71d0356
Fix compilation of _testembed.c without threads
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69553
diff
changeset
|
68 #endif |
|
69553
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
69 |
|
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
70 PyEval_RestoreThread(mainstate); |
|
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
71 Py_Finalize(); |
|
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
72 } |
|
86399
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
73 } |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
74 |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
75 /***************************************************** |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
76 * Test forcing a particular IO encoding |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
77 *****************************************************/ |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
78 |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
79 static void check_stdio_details(const char *encoding, const char * errors) |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
80 { |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
81 /* Output info for the test case to check */ |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
82 if (encoding) { |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
83 printf("Expected encoding: %s\n", encoding); |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
84 } else { |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
85 printf("Expected encoding: default\n"); |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
86 } |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
87 if (errors) { |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
88 printf("Expected errors: %s\n", errors); |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
89 } else { |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
90 printf("Expected errors: default\n"); |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
91 } |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
92 fflush(stdout); |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
93 /* Force the given IO encoding */ |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
94 Py_SetStandardStreamEncoding(encoding, errors); |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
95 _testembed_Py_Initialize(); |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
96 PyRun_SimpleString( |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
97 "import sys;" |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
98 "print('stdin: {0.encoding}:{0.errors}'.format(sys.stdin));" |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
99 "print('stdout: {0.encoding}:{0.errors}'.format(sys.stdout));" |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
100 "print('stderr: {0.encoding}:{0.errors}'.format(sys.stderr));" |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
101 "sys.stdout.flush()" |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
102 ); |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
103 Py_Finalize(); |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
104 } |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
105 |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
106 static void test_forced_io_encoding(void) |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
107 { |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
108 /* Check various combinations */ |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
109 printf("--- Use defaults ---\n"); |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
110 check_stdio_details(NULL, NULL); |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
111 printf("--- Set errors only ---\n"); |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
112 check_stdio_details(NULL, "surrogateescape"); |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
113 printf("--- Set encoding only ---\n"); |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
114 check_stdio_details("latin-1", NULL); |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
115 printf("--- Set encoding and errors ---\n"); |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
116 check_stdio_details("latin-1", "surrogateescape"); |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
117 |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
118 /* Check calling after initialization fails */ |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
119 Py_Initialize(); |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
120 |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
121 if (Py_SetStandardStreamEncoding(NULL, NULL) == 0) { |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
122 printf("Unexpected success calling Py_SetStandardStreamEncoding"); |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
123 } |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
124 Py_Finalize(); |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
125 } |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
126 |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
127 /* Different embedding tests */ |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
128 int main(int argc, char *argv[]) |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
129 { |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
130 |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
131 /* TODO: Check the argument string to allow for more test cases */ |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
132 if (argc > 1) { |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
133 /* For now: assume "forced_io_encoding */ |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
134 test_forced_io_encoding(); |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
135 } else { |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
136 /* Run the original embedding test case by default */ |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
137 test_repeated_init_and_subinterpreters(); |
|
9cd88b39ef62
Issue #16129: Add `Py_SetStandardStreamEncoding`
Nick Coghlan <ncoghlan@gmail.com>
parents:
69585
diff
changeset
|
138 } |
|
69553
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
139 return 0; |
|
d195ff5c44f4
Issue #10914: Add a minimal embedding test to test_capi.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
140 } |
