
    z%ito                     F   	 d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlmZm	Z	 d dl
Z
d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl mZ d dlmZ ej4                  j6                  r e j8                  d	      d dlZej<                  duZda d
 Z!d Z" G d de jF                        Z$ G d de%      Z& G d de jF                        Z' G d de jF                        Z( G d de jF                        Z)e*dk(  r e jV                          yy)    N)support)	os_helper)socket_helper)captured_stderr)TESTFNEnvironmentVarGuard)mock)copyzPython was invoked with -Sc                     t         j                  d d  at        j                  rvt
        j                  j                  t        j                        sH	 t        j                  t        j                         t        j                  t        j                         y y y # t        $ r.} t        j                  dt        j                  d|       d } ~ ww xY w)Nz&unable to create user site directory (z): )syspathOLD_SYS_PATHsiteENABLE_USER_SITEosisdir	USER_SITEmakedirs
addsitedirPermissionErrorunittestSkipTest)excs    B/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/test/test_site.pysetUpModuler   +   s    88A;LRWW]]4>>%B	=KK'OODNN+ &C  	=##'+~~s%< = =	=s   AB 	C$)CCc                  2    t         t        j                  d d  y N)r   r   r        r   tearDownModuler    :   s    CHHQKr   c                      e Zd Z	 d Zd Zd Zd Zd Zd Zde	fdZ
d	 Zd
 Zd Zd Zd Zd Z ej$                  ed      d        Z ej$                  ej,                  d       ej0                         d               Z ej$                  ed      d        Z ej$                  ed      d        Zd Z ej$                  ed      d        Zd Zy)HelperFunctionsTestsc                    	 t         j                  d d  | _        t        j                  | _        t        j                  | _        t        j                  | _	        t        j                  | _        t        t        j                        | _        y r   )r   r   sys_pathr   	USER_BASEold_baser   old_sitePREFIXESold_prefixes	sysconfig_CONFIG_VARSoriginal_varsr
   old_varsselfs    r   setUpzHelperFunctionsTests.setUpB   sV    % MM&33Y334r   c                    	 | j                   t        j                  d d  | j                  t        _        | j                  t        _        | j                  t        _	        | j                  t        _        t        j                  Ht        j                  j                          t        j                  j                  | j                         y y r   )r$   r   r   r&   r   r%   r'   r   r)   r(   r,   r*   r+   clearupdater-   r.   s    r   tearDownzHelperFunctionsTests.tearDownK   s    mm))!%!3!3	!!-""((*""))$--8 .r   c                    d}t        j                  j                  | }t        j                  | \  }}| j                  t         j                  j                  |      |       |t         j                  j                  |      k(  r| j                  ||       y | j                  t         j                  j                  |      |       y )N)	BeginningEnd)r   r   joinr   makepathassertEqualabspathnormcase)r/   
path_partsoriginal_dirabs_dirnorm_dirs        r   test_makepathz"HelperFunctionsTests.test_makepathW   s     *
ww||Z0 MM:66@277++L99Wh/RWW--g6Ar   c                    t        j                         }t        j                  D cg c];  }|r7t        j                  j                  |      rt        j                  |      d   = c}D ]  }| j                  |||d|        y c c}w )N   z> from sys.path not found in set returned by _init_pathinfo(): )r   _init_pathinfor   r   r   existsr9   assertIn)r/   dir_setr   entrys       r   test_init_pathinfoz'HelperFunctionsTests.test_init_pathinfod   sx    %%'9< :BGGNN4$8 mmD)!, : 	HEMM%7<gGH	H :s   A Bc                 f   	 | j                  |j                  t        j                  d|j                  z         | j                  t	        j
                  |j                        d   t        j                         | j                  t        j                  j                  |j                               y )Nz%s not in sys.modulesr   )rF   importedr   modulesr   r9   good_dir_pathr   assertFalser   rE   bad_dir_pathr/   pth_files     r   pth_file_testsz#HelperFunctionsTests.pth_file_testsl   su    Lh''-0A0AA	CdmmH$:$:;A>I(=(=>?r   c                 0   t               }|j                  d       	 |j                          t        j                  |j
                  |j                  t                      | j                  |       |j                          y # |j                          w xY wNT)prep)	PthFilecleanupcreater   
