
    .Ph$                         d Z ddlmZmZmZ ddlmZ ddlmZm	Z	m
Z
 ddlmZmZ ddlmZ ddlmZ ddlmZ dd	lZdd	lZdd	lZd
 Z G d de          Zd	S )z/Test everything about packs reading and writing    )TestBasewith_rw_directoryfixture_path)DeltaApplyReader)
PackEntityPackIndexFilePackFile)OInfoOStream)delta_types)UnsupportedOperation)
to_bin_shaNc                     t          t          j                            t          j                            |                     d         dd                    S )Nr      )r   ospathsplitextbasename)filenames    T/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/gitdb/test/test_pack.pybin_sha_from_filenamer   $   s>    bg&&rw'7'7'A'ABB1EabbIJJJ    c                      e Zd Z ed          ddfZ ed          ddfZ ed          ddfZ ed	          ded         fZ ed
          ded         fZ ed          ded         fZ	d Z
d Zd Zd Zed             Zd ZdS )TestPackz7packs/pack-c0438c19fb16422b6bbcce24387b3264416d485b.idx   C   z7packs/pack-11fdfa9e156ab73caae3b6da867192221f2089c2.idx      z7packs/pack-a2bf8e71d8c18879e499335762dd95119d93d9f1.idx*   z8packs/pack-c0438c19fb16422b6bbcce24387b3264416d485b.packz8packs/pack-11fdfa9e156ab73caae3b6da867192221f2089c2.packz8packs/pack-a2bf8e71d8c18879e499335762dd95119d93d9f1.packc                    |                                 |                                k    sJ t          |                                           dk    sJ t          |                                          dk    sJ |                                |k    sJ |                                |k    sJ t          |                                          |k    sJ t          |                                          D ]}|                    |          }||                    |          k    sJ |	                    |          }t          |          dk    sJ |d         |
                    |          k    sJ |d         |k    sJ |d         |                    |          k    sJ dD ])}|                    |d |         |dz            |k    sJ *|                     t          |j        dd           d S )N      r   r   r   )            r!    )packfile_checksumindexfile_checksumlenversionsizeoffsetsrangeshasha_to_indexentryoffsetcrcpartial_sha_to_indexassertRaises
ValueError)selfindexr+   r,   oidxr/   r1   ls           r   _assert_index_filezTestPack._assert_index_file3   s   &&((E,D,D,F,FFFFF5**,,--33335++--.."4444}}'))))zz||t####5==??##t++++ %**,,'' 	J 	JD))D//C5--c222222KK%%Eu::????8u||D1111118s????8uyy.... ( J J11#bqb'1q5AATIIIIIJ 	*e&@$JJJJJr   c                 z   |                                 dk    sJ |                                |k    sJ t          |                                          dk    sJ d}|                                D ]?}|dz  }|                    |j                  }|                    |j                  }|j        |j        k    sJ |j        |j        k    sJ t          |d          sJ |
                                |
                                k    sJ |                    |j                  }|sJ 	 t          j        |          }	n# t          $ r Y w xY w|	
                                }
t          |
          |	j        k    sJ |	                    d           |	
                                |
k    sJ A||k    sJ d S )Nr   r!   r   r   read)r+   r,   r*   checksumstream_iterinfopack_offsetstreamtype_idhasattrr=   collect_streamsr   newr6   seek)r7   packr+   r,   num_objobjr@   rB   streamsdstreamdatas              r   _assert_pack_filezTestPack._assert_pack_fileN   s   ||~~""""yy{{d""""4==??##r))))##%% 	* 	*CqLG99S_--D[[11F#v'99999<6>111166***** 88::....**3?;;GNNN*.w77    	 <<>>Dt99,,,, LLOOO<<>>T))))) $s   /E
EEc                 |    | j         | j        fD ],\  }}}t          |          }|                     |||           -d S N)packindexfile_v1packindexfile_v2r   r;   )r7   	indexfiler+   r,   r8   s        r   test_pack_indexzTestPack.test_pack_index|   sU    )-)>@U(V 	: 	:$Iw!),,E##E7D9999	: 	:r   c                     | j         | j        | j        fD ],\  }}}t          |          }|                     |||           -d S rP   )packfile_v2_3_asciipackfile_v2_1packfile_v2_2r	   rN   )r7   packfiler+   r,   rH   s        r   	test_packzTestPack.test_pack   s[    (,(@$BTVZVh'i 	8 	8#HgtH%%D""4$7777	8 	8r   c                     t                      | j        | j        f| j        | j        f| j        | j        ffD ]6\  }}|\  }}}|\  }}}t          |          }|                                	                                |k    sJ |
                                	                                |k    sJ                     |                                           d}	t          |                                |                                          D ]V\  }
}|	dz  }	|
j        |j        k    sJ t!          |
j                  dk    sJ |
j        |j        k    sJ |
j        |j        k    sJ |
j        t&          vsJ t!          |                    |
j                            sJ |                    |
j                  }t-          |t.                    sJ |j        J |                    |
j                  }t-          |t2                    sJ |j        J 	 |                    |
j        d          sJ n# t6          $ r Y nw xY w|                    |
j        d          sJ X|	|k    sJ 8t9          j        dd|          }t9          j        dd	|          }t9          j        dd
|          }d}fd}t          ||f|d ft!                    d f          D ]	\  }}}d }|rt=          |d          }|j        }|dk    r
 |             |dz  }t=          |d          5 }t          j         |j        ||          \  }}d d d            n# 1 swxY w Y   tB          j	        "                    |          dk    sJ tG          |          }|                                t!                    k    sJ |$                                tF          j%        k    sJ |&                                |k    sJ |'                                 ||'                                 tB          j	        "                    |          dk    sJ tQ          |          }|$                                tP          j)        k    sJ |*                                |k    sJ |+                                |k    sJ |                                t!                    k    sJ |'                                  |             t          j,        |          }d}	|                                D ]6}
