o
    
i                     @   s  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	 e	 Z
dd Zdd Zdd	 Zd
d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zejdddgdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zejjd)d*d+d, Zd-d. Z dS )/    N)Printer)MESSAGESNO_UTF8supports_ansic                  C   s  t dd} d}| |}| |}| |}| |}| ||ks$J trLtsL|d|ks1J |d|ks:J |d|ksCJ |d|ksLJ trttrt|d|ksYJ |d	|ksbJ |d
|kskJ |d|kstJ tsts|d|ksJ |d|ksJ |d|ksJ |d|ksJ tstr|d|ksJ |d|ksJ |d|ksJ |d|ksJ d S d S d S )NTno_printThis is a test.u   [38;5;2m✔ {}[0mu   [38;5;1m✘ {}[0mu   [38;5;3m⚠ {}[0mu   [38;5;4mℹ {}[0mz[38;5;2m[+] {}[0mz[38;5;1m[x] {}[0mz[38;5;3m[!] {}[0mz[38;5;4m[i] {}[0mu   ✔ {}u   ✘ {}u   ⚠ {}u   ℹ {}z[+] {}z[x] {}z[!] {}z[i] {})	r   goodfailwarninfotextSUPPORTS_ANSIr   format)pr   r	   r
   r   r    r   M/home/ubuntu/.local/lib/python3.10/site-packages/wasabi/tests/test_printer.pytest_printer   s:   




r   c                  C   s6   t  } d}| | | | | | | | d S )Nr   )r   r	   r
   r   r   r   r   r   r   r   test_printer_print+   s   


r   c                  C   s.   t ddd} | d}td|}|sJ d S )NT)r   	timestampzHello worldz6^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2})r   r   rematch)r   resultmatchesr   r   r   test_printer_print_timestamp4   s   
r   c                  C   sn   t ddd} d}| ||ksJ | ||ksJ | ||ks#J | ||ks,J | ||ks5J d S )NTFr   prettyr   )r   r	   r
   r   r   r   r   r   r   r   test_printer_no_pretty;   s   r   c                  C   s   ddd} ddd}t d| |d}d	}|j|d
dd}||}tr6ts6|d|ks-J |d|ks6J trLtrL|d|ksCJ |d|ksLJ tsbtsb|d|ksYJ |d|ksbJ tsxtrz|d|ksoJ |d|ks|J d S d S d S )N   c   )yellowpurpleu   ⚠️?)r   questionT)r   colorsiconsr   r"   r$   )coloriconz[38;5;99m? {}[0mu   [38;5;3m⚠️ {}[0mz[38;5;3m?? {}[0mz? {}u	   ⚠️ {}z?? {})r   r   r   r   r   r   )r%   r&   r   r   purple_questionwarningr   r   r   test_printer_customE   s(   


r+   c                  C   s@   t dd} d}| j|dd}tr|dksJ d S |dksJ d S )NTr   This is a text.r   )r'   z[38;5;220mThis is a text.[0m)r   r   r   r   r   r   r   r   r   test_color_as_intZ   s   
r.   c                  C   H   t dd} d}| j|dd}t| tr|dksJ d S |dks"J d S )NTr   r,   redbg_colorz[48;5;1mThis is a text.[0mr   r   printr   r-   r   r   r   test_bg_colord      
r5   c                  C   r/   )NTr   r,   r   r1   z[48;5;220mThis is a text.[0mr3   r-   r   r   r   test_bg_color_as_into   r6   r7   c                  C   sJ   t dd} d}| j|ddd}t| tr|dksJ d S |dks#J d S )NTr   r,   greenr!   )r'   r2   z#[38;5;2;48;5;3mThis is a text.[0mr3   r-   r   r   r   test_color_and_bc_colorz   s   
r9   c                  C   s   t  } d}tdD ]}| | q	tdD ]}| | qtdD ]}| | q!| jtj dks3J | jtj dks=J | jtj	 dksGJ d S )Nr            )
r   ranger	   r
   r   countsr   GOODFAILWARN)r   r   ir   r   r   test_printer_counts   s   rC   c                  C   sB   t ddd} d}| ||ksJ | j|ddd|ksJ d S )NTFr   r   )spacedz
{}
)r   r	   r   r   r   r   r   test_printer_spaced   s    rE   c                  C   s   t ddd} |  dk | ddk | jdddd	k | d
dks%J tt | jddd W d    d S 1 s=w   Y  d S )N   T)line_maxr   z[1m
================[0mtestz[1m
====== test ======[0m*)charz[1m
****** test ******[0mz)This is a very long text, it is very longz4[1m
 This is a very long text, it is very long [0mz~.)r   dividerpytestraises
ValueErrorr   r   r   r   test_printer_divider   s   "rP   hide_animationFTc                 C   s   t | d}td |d td W d    n1 sw   Y  |d |d td W d    n1 s=w   Y  |d |d td W d    n1 s\w   Y  |d d S )	N)rQ   

Loading...r;   Success!zSomething else...r:   zYo!)r   r4   loadingtimesleepr	   )rQ   r   r   r   r   test_printer_loading   s   


rX   c                  C   s>   dd } t t |   W d    d S 1 sw   Y  d S )Nc                  S   s4   t  } td |   td1 sw   Y  d S )NrR   This is an error.)r   r4   rU   	ExceptionrO   r   r   r   loading_with_exception   s
   
zEtest_printer_loading_raises_exception.<locals>.loading_with_exception)rL   rM   rZ   )r[   r   r   r   %test_printer_loading_raises_exception   s   "r\   c                  C   sL   t dd} | d td W d    n1 sw   Y  | d d S )NTr   rS   r;   rT   )r   rU   rV   rW   r	   rO   r   r   r   test_printer_loading_no_print   s
   
r]   c                  C   s:   d} d}dt j|< tdd}|| dv sJ t j|= d S )Nr   WASABI_LOG_FRIENDLYTrueTr   u   ✔ This is a test.z[+] This is a test.)osenvironr   r	   r   ENV_LOG_FRIENDLYr   r   r   r   test_printer_log_friendly   s   

re   c                  C   sJ   d} d}dt j|< tddd}|| dv sJ t||  t j|= d S )Nr   CUSTOM_LOG_FRIENDLYr_   TCUSTOM)r   
env_prefixr`   )ra   rb   r   r	   r4   rc   r   r   r    test_printer_log_friendly_prefix   s   
ri   z1Now seems to raise TypeError: readonly attribute?)reasonc                 C   s   |  dd t }dS )zvTest that printer works even if sys.stdout.encoding is set to None. This
    previously caused a very confusing error.zsys.stdout.encodingN)setattrr   )monkeypatchr   r   r   r   test_printer_none_encoding   s   
rm   c                  C   sp   d} t ddd}tt}|j| dd W d   n1 sw   Y  t|j t|  d | ks6J dS )zfTest that the printer raises if a non-zero exit code is provided, even
    if no_print is set to True.rY   TFr   )exitsN)	r   rL   rM   
SystemExitr
   strvaluestriplen)errr   er   r   r   #test_printer_no_print_raise_on_exit   s   (rv   )!ra   r   rV   rL   wasabi.printerr   wasabi.utilr   r   r   r   r   r   r   r   r+   r.   r5   r7   r9   rC   rE   rP   markparametrizerX   r\   r]   re   ri   skiprm   rv   r   r   r   r   <module>   s8    	


	