addpackagebase_dirfilenamesetrR   rP   s     r   test_addpackagez$HelperFunctionsTests.test_addpackages   sp    
 9d#	OOOOH--x/@/@#%H)Hs   AB B.c                 *   t         j                  j                  |      }|dz   }t         j                  j                  ||      t	        dd      5 }| j                  fd       |j                  |       d d d        ||fS # 1 sw Y   ||fS xY w)N.pthwutf-8encodingc                  .    t        j                         S r   )r   remove)pth_fns   r   <lambda>z/HelperFunctionsTests.make_pth.<locals>.<lambda>   s    BIIf$5 r   )r   r   r;   r8   open
addCleanupwrite)r/   contentspth_dirpth_namepth_basenamerQ   rg   s         @r   make_pthzHelperFunctionsTests.make_pth   s    ''//'*&(g|4&#0 	%HOO56NN8$	% $$	% $$s   &BBc           	      J   | j                  d      \  }}t               5 }t        j                  ||t	                      d d d        | j                  j                         d       | j                  |j                         t        j                  t        j                  j                  ||                   | j                  |j                         d       | j                  |j                         d       | j                  |j                         d       y # 1 sw Y   xY w)Nzimport bad-syntax
zline 1	Tracebackzimport bad-syntaxSyntaxErrorrp   r   r   rY   r\   assertRegexgetvaluereescaper   r   r8   r/   rm   rg   err_outs       r   !test_addpackage_import_bad_syntaxz6HelperFunctionsTests.test_addpackage_import_bad_syntax   s    --(=> 	4'OOGVSU3	4))+X6))+IIbggll7F34	6
 	))+[9))+-AB))+];	4 	4s    DD"c           	      
   | j                  d      \  }}t               5 }t        j                  ||t	                      d d d        | j                  j                         d       | j                  |j                         t        j                  t        j                  j                  ||                   | j                  |j                         d       | j                  |j                         d       y # 1 sw Y   xY w)Nzrandompath
import nosuchmodule
zline 2rr   ModuleNotFoundErrorrt   ry   s       r   test_addpackage_import_bad_execz4HelperFunctionsTests.test_addpackage_import_bad_exec   s    --(KL 	4'OOGVSU3	4))+X6))+IIbggll7F34	6 	))+[9))+-BC	4 	4s    C99Dc                     | j                  d      \  }}t        j                  ||t                     }| j	                  |t                      y )Nz

  

)rp   r   rY   r\   r:   )r/   rm   rg   known_pathss       r   test_addpackage_empty_linesz0HelperFunctionsTests.test_addpackage_empty_lines   s:    --5oogvsu=ce,r   c           	         | j                  d      \  }}t               5 }| j                  t        j                  ||t                            d d d        d | _        | j                  j                         d       t        j                  D ]%  }t        |t              s| j                  d|       ' y # 1 sw Y   ixY w)Nzabc def
 zabc def)rp   r   rN   r   rY   r\   maxDiffr:   rv   r   r   
isinstancestrassertNotIn)r/   rm   rg   rz   r   s        r   #test_addpackage_import_bad_pth_filez8HelperFunctionsTests.test_addpackage_import_bad_pth_file   s    --7 	F'T__WfceDE	F))+R0HH 	5D$$  t4	5		F 	Fs   /B66B?c                    t               }|j                  d       	 |j                          t        j                  |j
                  t                      | j                  |       |j                          y # |j                          w xY wrT   )rV   rW   rX   r   r   rZ   r\   rR   rP   s     r   test_addsitedirz$HelperFunctionsTests.test_addsitedir   sh     9d#	OOOOH--su5)Hs   A	A8 8B
c                 p    | j                  t        j                         t        j                                y r   )r:   r   _getuserbaser*   r.   s    r   test__getuserbasez&HelperFunctionsTests.test__getuserbase   s$    **,i.D.D.FGr   zneed user sitec                 F   t         j                  dk(  rt         j                  rd}nt        j                  dz   }| j                  t        j                  j                  t        j                  t        j                                     t        j                  d|             y )Ndarwinosx_framework_user_userpurelib)r   platform
_frameworkr   namer:   r   normpathr   	_get_pathr   r*   get_path)r/   schemes     r   test_get_pathz"HelperFunctionsTests.test_get_path   si    <<8#)FWWw&F))$..9J9J9L*MN"++Iv>	@r   z<requires access to PEP 370 user-site (site.ENABLE_USER_SITE)c                 @   t         j                  j                  t        j                        }| j                  |t        j                         t         j                  j                         }t        j                  t        j                  dd|z  g|      }| j                  |d       t         j                  j                         }t        j                  t        j                  ddd|z  g|      }|t        j                         d   k(  r| j                  |d       n| j                  |dd       t         j                  j                         }d|d	<   t        j                  t        j                  dd|z  g|      }|t        j                         d   k(  r| j                  |d       n| j                  |dd
       t         j                  j                         }d|d<   t        j                  t        j                  ddg|      }| j                  |dd       y )N-cz$import sys; sys.exit(%r in sys.path)envrC   z-sr   z%User site still added to path with -s1PYTHONNOUSERSITEz3User site still added to path with PYTHONNOUSERSITEz/tmpPYTHONUSERBASEz=import sys, site; sys.exit(site.USER_BASE.startswith("/tmp"))z#User base not set by PYTHONUSERBASE)r   r   r   r   r   rF   r   environr
   
