summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_capi/test_misc.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/test_capi/test_misc.py')
-rw-r--r--Lib/test/test_capi/test_misc.py83
1 files changed, 37 insertions, 46 deletions
diff --git a/Lib/test/test_capi/test_misc.py b/Lib/test/test_capi/test_misc.py
index 34311af..2f2bf03 100644
--- a/Lib/test/test_capi/test_misc.py
+++ b/Lib/test/test_capi/test_misc.py
@@ -2204,6 +2204,7 @@ class SubinterpreterTest(unittest.TestCase):
self.assertEqual(main_attr_id, subinterp_attr_id)
+@requires_subinterpreters
class InterpreterConfigTests(unittest.TestCase):
supported = {
@@ -2277,11 +2278,11 @@ class InterpreterConfigTests(unittest.TestCase):
expected = self.supported[expected]
args = (name,) if name else ()
- config1 = _testinternalcapi.new_interp_config(*args)
+ config1 = _interpreters.new_config(*args)
self.assert_ns_equal(config1, expected)
self.assertIsNot(config1, expected)
- config2 = _testinternalcapi.new_interp_config(*args)
+ config2 = _interpreters.new_config(*args)
self.assert_ns_equal(config2, expected)
self.assertIsNot(config2, expected)
self.assertIsNot(config2, config1)
@@ -2298,7 +2299,7 @@ class InterpreterConfigTests(unittest.TestCase):
with self.subTest(f'noop ({name})'):
expected = vanilla
overrides = vars(vanilla)
- config = _testinternalcapi.new_interp_config(name, **overrides)
+ config = _interpreters.new_config(name, **overrides)
self.assert_ns_equal(config, expected)
with self.subTest(f'change all ({name})'):
@@ -2308,7 +2309,7 @@ class InterpreterConfigTests(unittest.TestCase):
continue
overrides['gil'] = gil
expected = types.SimpleNamespace(**overrides)
- config = _testinternalcapi.new_interp_config(
+ config = _interpreters.new_config(
name, **overrides)
self.assert_ns_equal(config, expected)
@@ -2324,14 +2325,14 @@ class InterpreterConfigTests(unittest.TestCase):
expected = types.SimpleNamespace(
**dict(vars(vanilla), **overrides),
)
- config = _testinternalcapi.new_interp_config(
+ config = _interpreters.new_config(
name, **overrides)
self.assert_ns_equal(config, expected)
with self.subTest('unsupported field'):
for name in self.supported:
with self.assertRaises(ValueError):
- _testinternalcapi.new_interp_config(name, spam=True)
+ _interpreters.new_config(name, spam=True)
# Bad values for bool fields.
for field, value in vars(self.supported['empty']).items():
@@ -2341,19 +2342,18 @@ class InterpreterConfigTests(unittest.TestCase):
for value in [1, '', 'spam', 1.0, None, object()]:
with self.subTest(f'unsupported value ({field}={value!r})'):
with self.assertRaises(TypeError):
- _testinternalcapi.new_interp_config(**{field: value})
+ _interpreters.new_config(**{field: value})
# Bad values for .gil.
for value in [True, 1, 1.0, None, object()]:
with self.subTest(f'unsupported value(gil={value!r})'):
with self.assertRaises(TypeError):
- _testinternalcapi.new_interp_config(gil=value)
+ _interpreters.new_config(gil=value)
for value in ['', 'spam']:
with self.subTest(f'unsupported value (gil={value!r})'):
with self.assertRaises(ValueError):
- _testinternalcapi.new_interp_config(gil=value)
+ _interpreters.new_config(gil=value)
- @requires_subinterpreters
def test_interp_init(self):
questionable = [
# strange
@@ -2412,11 +2412,10 @@ class InterpreterConfigTests(unittest.TestCase):
with self.subTest(f'valid: {config}'):
check(config)
- @requires_subinterpreters
def test_get_config(self):
@contextlib.contextmanager
def new_interp(config):
- interpid = _testinternalcapi.new_interpreter(config)
+ interpid = _interpreters.create(config, reqrefs=False)
try:
yield interpid
finally:
@@ -2426,32 +2425,32 @@ class InterpreterConfigTests(unittest.TestCase):
pass
with self.subTest('main'):
- expected = _testinternalcapi.new_interp_config('legacy')
+ expected = _interpreters.new_config('legacy')
expected.gil = 'own'
interpid = _interpreters.get_main()
- config = _testinternalcapi.get_interp_config(interpid)
+ config = _interpreters.get_config(interpid)
self.assert_ns_equal(config, expected)
with self.subTest('isolated'):
- expected = _testinternalcapi.new_interp_config('isolated')
+ expected = _interpreters.new_config('isolated')
with new_interp('isolated') as interpid:
- config = _testinternalcapi.get_interp_config(interpid)
+ config = _interpreters.get_config(interpid)
self.assert_ns_equal(config, expected)
with self.subTest('legacy'):
- expected = _testinternalcapi.new_interp_config('legacy')
+ expected = _interpreters.new_config('legacy')
with new_interp('legacy') as interpid:
- config = _testinternalcapi.get_interp_config(interpid)
+ config = _interpreters.get_config(interpid)
self.assert_ns_equal(config, expected)
with self.subTest('custom'):
- orig = _testinternalcapi.new_interp_config(
+ orig = _interpreters.new_config(
'empty',
use_main_obmalloc=True,
gil='shared',
)
with new_interp(orig) as interpid:
- config = _testinternalcapi.get_interp_config(interpid)
+ config = _interpreters.get_config(interpid)
self.assert_ns_equal(config, orig)
@@ -2529,14 +2528,19 @@ class InterpreterIDTests(unittest.TestCase):
self.assertFalse(
_testinternalcapi.interpreter_exists(interpid))
+ def get_refcount_helpers(self):
+ return (
+ _testinternalcapi.get_interpreter_refcount,
+ (lambda id: _interpreters.incref(id, implieslink=False)),
+ _interpreters.decref,
+ )
+
def test_linked_lifecycle_does_not_exist(self):
exists = _testinternalcapi.interpreter_exists
is_linked = _testinternalcapi.interpreter_refcount_linked
link = _testinternalcapi.link_interpreter_refcount
unlink = _testinternalcapi.unlink_interpreter_refcount
- get_refcount = _testinternalcapi.get_interpreter_refcount
- incref = _testinternalcapi.interpreter_incref
- decref = _testinternalcapi.interpreter_decref
+ get_refcount, incref, decref = self.get_refcount_helpers()
with self.subTest('never existed'):
interpid = _testinternalcapi.unused_interpreter_id()
@@ -2578,8 +2582,7 @@ class InterpreterIDTests(unittest.TestCase):
get_refcount = _testinternalcapi.get_interpreter_refcount
# A new interpreter will start out not linked, with a refcount of 0.
- interpid = _testinternalcapi.new_interpreter()
- self.add_interp_cleanup(interpid)
+ interpid = self.new_interpreter()
linked = is_linked(interpid)
refcount = get_refcount(interpid)
@@ -2589,12 +2592,9 @@ class InterpreterIDTests(unittest.TestCase):
def test_linked_lifecycle_never_linked(self):
exists = _testinternalcapi.interpreter_exists
is_linked = _testinternalcapi.interpreter_refcount_linked
- get_refcount = _testinternalcapi.get_interpreter_refcount
- incref = _testinternalcapi.interpreter_incref
- decref = _testinternalcapi.interpreter_decref
+ get_refcount, incref, decref = self.get_refcount_helpers()
- interpid = _testinternalcapi.new_interpreter()
- self.add_interp_cleanup(interpid)
+ interpid = self.new_interpreter()
# Incref will not automatically link it.
incref(interpid)
@@ -2618,8 +2618,7 @@ class InterpreterIDTests(unittest.TestCase):
link = _testinternalcapi.link_interpreter_refcount
unlink = _testinternalcapi.unlink_interpreter_refcount
- interpid = _testinternalcapi.new_interpreter()
- self.add_interp_cleanup(interpid)
+ interpid = self.new_interpreter()
# Linking at refcount 0 does not destroy the interpreter.
link(interpid)
@@ -2639,12 +2638,9 @@ class InterpreterIDTests(unittest.TestCase):
exists = _testinternalcapi.interpreter_exists
is_linked = _testinternalcapi.interpreter_refcount_linked
link = _testinternalcapi.link_interpreter_refcount
- get_refcount = _testinternalcapi.get_interpreter_refcount
- incref = _testinternalcapi.interpreter_incref
- decref = _testinternalcapi.interpreter_decref
+ get_refcount, incref, decref = self.get_refcount_helpers()
- interpid = _testinternalcapi.new_interpreter()
- self.add_interp_cleanup(interpid)
+ interpid = self.new_interpreter()
# Linking it will not change the refcount.
link(interpid)
@@ -2666,11 +2662,9 @@ class InterpreterIDTests(unittest.TestCase):
def test_linked_lifecycle_incref_link(self):
is_linked = _testinternalcapi.interpreter_refcount_linked
link = _testinternalcapi.link_interpreter_refcount
- get_refcount = _testinternalcapi.get_interpreter_refcount
- incref = _testinternalcapi.interpreter_incref
+ get_refcount, incref, _ = self.get_refcount_helpers()
- interpid = _testinternalcapi.new_interpreter()
- self.add_interp_cleanup(interpid)
+ interpid = self.new_interpreter()
incref(interpid)
self.assertEqual(
@@ -2688,12 +2682,9 @@ class InterpreterIDTests(unittest.TestCase):
is_linked = _testinternalcapi.interpreter_refcount_linked
link = _testinternalcapi.link_interpreter_refcount
unlink = _testinternalcapi.unlink_interpreter_refcount
- get_refcount = _testinternalcapi.get_interpreter_refcount
- incref = _testinternalcapi.interpreter_incref
- decref = _testinternalcapi.interpreter_decref
+ get_refcount, incref, decref = self.get_refcount_helpers()
- interpid = _testinternalcapi.new_interpreter()
- self.add_interp_cleanup(interpid)
+ interpid = self.new_interpreter()
link(interpid)
self.assertTrue(