o
    cil                     @   s   d 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m	Z	m
Z
 ddlmZ ddlmZ ddlmZ ddlmZ d	d
 Zejjedddd Zejjedddd Zdd ZG dd dZdS )zTesting decorators module    N)assert_equal)doctest_skip_parserrun_in_parallelassert_stacklevel)testing)is_wasm)expected_warningswarnc                  C   s6  dd } G dd d}d}|| _ ||_ dadat| }t|}| |u s%J ||u s+J d}t|j | t|j | dada|| _ ||_ t| }t|}| |u sQJ d	}t|j | t|j | b|| _ ||_ tt t|  W d    n1 szw   Y  tt t| W d    d S 1 sw   Y  d S )
Nc                   S   s   d S N r   r   r   l/var/www/addictedbytheproject.nl/epg/venv/lib/python3.10/site-packages/skimage/_shared/tests/test_testing.pyf   s   ztest_skipper.<locals>.fc                   @   s   e Zd Zdd ZdS )ztest_skipper.<locals>.cc                 S   s
   d| _ d S )NzI think, therefore...)me)selfr   r   r   __init__   s   
z test_skipper.<locals>.c.__init__N)__name__
__module____qualname__r   r   r   r   r   c   s    r   z Header

            >>> something # skip if not HAVE_AMODULE
            >>> something + else
            >>> a = 1 # skip if not HAVE_BMODULE
            >>> something2   # skip if HAVE_AMODULE
        FTz Header

            >>> something # doctest: +SKIP
            >>> something + else
            >>> a = 1
            >>> something2
        z Header

            >>> something
            >>> something + else
            >>> a = 1 # doctest: +SKIP
            >>> something2   # doctest: +SKIP
        )__doc__HAVE_AMODULEHAVE_BMODULEr   r   r   raises	NameError)r   r   	docstringf2c2expectedr   r   r   test_skipper   sB   

"r   zCannot start threads in WASM)reasonc                     s   g  t   fdd} |   t dksJ t dd fdd}|  t dks,J t dd fd	d
}|  t dksBJ d S )Nc                           d  d S r   appendr   stater   r   change_state1Y      z+test_run_in_parallel.<locals>.change_state1      )num_threadsc                      r!   r   r"   r   r$   r   r   change_state2`   r'   z+test_run_in_parallel.<locals>.change_state2   c                      r!   r   r"   r   r$   r   r   change_state3g   r'   z+test_run_in_parallel.<locals>.change_state3   )r   len)r&   r+   r-   r   r$   r   test_run_in_parallelU   s   r0   z Cannot run parallel code in WASMc                  C   s\   t  dd } tdg |   W d    n1 sw   Y  t dgddd }|  d S )Nc                   S      t ddd d S NTest warning for test parallelr(   
stacklevelr	   r   r   r   r   change_state_warns_failsq      z7test_parallel_warning.<locals>.change_state_warns_failsr3   )warnings_matchingc                   S   r1   r2   r	   r   r   r   r   change_state_warns_passesx   r7   z8test_parallel_warning.<locals>.change_state_warns_passes)r   r   )r6   r9   r   r   r   test_parallel_warningo   s   



r:   c                	   C   sp   t dg) t d  td W d    n1 sw   Y  W d    d S W d    d S 1 s1w   Y  d S )NzExpected warnings test)r   r
   r   r   r   r   test_expected_warnings_noop   s   

"r;   c                   @   s6   e Zd Zdd Zdd Zejdddgdd	 Zd
S )Test_assert_stacklevelc                 O   s   t j|i | d S r   )warningsr
   )r   argskwargsr   r   r   raise_warning   s   z$Test_assert_stacklevel.raise_warningc                 C   sJ   t jtdd}| jdtdd W d    n1 sw   Y  t| d S )Npassesmatchr(   r4   )pytestwarnsUserWarningr@   r   )r   recordr   r   r   test_correct_stacklevel   s   z.Test_assert_stacklevel.test_correct_stacklevellevelr)   r,   c                 C   s   t jtdd}| jdt|d W d    n1 sw   Y  t jd }dtdt	 d|  }t j
t|d t|dd	 W d    d S 1 sLw   Y  d S )
NwrongrB   r4   r(   z.*z
Expected: :)offset)rD   rE   rF   r@   inspectcurrentframef_linenoreescape__file__r   AssertionErrorr   )r   rI   rG   line_numberregexr   r   r   test_wrong_stacklevel   s   "z,Test_assert_stacklevel.test_wrong_stacklevelN)	r   r   r   r@   rH   rD   markparametrizerW   r   r   r   r   r<      s
    r<   )r   rN   rQ   r=   rD   numpy.testingr   skimage._shared.testingr   r   r   skimage._sharedr   "skimage._shared._dependency_checksr   skimage._shared._warningsr   r
   r   rX   skipifr0   r:   r;   r<   r   r   r   r   <module>   s$    @