subprocesscall
executabler:   getsitepackages)r/   usersiter   rcs       r   test_s_optionz"HelperFunctionsTests.test_s_option   s   
 77##DNN3h)jjoo__cnnd2X=? 	Qjjoo__cnndD2X=? t++-a00R#R$KLjjoo"%__cnnd2X=? t++-a00R#RMO jjoo &__cnndKM 	Q=	?r   c                    d t         _        t        j                         }| j                  t         j                  |       d t         _        dd l}d |_        t               5 }d|d<   | j                  t        j                         j                  d      t        j                                d d d        y # 1 sw Y   y xY w)Nr   xoxor   )	r   r%   getuserbaser:   r*   r+   r   
assertTrue
startswith)r/   	user_baser*   r   s       r   test_getuserbasez%HelperFunctionsTests.test_getuserbase   s    $$&	 	3 !%	 " 	0g(.G$%OOD,,.99&A ,,.0	0 	0 	0s    AB44B=c                 Z   d t         _        d t         _        t        j                         }| j	                  t         j                  |       | j                  |j                  t         j                        |       | j	                  t         j                  t        j                                y r   )r   r   r%   getusersitepackagesr:   r   r   r   )r/   	user_sites     r   test_getusersitepackagesz-HelperFunctionsTests.test_getusersitepackages  sn    ,,.	 	3	,,T^^<iH)9)9);<r   c                    dgt         _        t        j                         }t        j                  dk(  rt
        j                  dk7  ru| j                  t        |      d       t        j                  j                  dt
        j                  dt
        j                  d d z  d      }| j                  |d   |       n| j                  t        |      d       t        j                  j                  dddt
        j                  d d z  d      }| j                  |d	   |       y | j                  t        |      d       | j                  |d   d       t        j                  j                  ddd      }| j                  t        j                  j                  |d         t        j                  j                  |             y )
Nr   /lib   zpython%d.%dzsite-packagesr   rC   )r   r(   r   r   sepr   
platlibdirr:   lenr   r8   version_infor<   )r/   dirswanteds      r   test_getsitepackagesz)HelperFunctionsTests.test_getsitepackages  sY   ##%66S=~~&  TA.fcnn&3c6F6Fr6J&J&57   a&1  TA.WW\\&%"/#2B2B2A2F"F"13F T"Xv. SY*T!Wf-WW\\&%AFRWW--d1g6WW--f57r   c                    d t         _        d t         _        t               5 }t	        j
                  dd       5  |d= |d= t        j                         }| j                  |j                  dt        j                  z         |       t        j                         }| j                  |j                  |      |       d d d        d d d        t	        j
                  dd      5 }t        j
                  j                  t         d	      5 }t        j                  t         d
