@@ -564,26 +564,39 @@ def test_startup_interactivehook_isolated_explicit(self):
564564 'import site, sys; site.enablerlcompleter(); sys.exit(hasattr(sys, "__interactivehook__"))' ]).wait ()
565565 self .assertTrue (r , "'__interactivehook__' not added by enablerlcompleter()" )
566566
567- @unittest .skipUnless (sys .platform == 'win32' , "only supported on Windows" )
568567class _pthFileTests (unittest .TestCase ):
569568
570- def _create_underpth_exe (self , lines , exe_pth = True ):
571- import _winapi
572- temp_dir = tempfile .mkdtemp ()
573- self .addCleanup (os_helper .rmtree , temp_dir )
574- exe_file = os .path .join (temp_dir , os .path .split (sys .executable )[1 ])
575- dll_src_file = _winapi .GetModuleFileName (sys .dllhandle )
576- dll_file = os .path .join (temp_dir , os .path .split (dll_src_file )[1 ])
577- shutil .copy (sys .executable , exe_file )
578- shutil .copy (dll_src_file , dll_file )
579- if exe_pth :
580- _pth_file = os .path .splitext (exe_file )[0 ] + '._pth'
581- else :
582- _pth_file = os .path .splitext (dll_file )[0 ] + '._pth'
583- with open (_pth_file , 'w' ) as f :
584- for line in lines :
585- print (line , file = f )
586- return exe_file
569+ if sys .platform == 'win32' :
570+ def _create_underpth_exe (self , lines , exe_pth = True ):
571+ import _winapi
572+ temp_dir = tempfile .mkdtemp ()
573+ self .addCleanup (os_helper .rmtree , temp_dir )
574+ exe_file = os .path .join (temp_dir , os .path .split (sys .executable )[1 ])
575+ dll_src_file = _winapi .GetModuleFileName (sys .dllhandle )
576+ dll_file = os .path .join (temp_dir , os .path .split (dll_src_file )[1 ])
577+ shutil .copy (sys .executable , exe_file )
578+ shutil .copy (dll_src_file , dll_file )
579+ if exe_pth :
580+ _pth_file = os .path .splitext (exe_file )[0 ] + '._pth'
581+ else :
582+ _pth_file = os .path .splitext (dll_file )[0 ] + '._pth'
583+ with open (_pth_file , 'w' ) as f :
584+ for line in lines :
585+ print (line , file = f )
586+ return exe_file
587+ else :
588+ def _create_underpth_exe (self , lines , exe_pth = True ):
589+ if not exe_pth :
590+ raise unittest .SkipTest ("library ._pth file not supported on this platform" )
591+ temp_dir = tempfile .mkdtemp ()
592+ self .addCleanup (os_helper .rmtree , temp_dir )
593+ exe_file = os .path .join (temp_dir , os .path .split (sys .executable )[1 ])
594+ os .symlink (sys .executable , exe_file )
595+ _pth_file = exe_file + '._pth'
596+ with open (_pth_file , 'w' ) as f :
597+ for line in lines :
598+ print (line , file = f )
599+ return exe_file
587600
588601 def _calc_sys_path_for_underpth_nosite (self , sys_prefix , lines ):
589602 sys_path = []
@@ -605,7 +618,7 @@ def test_underpth_basic(self):
605618
606619 output = subprocess .check_output ([exe_file , '-c' ,
607620 'import sys; print("\\ n".join(sys.path) if sys.flags.no_site else "")'
608- ], encoding = 'ansi ' )
621+ ], encoding = 'utf-8' , errors = 'surrogateescape ' )
609622 actual_sys_path = output .rstrip ().split ('\n ' )
610623 self .assertTrue (actual_sys_path , "sys.flags.no_site was False" )
611624 self .assertEqual (
@@ -630,10 +643,10 @@ def test_underpth_nosite_file(self):
630643
631644 env = os .environ .copy ()
632645 env ['PYTHONPATH' ] = 'from-env'
633- env ['PATH' ] = '{};{} ' .format (exe_prefix , os .getenv ('PATH' ))
646+ env ['PATH' ] = '{}{}{} ' .format (exe_prefix , os . pathsep , os .getenv ('PATH' ))
634647 output = subprocess .check_output ([exe_file , '-c' ,
635648 'import sys; print("\\ n".join(sys.path) if sys.flags.no_site else "")'
636- ], env = env , encoding = 'ansi ' )
649+ ], env = env , encoding = 'utf-8' , errors = 'surrogateescape ' )
637650 actual_sys_path = output .rstrip ().split ('\n ' )
638651 self .assertTrue (actual_sys_path , "sys.flags.no_site was False" )
639652 self .assertEqual (
@@ -666,7 +679,6 @@ def test_underpth_file(self):
666679 )], env = env )
667680 self .assertTrue (rc , "sys.path is incorrect" )
668681
669-
670682 def test_underpth_dll_file (self ):
671683 libpath = test .support .STDLIB_DIR
672684 exe_prefix = os .path .dirname (sys .executable )
0 commit comments