+
    h                     Z    R t ^ RIt^ RIt^ RIt^ RIt^ RIt ! R R4      t ! R R4      tR# )zdevelop testsNc                   B   a  ] tR t^t o R t]R 4       tR tR tRt	V t
R# )TestSandboxc                    \         P                  P                  \        V4      4      ;_uu_ 4        V P	                  \
        P                  4       R R R 4       R #   + '       g   i     R # ; iN)
setuptoolssandboxDirectorySandboxstr_file_writerosdevnull)selftmpdirs   &&?/usr/lib/python3/dist-packages/setuptools/tests/test_sandbox.pytest_devnullTestSandbox.test_devnull   s>    00V==bjj) >===s    AA,	c                   a  V 3R  lpV# )c                     < \        SR RR7      ;_uu_ 4       p V P                  R4       RRR4       R#   + '       g   i     R# ; i)wutf-8encodingxxxN)openwrite)fpaths    r   do_write*TestSandbox._file_writer.<locals>.do_write   s.    dC'22a 3222s	   4A	 )r   r   s   f r   r
   TestSandbox._file_writer   s    	     c                    \         P                  ! \        R4      p\        P                  ! R4      p\
        P                  P                  V\        V4      4       VP                  R8X  g   Q hR# )zD
It should be possible to execute a setup.py with a Byte Order Mark
zscript-with-bom.py	namespacepassedN)
pkg_resourcesresource_filename__name__types
ModuleTyper   r   	_execfilevarsresult)r   targetr#   s   &  r   test_setup_py_with_BOM"TestSandbox.test_setup_py_with_BOM   sU     00;OP$$[1	$$VT)_=8+++r!   c                   VR ,          pVP                  R4      ;_uu_ 4       pVP                  R4       RRR4       \        P                  P	                  \        V4      \        4       4       R#   + '       g   i     LC; i)zsetup.pywbs   "degenerate script"
N)r   r   r   r   r*   r	   globals)r   r   setup_pystreams   &&  r   test_setup_py_with_CRLF#TestSandbox.test_setup_py_with_CRLF"   sT    J&]]4  FLL34 !$$S]GI> ! s   A00B 	r   N)r'   
__module____qualname____firstlineno__r   staticmethodr
   r.   r5   __static_attributes____classdictcell____classdict__s   @r   r   r      s-     *  ,? ?r!   r   c                   J   a  ] tR t^)t o R tR tR tR tR tR t	R t
RtV tR	# )
TestExceptionSaverc                    \         P                  P                  4       ;_uu_ 4        \        R 4      h  + '       g   i     R# ; idetailsN)r   r   ExceptionSaver
ValueErrorr   s   &r   test_exception_trapped)TestExceptionSaver.test_exception_trapped*   s.    ..00Y'' 100s	   3A	c                   \         P                  P                  4       ;_uu_ 4       p\        R 4      h  + '       g   i     M; i\        P
                  ! \        4      ;_uu_ 4       pXP                  4        RRR4       M  + '       g   i     M; i\        XP                  \        4      '       g   Q h\        TP                  4      R 8X  g   Q hR# rB   )