d      5  t               }t        j                   |       |j#                         |j%                          | j'                  |       d d d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   2xY w# 1 sw Y   6xY w# 1 sw Y   y xY w)Nzos.path.expanduserc                     | S r   r   )r   s    r   rh   z=HelperFunctionsTests.test_no_home_directory.<locals>.<lambda><  s    4 r   r   APPDATA~zos.path.isdirF)return_valuer   r   T)r   r   r%   r   r	   patchr   r   r   r   r   r   objectr   	swap_attrr\   addusersitepackagesassert_called_once_withassert_not_calledrN   )r/   r   r   r   
mock_isdirmock_addsitedirr   s          r   test_no_home_directoryz+HelperFunctionsTests.test_no_home_directory3  s   
  " 	HgZZ,.?@	H ()	"((*IOOI00rvv>%' 002IOOI00;YG	H 	H ZZe< 	*
ZZt\2	*6Et%7>	* %K$$[1..y9--/[)	* 	* 	* 	*	H 	H 	H 	H	* 	* 	* 	* 	* 	*s`   FBF;F"%F>F2#AF&5F2=F>F	FF#&F/+F22F;	7F>>Gc                    d}d|dz   fdfD ]  \  }}t        j                  dt        j                  |            5  t        j                  dt        j                               5  t        j                  |       | j                  t        j                  j                         |       d d d        d d d         y # 1 sw Y   xY w# 1 sw Y   xY w)Nzbla-bla-blaT
)Fr   z	sys.flags)verbosez
sys.stderr)r	   r   MockioStringIOr   _tracer:   r   stderrrv   )r/   messager   outs       r   
test_tracezHelperFunctionsTests.test_traceU  s    !7T>2K? 	=LGSK7)CD =JJ|R[[];=G$  !4!4!6<= = =	== = = =s$   )C%AB<)C<CCC	N)__name__
__module____qualname__r0   r4   rA   rI   rR   r]   r   rp   r{   r~   r   r   r   r   r   
skipUnlessHAS_USER_SITEr   r   r   r   requires_subprocessr   r   r   r   r   r   r   r   r   r"   r"   >   s3   5
9BH@ *-v %<
D-	5H X(89@ :@ X.. 1> ? W  "%? #?%?N X(890 :0" X(89= :=72 X(89* :*B=r   r"   c                   ,    e Zd Z	 edddfdZd ZddZy)	rV   time__testdir____badc                    	 |dz   | _         t        j                  j                  d      | _        t        j                  j                  | j                  | j                         | _        || _        || _        || _	        t        j                  j                  | j                  | j                        | _
        t        j                  j                  | j                  | j                        | _        y )Nr`   r   )r[   r   r   r;   rZ   r8   	file_pathrK   good_dirnamebad_dirnamerM   rO   )r/   filename_baserK   r   r   s        r   __init__zPthFile.__init__a  s    +%.+dmmT]]C (&WW\\$--9J9JKGGLL8H8HIr   c                    	 t        | j                  d      }	 t        d|       t        d|       t        d| j                  z  |       t        | j                  |       t        | j
                  |       |j                          t        j                  | j                         y # |j                          w xY w)Nra   z#import @bad module namefiler   z	import %s)
ri   r   printrK   r   r   closer   mkdirrM   )r/   FILEs     r   rX   zPthFile.createm  s    		 DNNC(	,48$T"+-D9$##$/$"".JJL
##$ JJLs   A"B+ +B=c                    	 t         j                  j                  | j                        rt        j                  | j                         |rVt
        j                  j                  | j                        | _	        | j                  rOt
        j                  | j                  = n3| j                  r'| j                  t
        j                  | j                  <   t         j                  j                  | j                        rt        j                  | j                         t         j                  j                  | j                        r t        j                  | j                         y y r   )r   r   rE   r   rf   r   rL   getrK   imported_modulerM   rmdirrO   )r/   rU   s     r   rW   zPthFile.cleanup  s    	% 77>>$..)IIdnn%#&;;??4==#AD ##KK.##-1-A-ADMM*77>>$,,-HHT''(77>>$++,HHT&&' -r   N)F)r   r   r   r   r   rX   rW   r   r   r   rV   rV   ^  s    9%+f!.G
