@@ -819,6 +819,43 @@ def task():
819819
820820class 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