(self)
| 2275 | |
| 2276 | @requires_test_modules |
| 2277 | def test_whence(self): |
| 2278 | with self.subTest('main'): |
| 2279 | interpid, *_ = _interpreters.get_main() |
| 2280 | whence = _interpreters.whence(interpid) |
| 2281 | self.assertEqual(whence, _interpreters.WHENCE_RUNTIME) |
| 2282 | |
| 2283 | with self.subTest('stdlib'): |
| 2284 | interpid = _interpreters.create() |
| 2285 | whence = _interpreters.whence(interpid) |
| 2286 | self.assertEqual(whence, _interpreters.WHENCE_STDLIB) |
| 2287 | |
| 2288 | for orig, name in { |
| 2289 | _interpreters.WHENCE_UNKNOWN: 'not ready', |
| 2290 | _interpreters.WHENCE_LEGACY_CAPI: 'legacy C-API', |
| 2291 | _interpreters.WHENCE_CAPI: 'C-API', |
| 2292 | _interpreters.WHENCE_XI: 'cross-interpreter C-API', |
| 2293 | }.items(): |
| 2294 | with self.subTest(f'from C-API ({orig}: {name})'): |
| 2295 | with self.interpreter_from_capi(whence=orig) as interpid: |
| 2296 | whence = _interpreters.whence(interpid) |
| 2297 | self.assertEqual(whence, orig) |
| 2298 | |
| 2299 | with self.subTest('from C-API, running'): |
| 2300 | text = self.run_temp_from_capi(dedent(f""" |
| 2301 | import _interpreters |
| 2302 | interpid, *_ = _interpreters.get_current() |
| 2303 | print(_interpreters.whence(interpid)) |
| 2304 | """), |
| 2305 | config=True) |
| 2306 | whence = eval(text) |
| 2307 | self.assertEqual(whence, _interpreters.WHENCE_CAPI) |
| 2308 | |
| 2309 | with self.subTest('from legacy C-API, running'): |
| 2310 | ... |
| 2311 | text = self.run_temp_from_capi(dedent(f""" |
| 2312 | import _interpreters |
| 2313 | interpid, *_ = _interpreters.get_current() |
| 2314 | print(_interpreters.whence(interpid)) |
| 2315 | """), |
| 2316 | config=False) |
| 2317 | whence = eval(text) |
| 2318 | self.assertEqual(whence, _interpreters.WHENCE_LEGACY_CAPI) |
| 2319 | |
| 2320 | def test_contextvars_missing(self): |
| 2321 | script = f""" |
nothing calls this directly
no test coverage detected