r   r   rD   rE   pytestraisesresume
isinstancevaluer	   )r   	saved_exccaughts   &  r   test_exception_resumed)TestExceptionSaver.test_exception_resumed.   s    ..00IY'' 10 ]]:&&& '&&& &,,
33336<< I---s   3A	(BB	c                   \        R 4      p\        P                  P                  4       ;_uu_ 4       pVh  + '       g   i     M; i\        P
                  ! \         4      ;_uu_ 4       pXP                  4        RRR4       M  + '       g   i     M; i\        XP                  \         4      '       g   Q hTP                  TJg   Q hR# rB   )	rE   r   r   rD   rJ   rK   rL   rM   rN   )r   orig_excrO   rP   s   &   r   test_exception_reconstructed/TestExceptionSaver.test_exception_reconstructed8   s    i(..00IN 10 ]]:&&& '&&& &,,
3333||8+++s   5A	*BB	c                    \         P                  P                  4       ;_uu_ 4       p R R R 4       XP                  4        R #   + '       g   i     L"; ir   )r   r   rD   rL   )r   rO   s   & r    test_no_exception_passes_quietly3TestExceptionSaver.test_no_exception_passes_quietlyD   s8    ..00I 1 	 10s   AA	c                    ! R  R\         4      p\        P                  P                  4       ;_uu_ 4       pV! R4      h  + '       g   i     M; i\        P
                  ! \        P                  P                  4      ;_uu_ 4       pXP                  4        RRR4       M  + '       g   i     M; i\        XP                  4      R8X  g   Q hR# )c                   6   a  ] tR t^Kt o RtV 3R lR ltRtV tR# )FTestExceptionSaver.test_unpickleable_exception.<locals>.CantPickleThisz:This Exception is unpickleable because it's not in globalsc                    < V ^8  d   QhRS[ /# )   return)r	   )formatr>   s   "r   __annotate__STestExceptionSaver.test_unpickleable_exception.<locals>.CantPickleThis.__annotate__N   s     6 6# 6r!   c                "    R V P                   : 2# )CantPickleThis)argsrF   s   &r   __repr__OTestExceptionSaver.test_unpickleable_exception.<locals>.CantPickleThis.__repr__N   s    '		}55r!   r   N)r'   r7   r8   r9   __doc__rf   r;   r<   r=   s   @r   rd   r\   K   s     H6 6r!   rd   detailNzCantPickleThis('detail',))
	Exceptionr   r   rD   rJ   rK   UnpickleableExceptionrL   r	   rN   )r   rd   rO   rP   s   &   r   test_unpickleable_exception.TestExceptionSaver.test_unpickleable_exceptionJ   s    	6Y 	6 ..00I ** 10 ]]:--CCDD EDDD 6<< $????s   	?A	B""B2	c           	         ! R R\         4      p\        P                  ! \        P                  P
                  4      ;_uu_ 4       p\        P                  P                  4       ;_uu_ 4        \        P                  P                  4        Vh  + '       g   i     M; i RRR4       M  + '       g   i     M; iXP                  P                  w  pTR8X  g   Q hR# )z
As revealed in #440, an infinite recursion can occur if an unpickleable
exception while setuptools is hidden. Ensure this doesn't happen.
c                       ] tR t^_tRtRtR# )aTestExceptionSaver.test_unpickleable_exception_when_hiding_setuptools.<locals>.ExceptionUnderTestz-
An unpickleable exception (not in globals).
r   N)r'   r7   r8   r9   rh   r;   r   r!   r   ExceptionUnderTestrp   _   s    r!   rq   NzExceptionUnderTest())
rj   rJ   rK   r   r   rk   save_moduleshide_setuptoolsrN   re   )r   rq   rP   msgs   &   r   2test_unpickleable_exception_when_hiding_setuptoolsETestExceptionSaver.test_unpickleable_exception_when_hiding_setuptoolsY   s    	 	
 ]]:--CCDD##0022""224(( 322 EDDD
 "",,,,s   'B+-!B	BB++B;	c                   R p\         P                  ! \        P                  P                  4      ;_uu_ 4       p\        P                  P                  4       ;_uu_ 4        \        P                  P                  4        \        P                  P                  \        V4      4      ;_uu_ 4        V! 4        RRR4       RRR4       RRR4       XP                  P                  w  rEpVR8X  g   Q hVR8X  g   Q hVRR/8X  g   Q h\        VP                  4      pRV9   g   Q hRV9   g   Q hRV9   g   Q hR#   + '       g   i     L; i  + '       g   i     L; i  + '       g   i     L; i)	z
When in a sandbox with setuptools hidden, a SandboxViolation
should reflect a proper exception and not be wrapped in
an UnpickleableException.
c                 n    \        RRRR7      ;_uu_ 4         RRR4       R#   + '       g   i     R# ; i)z9Trigger a SandboxViolation by writing outside the sandbox/etc/foor   r   r   N)r   r   r!   r   
write_fileVTestExceptionSaver.test_sandbox_violation_raised_hiding_setuptools.<locals>.write_files   s#    j#88 9888s   #4	Nr   r   r   z('/etc/foo', 'w')z{'encoding': 'utf-8'})ry   r   )rJ   rK   r   r   SandboxViolationrr   rs   r   r	   rN   re   )r   r   rz   rP   cmdre   kwargsrt   s   &&      r   /test_sandbox_violation_raised_hiding_setuptoolsBTestExceptionSaver.test_sandbox_violation_raised_hiding_setuptoolsl   s   	
 ]]:-->>??6##0022""224''88VEEL F 3 @ #LL--6f}}((((*g....&,,}}"c)))&#--- FE 32 @?s<   'E!AE	0D88E	 E8EE	EEE.	r   N)r'   r7   r8   r9   rG   rQ   rU   rX   rl   ru   r   r;   r<   r=   s   @r   r@   r@   )   s.     (.
,@-&. .r!   r@   )	rh   r   r(   rJ   r%   setuptools.sandboxr   r   r@   r   r!   r   <module>r      s-     	    ? ?:]. ].r!   