J%,(r   rV   c                   0   e Zd Z	 d Zd Zd Zd Z ej                  d      d        Z	d Z
d Zd	 Zd
 Z ej                   eej"                  d      d      ej&                  j)                  d      ej&                  j*                  d                      Zy)ImportSideEffectTestsc                 6    	 t         j                  d d  | _        y r   )r   r   r$   r.   s    r   r0   zImportSideEffectTests.setUp  s    %r   c                 @    	 | j                   t        j                  d d  y r   )r$   r   r   r.   s    r   r4   zImportSideEffectTests.tearDown  s    mmr   c                     	 d t         j                  d   _        t        j                          | j                  t         j                  d   j                         y )Ntest)r   rL   
__cached__r   	abs_pathsassertIsNoner.   s    r   test_abs_paths_cached_Nonez0ImportSideEffectTests.test_abs_paths_cached_None  sA    	 *.F&#++f-889r   c                     t        j                          t               }t        j                  D ]%  }| j                  ||       |j                  |       ' y r   )r   removeduppathsr\   r   r   r   add)r/   
seen_pathsr   s      r   test_no_duplicate_pathsz-ImportSideEffectTests.test_no_duplicate_paths  sF     	U
HH 	!DT:.NN4 	!r   ztest not implementedc                      y r   r   r.   s    r   test_add_build_dirz(ImportSideEffectTests.test_add_build_dir  s    
 	r   c                     | j                  t        t        d             | j                  t        t        d             y )Nquitexitr   hasattrbuiltinsr.   s    r   test_setting_quitz'ImportSideEffectTests.test_setting_quit  s(    &12&12r   c                     | j                  t        t        d             | j                  t        t        d             | j                  t        t        d             y )N	copyrightcreditslicenser	  r.   s    r   test_setting_copyrightz,ImportSideEffectTests.test_setting_copyright  s;    +67)45)45r   c                 B    | j                  t        t        d             y )Nhelpr	  r.   s    r   test_setting_helpz'ImportSideEffectTests.test_setting_help  s    &12r   c                 t    dt         j                  vr	 dd l}| j                  d       y y # t        $ r Y y w xY w)Nsitecustomizer   z(sitecustomize not imported automatically)r   rL   r  failImportError)r/   r  s     r   test_sitecustomize_executedz1ImportSideEffectTests.test_sitecustomize_executed  s?    #++-F$ 		DE .  s   + 	77HTTPSHandlerz$need SSL support to download licensenetworkc                 R   t         j                  j                         d   }t        j                  j                  |d      }| j                  t        j                  j                         	 t        j                  |      5  t        j                  j                  |      5 }|j                         }d d d        d d d        | j                  dd|z          y # 1 sw Y   )xY w# 1 sw Y   -xY w# t        j                  j                  $ r}|j                  }Y d }~^d }~ww xY w)NrC   HEAD)method   zCan't find )msg)r  _Printer__dataspliturllibrequestRequestrj   
urlcleanupr   transient_interneturlopengetcodeerror	HTTPErrorcoder:   )r/   urlreqdatar,  es         r   test_license_exists_at_urlz0ImportSideEffectTests.test_license_exists_at_url  s     $$**,Q/nn$$S$8112	11#6 *^^++C0 *D<<>D**
 	s(;<	* ** * ||%% 	66D	sH   -C3  C'"C3C';C3 C$	 C''C0,C3 3D&D!!D&N)r   r   r   r0   r4   r   r  r   skipr  r  r  r  r  r   r
  r#  r$  r   r   requires_resourcesystem_must_validate_certr1  r   r   r   r   r     s    2$$	:! X]])* +3
63F X@?A	\\##I.	\\++= , /A=r   r   c                       e Zd Z ej                         d        Z ej                         d        Z ej                         d        Z ej                         d        Zy)StartupImportTestsc           	      X   t        j                  t        j                  dddddgt         j                  dd      }|j                         d	   }| j                  |j                  d	t        |             t        j                  |      }|D ]k  }t        j                  t        j                  j                  t        j                  |      d
            }|sL| j!                  dt#        |       d|        m t        j                  t        j                  ddddddgt         j                  t         j                  dd      }|j                         \  }}| j                  |j                  d	||f       t        j                  |      }| j%                  d|       h d}| j'                  |j)                  |      |       | j+                  d||       | j+                  d||       h dj-                  t        j.                        }	| j'                  |j)                  |	      |       y )N-Xutf8-Ir   z!import sys; print(repr(sys.path))rb   surrogateescape)stdoutrd   errorsr   z*.pthzfound z .pth files in: z-vz#import sys; print(set(sys.modules)))r<  r   rd   r=  r   >   
re._parserre._compilerre._constantsrw   _srelocalecopyreg>
   heapqtypeskeywordreprlibweakrefoperator	functools	itertoolscollections_collections)r   Popenr   r   PIPEcommunicater:   
returncodereprastliteral_evalglobr   r   r8   rx   skipTestr   rF   rN   intersectionr   
differencebuiltin_module_names)
r/   popenr<  isolated_pathsr   	pth_filesr   rL   re_modscollection_modss
             r   test_startup_importsz'StartupImportTests.test_startup_imports  s      #..$"&(K"M(2*1(9	;
 ""$Q'))1d6l;))&1
 # 	OD		"'',,t{{4/@'"JKIs9~&66FtfMN	O   #..$d"&(M"O(2(2*1(9; **,))1vv.>?""6*fg& P--g6? 	7F3 	GV4 'Js'?'?@ 	 	--o>Gr   c                     t        j                  t        j                  ddg      j	                         }| j                  |d       y )Nr   9import sys; sys.exit(hasattr(sys, "__interactivehook__"))z''__interactivehook__' not added by siter   rN  r   r   waitr   r/   rs     r   test_startup_interactivehookz/StartupImportTests.test_startup_interactivehook  s=    cnndGI JJN$& 	
