@@ -7175,6 +7175,7 @@ def test_type_check_in_subinterp(self):
71757175                spec = importlib.util.spec_from_loader(fullname, loader) 
71767176                module = importlib.util.module_from_spec(spec) 
71777177                spec.loader.exec_module(module) 
7178+                 module.test_datetime_capi() 
71787179
71797180            def run(type_checker, obj): 
71807181                if not type_checker(obj, True): 
@@ -7313,58 +7314,77 @@ def gen():
73137314        res  =  script_helper .assert_python_ok ('-c' , script )
73147315        self .assertFalse (res .err )
73157316
7316-     def  test_static_type_at_shutdown3 (self ):
7317-         script  =  textwrap .dedent (f''' 
7317+     def  run_script_132413 (self , script ):
7318+         # iOS requires the use of the custom framework loader, 
7319+         # not the ExtensionFileLoader. 
7320+         if  sys .platform  ==  "ios" :
7321+             extension_loader  =  "AppleFrameworkLoader" 
7322+         else :
7323+             extension_loader  =  "ExtensionFileLoader" 
7324+ 
7325+         main_interp_script  =  textwrap .dedent (f''' 
73187326            import textwrap 
73197327            from test import support 
73207328
7321-             subinterp_script = textwrap.dedent(f""" 
7322-                 from _testcapi import get_delta_type 
7323-                 # Test without calling test_datetime_capi() in subinterp 
7324-                 timedelta = get_delta_type() 
7325- 
7326-                 def gen(): 
7327-                      try: 
7328-                          yield 
7329-                      finally: 
7330-                          timedelta(days=1) 
7331- 
7332-                 it = gen() 
7333-                 next(it) 
7329+             sub_script = textwrap.dedent(""" 
7330+                 if { _interpreters  is  None }  
7331+                     import _testcapi as module 
7332+                 else: 
7333+                     import importlib.machinery 
7334+                     import importlib.util 
7335+                     fullname = '_testcapi_datetime' 
7336+                     origin = importlib.util.find_spec('_testcapi').origin 
7337+                     loader = importlib.machinery.{ extension_loader }  
7338+                     spec = importlib.util.spec_from_loader(fullname, loader) 
7339+                     module = importlib.util.module_from_spec(spec) 
7340+                     spec.loader.exec_module(module) 
7341+ 
7342+                 # Skip calling test_datetime_capi() 
7343+                 $REPLACE_ME$ 
73347344            """) 
73357345
73367346            import _testcapi 
73377347            _testcapi.test_datetime_capi() 
7338-             ret = support.run_in_subinterp(subinterp_script) 
7348+ 
7349+             if { _interpreters  is  None }  
7350+                 ret = support.run_in_subinterp(sub_script) 
7351+             else: 
7352+                 import _interpreters 
7353+                 config = _interpreters.new_config('isolated').__dict__ 
7354+                 ret = support.run_in_subinterp_with_config(sub_script, **config) 
7355+ 
73397356            assert ret == 0 
7340-         ''' )
73417357
7342-         res  =  script_helper .assert_python_ok ('-c' , script )
7343-         self .assertIn (b'ImportError: sys.meta_path is None' , res .err )
7358+         ''' ).replace ('$REPLACE_ME$' , textwrap .indent (script , '\x20 ' * 4 ))
73447359
7345-     def  test_static_type_before_shutdown (self ):
7346-         script  =  textwrap .dedent (f''' 
7347-             import textwrap 
7348-             from test import support 
7360+         res  =  script_helper .assert_python_ok ('-c' , main_interp_script )
7361+         return  res 
73497362
7350-             subinterp_script = textwrap.dedent(f"""  
7351-                 from _testcapi import get_delta_type  
7352-                 # Test without calling test_datetime_capi() in subinterp  
7363+     def   test_static_type_at_shutdown3 ( self ): 
7364+         script   =   textwrap . dedent ( """ 
7365+             timedelta = module.get_delta_type()  
73537366
7354-                 import sys 
7355-                 assert '_datetime' not in sys.modules 
7356-                 timedelta = get_delta_type() 
7357-                 timedelta(days=1) 
7358-                 assert '_datetime' in sys.modules 
7359-             """) 
7367+             def gen(): 
7368+                  try: 
7369+                      yield 
7370+                  finally: 
7371+                      timedelta(days=1) 
73607372
7361-             import _testcapi  
7362-             _testcapi.test_datetime_capi( ) 
7363-             ret = support.run_in_subinterp(subinterp_script ) 
7364-             assert ret == 0  
7365-         '''  )
7373+             it = gen()  
7374+             next(it ) 
7375+         """  )
7376+         res   =   self . run_script_132413 ( script ) 
7377+         self . assertIn ( b'ImportError: sys.meta_path is None' ,  res . err )
73667378
7367-         res  =  script_helper .assert_python_ok ('-c' , script )
7379+     def  test_static_type_before_shutdown (self ):
7380+         script  =  textwrap .dedent (f""" 
7381+             import sys 
7382+             assert '_datetime' not in sys.modules 
7383+             timedelta = module.get_delta_type() 
7384+             timedelta(days=1) 
7385+             assert '_datetime' in sys.modules 
7386+         """ )
7387+         res  =  self .run_script_132413 (script )
73687388        self .assertFalse (res .err )
73697389
73707390    def  test_remain_only_one_module (self ):
@@ -7375,7 +7395,7 @@ def test_remain_only_one_module(self):
73757395            ws = weakref.WeakSet() 
73767396            for _ in range(3): 
73777397                import _datetime 
7378-                 td  = _datetime.timedelta 
7398+                 timedelta  = _datetime.timedelta 
73797399                ws.add(_datetime) 
73807400                del sys.modules['_datetime'] 
73817401                del _datetime 
0 commit comments