Skip to content

Commit bfaea54

Browse files
Add tests.
1 parent 8288f36 commit bfaea54

File tree

1 file changed

+49
-1
lines changed

1 file changed

+49
-1
lines changed

Lib/test/test_interpreters/test_api.py

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -819,6 +819,43 @@ def task():
819819

820820
class TestInterpreterPrepareMain(TestBase):
821821

822+
def test_main(self):
823+
interp0 = interpreters.get_main()
824+
if interp0 is interpreters.get_current():
825+
import __main__ as mainmod
826+
mainns = vars(mainmod)
827+
self.assertNotIn('prepare_main_spam', mainns)
828+
829+
with self.subTest('in current'):
830+
try:
831+
with self.assertRaisesRegex(InterpreterError, 'running'):
832+
interp0.prepare_main(prepare_main_spam='spam!!!')
833+
finally:
834+
mainns.pop('prepare_main_spam', None)
835+
self.assertNotIn('prepare_main_spam', mainns)
836+
837+
with self.subTest('in other'):
838+
interp = interpreters.create()
839+
try:
840+
with self.assertRaisesRegex(ExecutionFailed, 'running'):
841+
interp.exec(dedent("""
842+
from concurrent import interpreters
843+
interp0 = interpreters.get_main()
844+
interp0.prepare_main(prepare_main_spam='spam!!!')
845+
"""))
846+
self.assertNotIn('prepare_main_spam', mainns)
847+
finally:
848+
mainns.pop('prepare_main_spam', None)
849+
self.assertNotIn('prepare_main_spam', mainns)
850+
else:
851+
with self.subTest('in other'):
852+
interp = interpreters.create()
853+
interp.exec(dedent("""
854+
from concurrent import interpreters
855+
interp0 = interpreters.get_main()
856+
interp0.prepare_main(prepare_main_spam='spam!!!')
857+
"""))
858+
822859
def test_empty(self):
823860
interp = interpreters.create()
824861
with self.assertRaises(ValueError):
@@ -907,6 +944,11 @@ def test_failure(self):
907944
with self.assertRaises(ExecutionFailed):
908945
interp.exec('raise Exception')
909946

947+
def test_main(self):
948+
interp = interpreters.get_main()
949+
with self.assertRaisesRegex(InterpreterError, 'running'):
950+
interp.exec('print("spam")')
951+
910952
@force_not_colorized
911953
def test_display_preserved_exception(self):
912954
tempdir = self.temp_dir()
@@ -1256,6 +1298,11 @@ def assert_exceptions_equal(self, exc1, exc2):
12561298
self.assertIs(type(exc1), type(exc2))
12571299
self.assertEqual(exc1.args, exc2.args)
12581300

1301+
def test_main(self):
1302+
interp = interpreters.get_main()
1303+
with self.assertRaisesRegex(InterpreterError, 'running'):
1304+
interp.call(call_func_noop)
1305+
12591306
def test_stateless_funcs(self):
12601307
interp = interpreters.create()
12611308

@@ -2347,7 +2394,8 @@ def check(interpid, expected):
23472394

23482395
with self.subTest('main'):
23492396
interpid, *_ = _interpreters.get_main()
2350-
check(interpid, True)
2397+
running = _interpreters.is_running(interpid)
2398+
self.assertTrue(running)
23512399

23522400
with self.subTest('from C-API (running __main__)'):
23532401
with self.interpreter_from_capi() as interpid:

0 commit comments

Comments
 (0)