
    9
g                     X    d Z ddlZddlZddlZddlZddlZ G d d      Z G d d      Zy)zdevelop tests    Nc                   .    e Zd Zd Zed        Zd Zd Zy)TestSandboxc                     t         j                  j                  t        |            5  | j	                  t
        j                         d d d        y # 1 sw Y   y xY wN)
setuptoolssandboxDirectorySandboxstr_file_writerosdevnull)selftmpdirs     ]/var/www/api/v1/venv_getwork_v1/lib/python3.12/site-packages/setuptools/tests/test_sandbox.pytest_devnullzTestSandbox.test_devnull   s8    00V=bjj) >==s    AAc                       fd}|S )Nc                  n    t        dd      5 } | j                  d       d d d        y # 1 sw Y   y xY w)Nwutf-8encodingxxx)openwrite)fpaths    r   do_writez*TestSandbox._file_writer.<locals>.do_write   s(    dC'2a 322s   +4 )r   r   s   ` r   r   zTestSandbox._file_writer   s    	     c                     t        j                  t        d      }t        j                  d      }t
        j                  j                  |t        |             |j                  dk(  sJ y)zT
        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_BOMz"TestSandbox.test_setup_py_with_BOM   sU     00;OP$$[1	$$VT)_=8+++r   c                     |dz  }|j                  d      5 }|j                  d       d d d        t        j                  j	                  t        |      t                      y # 1 sw Y   ;xY w)Nzsetup.pywbs   "degenerate script"
)r   r   r   r   r(   r
   globals)r   r   setup_pystreams       r   test_setup_py_with_CRLFz#TestSandbox.test_setup_py_with_CRLF"   sQ    J&]]4 FLL34 !$$S]GI> ! s   A##A,N)r%   
__module____qualname__r   staticmethodr   r,   r2   r   r   r   r   r      s%    *  ,?r   r   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestExceptionSaverc                 n    t         j                  j                         5  t        d      # 1 sw Y   y xY wNdetails)r   r   ExceptionSaver
ValueErrorr   s    r   test_exception_trappedz)TestExceptionSaver.test_exception_trapped*   s(    ..0Y'' 10s   +4c                 Z   t         j                  j                         5 }t        d      # 1 sw Y   nxY wt	        j
                  t              5 }j                          d d d        n# 1 sw Y   nxY wt        j                  t              sJ t        |j                        dk(  sJ y r9   )
r   r   r;   r<   pytestraisesresume
isinstancevaluer
   )r   	saved_exccaughts      r   test_exception_resumedz)TestExceptionSaver.test_exception_resumed.   s    ..0IY'' 10 ]]:&& '&& &,,
3336<< I---s   +4A**A3c                 J   t        d      }t        j                  j                         5 }|# 1 sw Y   nxY wt	        j
                  t               5 }j                          d d d        n# 1 sw Y   nxY wt        j                  t               sJ |j                  |usJ y r9   )	r<   r   r   r;   r@   rA   rB   rC   rD   )r   orig_excrE   rF   s       r   test_exception_reconstructedz/TestExceptionSaver.test_exception_reconstructed8   s~    i(..0IN 10 ]]:&& '&& &,,
333||8+++s   -6A,,A5c                     t         j                  j                         5 }	 d d d        j                          y # 1 sw Y   xY wr   )r   r   r;   rB   )r   rE   s     r    test_no_exception_passes_quietlyz3TestExceptionSaver.test_no_exception_passes_quietlyD   s5    ..0I 1 	 10s	   :Ac                 b    G d dt               }t        j                  j                         5 } |d      # 1 sw Y   nxY wt	        j
                  t        j                  j                        5 }j                          d d d        n# 1 sw Y   nxY wt        j                        dk(  sJ y )Nc                       e Zd ZdZdefdZy)FTestExceptionSaver.test_unpickleable_exception.<locals>.CantPickleThisz:This Exception is unpickleable because it's not in globalsreturnc                      d| j                   S )NCantPickleThis)argsr=   s    r   __repr__zOTestExceptionSaver.test_unpickleable_exception.<locals>.CantPickleThis.__repr__N   s    '		}55r   N)r%   r3   r4   __doc__r
   rT   r   r   r   rR   rO   K   s    H6# 6r   rR   detailzCantPickleThis('detail',))
	Exceptionr   r   r;   r@   rA   UnpickleableExceptionrB   r
   rD   )r   rR   rE   rF   s       r   test_unpickleable_exceptionz.TestExceptionSaver.test_unpickleable_exceptionJ   s    	6Y 	6 ..0I ** 10 ]]:--CCD EDD 6<< $????s   	7A 0B

Bc                 ~    G d dt               }t        j                  t        j                  j
                        5 }t        j                  j                         5  t        j                  j                          |# 1 sw Y   nxY w	 ddd       n# 1 sw Y   nxY wj                  j                  \  }|dk(  sJ y)z
        As revealed in #440, an infinite recursion can occur if an unpickleable
        exception while setuptools is hidden. Ensure this doesn't happen.
        c                       e Zd ZdZy)aTestExceptionSaver.test_unpickleable_exception_when_hiding_setuptools.<locals>.ExceptionUnderTestzE
            An unpickleable exception (not in globals).
            N)r%   r3   r4   rU   r   r   r   ExceptionUnderTestr\   _   s    r   r]   NzExceptionUnderTest())
rW   r@   rA   r   r   rX   save_moduleshide_setuptoolsrD   rS   )r   r]   rF   msgs       r   2test_unpickleable_exception_when_hiding_setuptoolszETestExceptionSaver.test_unpickleable_exception_when_hiding_setuptoolsY   s    	 	
 ]]:--CCD##002""224(( 322 EDD
 "",,,,s   B!A==B	BBc                 h   d }t        j                  t        j                  j                        5 }t        j                  j                         5  t        j                  j                          t        j                  j                  t        |            5   |        ddd       ddd       ddd       j                  j                  \  }}}|dk(  sJ |dk(  sJ |ddik(  sJ t        |j                        }d|v sJ d|v sJ d|v sJ y# 1 sw Y   rxY w# 1 sw Y   vxY w# 1 sw Y   zxY w)	z
        When in a sandbox with setuptools hidden, a SandboxViolation
        should reflect a proper exception and not be wrapped in
        an UnpickleableException.
        c                  L    t        ddd      5  	 ddd       y# 1 sw Y   yxY w)z9Trigger a SandboxViolation by writing outside the sandbox/etc/foor   r   r   N)r   r   r   r   
write_filezVTestExceptionSaver.test_sandbox_violation_raised_hiding_setuptools.<locals>.write_files   s    j#8 988s   #Nr   )rd   r   r   r   z('/etc/foo', 'w')z{'encoding': 'utf-8'})r@   rA   r   r   SandboxViolationr^   r_   r	   r
   rD   rS   )r   r   re   rF   cmdrS   kwargsr`   s           r   /test_sandbox_violation_raised_hiding_setuptoolszBTestExceptionSaver.test_sandbox_violation_raised_hiding_setuptoolsl   s   	
 ]]:-->>?6##002""224''88VEL F 3 @ #LL--T6f}}((((*g....&,,}}"c)))&#--- FE 32 @?s<   D(ADDD'D(DDD%	!D((D1N)
r%   r3   r4   r>   rG   rJ   rL   rY   ra   ri   r   r   r   r7   r7   )   s&    (.
,@-&.r   r7   )	rU   r   r&   r@   r#   setuptools.sandboxr   r   r7   r   r   r   <module>rk      s-     	    ? ?:]. ].r   