|	dz  }	t[          d          D ]}|                    |
j        |          sJ  7|	t!                    k    sJ |'                                 d S )Nr   r   r!   T)use_crcF pack1pack2r8   c                  F    D ]} | j                             d           d S )Nr   )rB   rG   )rJ   	pack_objss    r   rewind_streamsz1TestPack.test_pack_entity.<locals>.rewind_streams   s3      # #
""""# #r   wb)object_countd   r   ).listrW   rQ   rX   rR   rV   packindexfile_v2_3_asciir   rH   r   r8   extendr?   zip	info_iterbinshar*   rC   r,   r   rE   r@   
isinstancer
   rB   r   is_valid_streamr   tempfilemktempopenwrite
write_packr   getsizer	   r+   pack_version_defaultr>   closer   index_version_defaultr(   r)   creater.   )r7   rw_dirpackinfo	indexinforY   r+   r,   rS   entitycountr@   rB   oinfoostream
pack_path1
pack_path2
index_path	iterationrb   ppathipathrI   iwriteifilepfilepack_sha	index_shapfidxr\   ra   s                                 @r   test_pack_entityzTestPack.test_pack_entity   s   FF	%)%79N$O%)%79N$O%)%=t?\$]$_ &	! &	!Hi '/#Hgt'0$Iw))F;;==%%''83333<<>>&&((I5555V//11222E #F$4$4$6$68J8J8L8L M M J Jf
{fm33334;''2----|v~5555yFK////  <;6666 611$+>>?????DK00!%/////|/// --44!'733333~111!11$+t1LLLLLL+   D --dk5-IIIIIID===== _R&99
_R&99
_R&99
		# 	# 	# 	# 	# &)*j)A*4d);*-i..$)?&A &A #	 #	!E5' F %UD)) 1}}   NIeT"" re&0&;Iu{TZip&q&q&q#)r r r r r r r r r r r r r r r7??5))C//// %B7799I....::<<8#@@@@@;;==H,,,,HHJJJ  wu--3333#E**{{}}(KKKKK,,..(::::--//9<<<<xxzzS^^3333		
 	"9f55$$&& 	D 	DDQJE 88 D D--dk7CCCCCCD I&&&&s$   H77
II%!MM	M	c                 .    t          j        d           d S )Nznot implemented)pytestskip)r7   s    r   test_pack_64zTestPack.test_pack_64   s     	%&&&&&r   N)__name__
__module____qualname__r   rQ   rR   rg   rW   rX   rV   r;   rN   rT   rZ   r   r   r    r   r   r   r   )   s2       $%^__abdfg$%^__abdfg ,-f g gijlno!\"\]]_`brstbuvM!\"\]]_`brstbuvMOPPRSUmnoUprK K K6, , ,\: : :8 8 8 i i iV' ' ' ' 'r   r   )__doc__gitdb.test.libr   r   r   gitdb.streamr   
gitdb.packr   r   r	   
gitdb.baser
   r   	gitdb.funr   	gitdb.excr   
gitdb.utilr   r   r   rn   r   r   r   r   r   <module>r      sP  
 6 5          * ) ) ) ) )                
 " ! ! ! ! ! * * * * * * ! ! ! ! ! !  				 K K K
P' P' P' P' P'x P' P' P' P' P'r   