DEr   c                     t        j                  t        j                  dddg      j	                         }| j                  |d       y )Nr:  r   ra  z,'__interactivehook__' added in isolated mode)r   rN  r   r   rc  rN   rd  s     r   %test_startup_interactivehook_isolatedz8StartupImportTests.test_startup_interactivehook_isolated#  sC     cnndDGI JJN$& 	
JKr   c                     t        j                  t        j                  dddg      j	                         }| j                  |d       y )Nr:  r   zYimport site, sys; site.enablerlcompleter(); sys.exit(hasattr(sys, "__interactivehook__"))z6'__interactivehook__' not added by enablerlcompleter()rb  rd  s     r   .test_startup_interactivehook_isolated_explicitzAStartupImportTests.test_startup_interactivehook_isolated_explicit*  sC     cnndDgi jjnjnjp 	
STr   N)	r   r   r   r   r   r_  rf  rh  rj  r   r   r   r6  r6    s     W  "0H #0Hd !W  "F #F
 !W  "L #L !W  "U #Ur   r6  c                       e Zd Zej                  dk(  rd
dZnd
dZd Z ej                         d        Z	 ej                         d        Z
 ej                         d        Z ej                         d        Zy	)_pthFileTestswin32c           
         dd l }t        j                         }| j                  t        j
                  |       t        j                  j                  |t        j                  j                  t        j                        d         }|j                  t        j                        }t        j                  j                  |t        j                  j                  |      d         }t        j                  t        j                  |       t        j                  ||       t!        j                   t        j                  j                  t        j                  j                  |      d   d            D ]V  }t        j                  |t        j                  j                  |t        j                  j                  |      d                X |r&t        j                  j#                  |      d   dz   }	n%t        j                  j#                  |      d   dz   }	t%        |	dd      5 }
|D ]  }t'        ||
        	 d d d        |S # 1 sw Y   |S xY w)	Nr   rC   zvcruntime*.dll._pthra   r9  rc   r   )_winapitempfilemkdtemprj   r   rmtreer   r   r8   r"  r   r   GetModuleFileName	dllhandleshutilr
   rU  splitextri   r   )r/   linesexe_pthrp  temp_direxe_filedll_src_filedll_filefn	_pth_fileflines               r   _create_underpth_exez"_pthFileTests._create_underpth_exe4  s   '')HOOI,,h7ww||HbggmmCNN.KA.NOH"44S]]CLww||HbggmmL.I!.LMHKK1KKh/iiRWW]]<-H-KM] ^_ NBXrww}}R7H7K LMNGG,,X6q9GC	GG,,X6q9GC	iv6 (!! (D$Q'(( O( Os   'IIc                    |st        j                  d      t        j                         }| j	                  t
        j                  |       t        j                  j                  |t        j                  j                  t        j                        d         }t        j                  t        j                  |       |dz   }t        |d      5 }|D ]  }t        ||        	 d d d        |S # 1 sw Y   |S xY w)Nz1library ._pth file not supported on this platformrC   ro  ra   r   )r   r   rq  rr  rj   r   rs  r   r   r8   r"  r   r   symlinkri   r   )r/   rx  ry  rz  r{  r  r  r  s           r   r  z"_pthFileTests._create_underpth_exeH  s    ''([\\'')HOOI,,h7ww||HbggmmCNN.KA.NOHJJs~~x0 7*Ii% (! (D$Q'(( O( Os   C//C9c                     g }|D ][  }|r|d   dk(  rt         j                  j                  t         j                  j                  ||            }|j	                  |       ] |S )Nr   #)r   r   r;   r8   append)r/   
sys_prefixrx  r$   r  abs_paths         r   "_calc_sys_path_for_underpth_nositez0_pthFileTests._calc_sys_path_for_underpth_nositeU  sZ     	&D47c>wwrww||J'EFHOOH%		&
 r   c                    t         j                  j                  }t        j                  j                  t        j                        }ddgt        j                  dd}| j                  |      }| j                  t        j                  j                  |      |      }t        j                  |ddddgd	d
      }|j                         j                  d      }| j                  |d       | j                  ||d       y )Nz#.z# ..r^   z..r8  r9  r   Cimport sys; print("\n".join(sys.path) if sys.flags.no_site else "")rb   r;  )rd   r=  r   sys.flags.no_site was Falsesys.path is incorrect)r   r   
