a
    þd±  ã                   @   sL   d Z ddlZddlZddlmZ ddlmZmZmZm	Z	 G dd„ deƒZ
dS )zTest for object dbé    N)ÚTestBase)Ú
to_hex_shaÚ
to_bin_shaÚNULL_HEX_SHAÚLockedFDc                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú	TestUtilsc                 C   sB   t tƒtksJ ‚tttƒƒdks$J ‚t ttƒƒt d¡ks>J ‚d S )Né   Úascii)r   r   Úlenr   Úencode)Úself© r   ú]/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/gitdb/test/test_util.pyÚtest_basics   s    zTestUtils.test_basicsc                 C   sD   t |dƒ&}| ¡ | d¡ks"J ‚W d   ƒ n1 s60    Y  d S )NÚrbr	   )ÚopenÚreadr   )r   Ú	file_pathÚdataÚfpr   r   r   Ú_cmp_contents   s    zTestUtils._cmp_contentsc              	   C   sX  t  ¡ }d}d}t|dƒ }| | d¡¡ W d   ƒ n1 s@0    Y  z¨t|ƒ}| ¡ }|  t|j	¡ |  t|j
¡ tj |¡rŠJ ‚|jdd}|j|u s¤J ‚tj |¡s´J ‚t || d¡¡ | 	¡  |jd u sÜJ ‚|  ||¡ tj |¡røJ ‚| 
¡  | 	¡  t|ƒ}|jdd}t |t|ƒ¡| d¡ks<J ‚tj |¡sNJ ‚~tj |¡rbJ ‚t|ƒ}t|ƒ}	tj |¡r„J ‚|jddd}
tj |¡s¤J ‚|  t|	j¡ |
 | d¡¡ | 
¡  tj |¡rÜJ ‚|  ||¡ W t |¡ nt |¡ 0 tt  ¡ ƒ}z|jdd W n* tyH   tj | ¡ ¡rDJ ‚Y n0 |  d	¡ d S )
NZhelloZworldÚwbr	   T)ÚwriteF)r   Ústreamzexpected OSError)ÚtempfileÚmktempr   r   r   r   Z_lockfilepathÚassertRaisesÚAssertionErrorÚrollbackÚcommitÚosÚpathÚisfileZ_fdr   r   r
   ÚIOErrorÚremoveÚOSErrorÚexistsZfail)r   Zmy_fileZ	orig_dataZnew_dataZ
my_file_fpZlfdZlockfilepathZwfdZrfdZolfdZ	wfdstreamr   r   r   Útest_lockedfd   sX    . zTestUtils.test_lockedfdN)Ú__name__Ú
__module__Ú__qualname__r   r   r'   r   r   r   r   r      s   r   )Ú__doc__r   r    Zgitdb.test.libr   Z
gitdb.utilr   r   r   r   r   r   r   r   r   Ú<module>   s
   