
    .Ph_                         d Z ddlmZmZmZmZmZ ddlmZm	Z	m
Z
mZmZmZ ddlmZ ddlZddlmZ ddlZddlZddlmZ  G d d	e          ZdS )
zTest for object db    )TestBaseDummyStream
make_bytesmake_objectfixture_path)DecompressMemMapReaderFDCompressedSha1WriterLooseObjectDB
Sha1WriterMemoryDBIStream)
hex_to_binN)str_blob_type)BytesIOc                   :    e Zd ZdZdZd fdZd Zd Zd Zd Z	d	S )

TestStreamzTest stream classes)   i'  i  c                     d S )N )ss    V/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/gitdb/test/test_stream.py<lambda>zTestStream.<lambda>)   s    4     c                    d}t          |          |dz
  k    sJ d|t          |          fz              t          |          |z  }t          |          D ]2}|                    |          }|||z  |dz   |z           }||k    sJ 3|                                }	|	r|	|t          |	           d         k    sJ t          |t                    r9t          |                                          |                                k    sJ  ||           |                                }
|
|k    sJ t          |t                    r9t          |                                          |                                k    sJ dS dS )a  Make stream tests - the orig_stream is seekable, allowing it to be
        rewound and reused
        :param cdata: the data we expect to read from stream, the contents
        :param rewind_stream: function called to rewind the stream to make it ready
            for reuse
      z#Data must be larger than %i, was %iN)lenrangeread
isinstancer   datacompressed_bytes_read)selfstreamcdatarewind_streamnsssir!   chunkrestrdatas              r   _assert_stream_readerz TestStream._assert_stream_reader)   s    5zzBF"""$IRQTUZQ[Q[L\$\""" ZZ2r 	! 	!A;;r??D!b&!a%2-.E5====={{}} 	.5#d))----- f455 	Hv{{}}%%)E)E)G)GGGGG 	f ~~~~f455 	Hv{{}}%%)E)E)G)GGGGG	H 	HGGr   c           
         t          d          D ]T}t          d          D ]@}| j        D ]4}t          |d          }|rt          j        t          t          |                    }t          j        ||          \  }}}|t          |          k    sJ |t          k    sJ t          |d          }	|	j
        t          |          k    sJ nLt          j        |          }t          ||t          |                    }|j
        t          |          k    sJ |                     ||d            t                      }
|
|_        |
j        rJ ~|
j        |k    sJ 6BVd S )N   F	randomize)close_on_deletionc                 ,    |                      d          S )Nr   )seek)rs    r   r   z3TestStream.test_decompress_reader.<locals>.<lambda>g   s    q		 r   )r   
data_sizesr   zlibcompressr   r   r   newr   _sr-   r   _mclosed)r#   r2   	with_sizedsr%   zdatatypsizereadertest_readerdummys              r   test_decompress_readerz!TestStream.test_decompress_readerL   s   !&q "	= "	="1XX != !=	/  =  =B&rU;;;E ! 7 $k-.O.O P P,B,FuN_,`,`)T6#s5zz1111"m3333 '=UV[&\&\&\*~U;;;;; !%e 4 4!7?PRUV[R\R\!]!]%yCJJ6666 ..vu>Q>QRRR (MME %FI$|+++ <+<<<<<<A =!="	= "	=r   c                    t                      }d|                    d          k    sJ t          |                    d                    dk    sJ t          |                    d                    dk    sJ |                                }|                    d           |                                |k    sJ d S )	Nr/   s   hir   )as_hex(   r      s   hi again)r   writer   sha)r#   writerprev_shas      r   test_sha_writerzTestStream.test_sha_writert   s    FLL''''''6::Q:''((B....6::Q:''((B.... ::<<[!!!zz||x''''''r   c           
         | j         D ]x}t          j                    \  }}t          |          }t	          |d          }t          |          |                    |          k    sJ |                                 |                     t          t          j        |           t          j        |t          j        t          t          dd          z            }t          j        |t          j                            |                    }t          |          t          j                            |          k    sJ t          j        |           |t#          j        |d          k    sJ t          j        |           zd S )NFr0   O_BINARYr   r   )r6   tempfilemkstempr	   r   r   rJ   closeassertRaisesOSErrorosopenO_RDONLYgetattrr   pathgetsizer7   r8   remove)r#   r>   fdrZ   ostreamr!   written_datas          r   test_compressed_writerz!TestStream.test_compressed_writer   sA   / 	 	B'))HB,R00GbE222D t99d 3 33333MMOOO grx444 r{WRQ-G-GGHHB72rwt'<'<==L|$$(=(=====HRLLL4=q#9#99999IdOOOO'	 	r   c           
         t          t          d                    }t                      }dD ]}|                    t	          |                    }|                                }t          |          |j        k    sJ |                    t          |j
        |j        t          |                              }|j        |k    sJ d S )Nobjects)s(   888401851f15db0eed60eb1bc29dec5ddcace911s(   7bb839852ed5e3a069966281bb08d50012fb309b)r
   r   r   r$   r   r   r   rA   storer   typer   hexsha)r#   odbmdbrK   r^   r!   dumps          r   #test_decompress_reader_special_casez.TestStream.test_decompress_reader_special_case   s    L3344jjB 
	& 
	&CjjC11G <<>>Dt99,,,, 99WW\7<OOPPD;#%%%%%
	& 
	&r   N)
__name__
__module____qualname____doc__r6   r-   rE   rN   r`   ri   r   r   r   r   r   #   sz        /JAO  H  H  H  HF#= #= #=P	( 	( 	(  .& & & & &r   r   )rm   gitdb.test.libr   r   r   r   r   gitdbr   r	   r
   r   r   r   
gitdb.utilr   r7   	gitdb.typr   rQ   rV   ior   r   r   r   r   <module>rs      sB  
                               " ! ! ! ! !        				      @& @& @& @& @& @& @& @& @& @&r   