STDLIB_DIRr   r   dirnamer   r   r  r  r   check_outputrstripr"  r   r:   )r/   libpath
exe_prefix	pth_linesr{  r$   outputactual_sys_paths           r   test_underpth_basicz!_pthFileTests.test_underpth_basic^  s    ,,))WW__S^^4
68CHH8c848	,,Y7::GGOOH% (((D&$R*
$57 !--///5)FG#	
r   c                    t         j                  j                  }t        j                  j                  t        j                        }dgt        d      D cg c]  }| c}dd}| j                  |      }| j                  t        j                  j                  |      |      }t        j                  j                         }d|d<   dj                  |t        j                  t        j                  d            |d<   t!        j"                  |d	d
g|dd      }|j%                         j'                  d      }	| j)                  |	d       | j+                  |	|d       y c c}w )Nfake-path-namer  r   	# commentfrom-env
PYTHONPATHz{}{}{}PATHr   r  rb   r;  )r   rd   r=  r   r  r  )r   r   r  r   r   r  r   r   ranger  r  r   r
   formatpathsepgetenvr   r  r  r"  r   r:   )
r/   r  r  _r  r{  r$   r   r  r  s
             r   test_underpth_nosite_filez'_pthFileTests.test_underpth_nosite_files  s8   ,,))WW__S^^4

$Sz*!g*
 
 	
	 ,,Y7::GGOOH% jjoo&Looj"**bii>OPF(((DR*
W->@ !--///5)FG#	
# +s   	E#c                    t         j                  j                  }t        j                  j                  t        j                        }| j                  dgt        d      D cg c]  }| c}ddd      }t        j                  j                  |      }t        j                  j                         }d|d<   dj                  |t        j                  d	            |d	<   t        j                  |d
dt        j                  j!                  |d      d|dt        j                  j!                  |d      dg|      }| j#                  |d       y c c}w )Nr  r  r   r  import siter  r  {};{}r  r   /import sys; sys.exit(not sys.flags.no_site and  in sys.path and L not in sys.path and all("\r" not in p and "\n" not in p for p in sys.path))r   r  r   r   r  r   r   r  r   r   r  r  r   r
   r  r  r   r   r8   r   r/   r  r  r  r{  r  r   r   s           r   test_underpth_filez _pthFileTests.test_underpth_file  s    ,,))WW__S^^4
,,.
$Sz*!g*.
 .
 	.

 .
  WW__X.
jjoo&LnnZ61BCF__h Z)9:Z4  	34# +s   "	E
c                    t         j                  j                  }t        j                  j                  t        j                        }| j                  dgt        d      D cg c]  }| c}dddd      }t        j                  j                  |      }t        j                  j                         }d|d	<   d
j                  |t        j                  d            |d<   t        j                  |ddt        j                  j!                  |d      d|dt        j                  j!                  |d      dg|      }| j#                  |d       y c c}w )Nr  r  r   r  r  F)ry  r  r  r  r  r   r  r  r  r   r  r  r  s           r   test_underpth_dll_filez$_pthFileTests.test_underpth_dll_file  s*   ,,))WW__S^^4
,,.
$Sz*!g*.
 .
 	.

 .
  -  WW__X.
jjoo&LnnZ61BCF__h Z)9:Z4  	34# +s   "	E
N)T)r   r   r   r   r   r  r  r   r   r  r  r  r  r   r   r   rl  rl  1  s    
||w	(	 !W  "
 #
( !W  "
 #
8 !W  "5 #50 !W  "5 #5r   rl  __main__),r   test.supportr   r   r   r   r   test.support.os_helperr   r   rS  r  rU  r   r   rw   rv  r   r   r*   rq  urllib.errorr#  urllib.requestr	   r
   flagsno_siter   r   r   r   r   r   r    TestCaser"   r   rV   r   r6  rl  r   mainr   r   r   <module>r     s      " & ( > 
   	 	 	   
      
 99
(

8
99  t+=]=8,, ]=@	5(f 5(nP=H-- P=fGU** GURO5H%% O5d zHMMO r   