o
    Õjz  ã                   @   sŽ   d 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	 ddlm
Z
 G dd„ dejƒZejdd	„ ƒZejZejZejZdS )
z"Utilities for Python Fire's tests.é    N)Úmock)Úcore)Útracec                   @   s0   e Zd ZdZejd	dd„ƒZejd
dd„ƒZdS )ÚBaseTestCasez'Shared test case for Python Fire tests.ú.*Tc           
   
   c   s<   t  ¡ }t  ¡ }zGtj td|¡# tj td|¡ dV  W d  ƒ n1 s)w   Y  W d  ƒ n1 s8w   Y  W |sPtj | ¡ ¡ tj	 | ¡ ¡ n|sdtj | ¡ ¡ tj	 | ¡ ¡ w w d||fd||ffD ],\}}}| ¡ }	|du r‡|	r†t
d||	f ƒ‚qot ||	tjtjB ¡s›t
d||	|f ƒ‚qodS )aÉ  Asserts that the context generates stdout and stderr matching regexps.

    Note: If wrapped code raises an exception, stdout and stderr will not be
      checked.

    Args:
      stdout: (str) regexp to match against stdout (None will check no stdout)
      stderr: (str) regexp to match against stderr (None will check no stderr)
      capture: (bool, default True) do not bubble up stdout or stderr

    Yields:
      Yields to the wrapped context.
    ÚstdoutÚstderrNz%s: Expected no output. Got: %rz%s: Expected %r to match %r)ÚioÚStringIOr   ÚpatchÚobjectÚsysr   ÚwriteÚgetvaluer   ÚAssertionErrorÚreÚsearchÚDOTALLÚ	MULTILINE)
Úselfr   r   ÚcaptureZ	stdout_fpZ	stderr_fpÚnameÚregexpÚfpÚvalue© r   úO/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/fire/testutils.pyÚassertOutputMatches    sF   €ÿ€ÿ€€þþÿÿÿÿÿøz BaseTestCase.assertOutputMatchesc                 c   sÄ    | j |dQ |  tj¡2 zdV  W n$ tjy8 } z|j|kr+td|j|f ƒ‚|  |jtj¡ ‚ d}~ww W d  ƒ n1 sCw   Y  W d  ƒ dS W d  ƒ dS 1 s[w   Y  dS )a^  Asserts that a FireExit error is raised in the context.

    Allows tests to check that Fire's wrapper around SystemExit is raised
    and that a regexp is matched in the output.

    Args:
      code: The status code that the FireExit should contain.
      regexp: stdout must match this regex.

    Yields:
      Yields to the wrapped context.
    )r   NzIncorrect exit code: %r != %r)	r   ZassertRaisesr   ZFireExitÚcoder   ZassertIsInstancer   Z	FireTrace)r   r   r   Úexcr   r   r   ÚassertRaisesFireExitF   s&   €

ÿ€ûÿþÿ"ÿz!BaseTestCase.assertRaisesFireExitN)r   r   T)r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú
contextlibÚcontextmanagerr   r    r   r   r   r   r      s    %r   c              	   c   s8    t  ¡ }t  | ¡ z| V  W t  |¡ dS t  |¡ w )z>Context manager to mock a directory change and revert on exit.N)ÚosÚgetcwdÚchdir)Ú	directoryZcwdirr   r   r   ÚChangeDirectory`   s   €
r+   )r$   r%   r	   r'   r   r   Zunittestr   Úfirer   r   ZTestCaser   r&   r+   ÚmainÚskipZskipIfr   r   r   r   Ú<module>   s    C

