o
    Q¾±h«  ã                   @   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   úU/var/www/html/Persson_Maskin/env/lib/python3.10/site-packages/gitdb/test/test_util.pyÚtest_basics   s   zTestUtils.test_basicsc                 C   sF   t |dƒ}| ¡ | d¡ksJ ‚W d   ƒ d S 1 sw   Y  d S )NÚrbr	   )ÚopenÚreadr   )r   Ú	file_pathÚdataÚfpr   r   r   Ú_cmp_contents   s   "ÿzTestUtils._cmp_contentsc              	   C   sL  t  ¡ }d}d}t|dƒ}| | d¡¡ W d   ƒ n1 s w   Y  zÎt|ƒ}| ¡ }|  t|j	¡ |  t|j
¡ tj |¡rDJ ‚|jdd}|j|u sQJ ‚tj |¡sYJ ‚t || d¡¡ | 	¡  |jd u smJ ‚|  ||¡ tj |¡r{J ‚| 
¡  | 	¡  t|ƒ}|jdd}t |t|ƒ¡| d¡ksœJ ‚tj |¡s¤J ‚~tj |¡r­J ‚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 |¡ w tt  ¡ ƒ}z|jdd W n ty   tj | ¡ ¡rJ ‚Y d S w |  d	¡ d S )
NÚhelloÚworldÚwbr	   T)ÚwriteF)r   Ústreamzexpected OSError)ÚtempfileÚmktempr   r   r   r   Ú_lockfilepathÚassertRaisesÚAssertionErrorÚrollbackÚcommitÚosÚpathÚisfileÚ_fdr   r   r
   ÚIOErrorÚremoveÚOSErrorÚexistsÚfail)r   Úmy_fileÚ	orig_dataÚnew_dataÚ
my_file_fpÚlfdÚlockfilepathÚwfdÚrfdÚolfdÚ	wfdstreamr   r   r   Útest_lockedfd   s\   ÿÿzTestUtils.test_lockedfdN)Ú__name__Ú
__module__Ú__qualname__r   r   r6   r   r   r   r   r      s    r   )Ú__doc__r   r#   Úgitdb.test.libr   Ú
gitdb.utilr   r   r   r   r   r   r   r   r   Ú<module>   s   