
    d*v                        d Z ddlZddlZddlZddlmZ ddlmZ ddlm	Z	m
Z
 ddlmZ ddlmZ dd	lmZmZmZmZmZmZmZmZmZmZ dd
lmZ ddlmZmZ  G d de
          ZdZ dZ!dZ"dZ# G d de
          Z$ddddddddZ% G d d          Z& G d de&e
          Z' G d de&e
          Z(d Z) G d! d"e
          Z* G d# d$e
          Z+ G d% d&e
          Z,dS )'zTests for dulwich.refs.    N)BytesIO)errors)SkipTestTestCase   )GitFile)ZERO_SHA)
DictRefsContainerInfoRefsContainer
SymrefLoop_split_ref_linecheck_ref_formatparse_symref_valueread_packed_refsread_packed_refs_with_peeledstrip_peeled_refswrite_packed_refs)Repo   )	open_repotear_down_repoc                       e Zd ZdZd Zd ZdS )CheckRefFormatTestszeTests for the check_ref_format function.

    These are the same tests as in the git test suite.
    c                    |                      t          d                     |                      t          d                     |                      t          d                     |                      t          d                     |                      t          d                     |                      t          d                     d S )Ns	   heads/foos   foo/bar/bazs   refs///heads/foos   foo./bars   heads/foo@bars   heads/fix.lock.error)
assertTruer   selfs    [/home/feoh/.local/pipx/venvs/poetry/lib/python3.11/site-packages/dulwich/tests/test_refs.py
test_validzCheckRefFormatTests.test_valid/   s    (66777(88999()<==>>>(55666()9::;;;()@AABBBBB    c                 j   |                      t          d                     |                      t          d                     |                      t          d                     |                      t          d                     |                      t          d                     |                      t          d                     |                      t          d                     |                      t          d                     |                      t          d	                     d S )
N   foos
   heads/foo/s   ./foos	   .refs/foos   heads/foo..bars   heads/foo?bars   heads/foo.locks   heads/v@{ations   heads/fooar)assertFalser   r   s    r   test_invalidz CheckRefFormatTests.test_invalid7   s   )&11222)-88999)(33444),77888)*;<<===)*:;;<<<)*;<<===)*;<<===)*:;;<<<<<r    N)__name__
__module____qualname____doc__r   r$    r    r   r   r   )   s?         
C C C	= 	= 	= 	= 	=r    r   (   1111111111111111111111111111111111111111s(   2222222222222222222222222222222222222222s(   3333333333333333333333333333333333333333s(   4444444444444444444444444444444444444444c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	PackedRefsFileTestsc                     |                      t          j        t          d           |                      t          j        t          d           |                      t          j        t          t          dz              d S )Ns   singlefields   badsha names    bad/../refname)assertRaisesr   PackedRefsExceptionr   ONESr   s    r   test_split_ref_line_errorsz.PackedRefsFileTests.test_split_ref_line_errorsJ   sl    &4o~VVV&4o~VVV&%%	
 	
 	
 	
 	
r    c                     t          d                    dt          dz   t          dz   g                    }|                     t          dft          dfgt          t          |                               d S )N   
s	   # comment    ref/1    ref/2   ref/1   ref/2)r   joinr0   TWOSassertEquallistr   r   fs     r   test_read_without_peeledz,PackedRefsFileTests.test_read_without_peeledS   ss    EJJdY.>y@PQRRSSHh/0$7G7J7J2K2K	
 	
 	
 	
 	
r    c                     t          d                    t          dz   dt          z   g                    }|                     t
          j        t          t          |                     d S )Nr3   r4      ^)	r   r8   r0   r9   r.   r   r/   r;   r   r<   s     r   test_read_without_peeled_errorsz3PackedRefsFileTests.test_read_without_peeled_errorsY   sS    EJJy 0$+>??@@&4d<LQ<O<OPPPPPr    c           	      2   t          d                    t          dz   t          dz   dt          z   t
          dz   g                    }|                     t          dd ft          dt          ft
          dd fgt          t          |                               d S )	Nr3   r4   r5   r@   s    ref/4r6   r7   s   ref/4)	r   r8   r0   r9   THREESFOURSr:   r;   r   r<   s     r   test_read_with_peeledz)PackedRefsFileTests.test_read_with_peeled]   s    JJ9$9$6MI%	 	
 	
 	x&x($'
 -a0011	
 	
 	
 	
 	
r    c                    t          d                    dt          z   t          dz   g                    }|                     t
          j        t          t          |                     t          d                    t          dz   dt          z   dt          z   g                    }|                     t
          j        t          t          |                     d S )Nr3   r@   r4   )
r   r8   r9   r0   r.   r   r/   r;   r   rC   r<   s     r   test_read_with_peeled_errorsz0PackedRefsFileTests.test_read_with_peeled_errorsq   s    EJJtTI-=>??@@&4d<LQ<O<OPPPEJJy 0$+tf}MNNOO&4d<LQ<O<OPPPPPr    c           	          t                      }t          |t          t          ddt          i           |                     d                    dt          dz   dt          z   t          dz   g          dz   |                                           d S )Nr6   r7   r6   r3   s   # pack-refs with: peeledr4   r@   r5   )r   r   r0   r9   rC   r:   r8   getvaluer<   s     r   test_write_with_peeledz*PackedRefsFileTests.test_write_with_peeledx   s    II!==&?QRRRJJ/9$6M9$	   JJLL	
 	
 	
 	
 	
r    c                     t                      }t          |t          t          d           |                     d                    t          dz   t          dz   g          dz   |                                           d S )NrI   r3   r4   r5   )r   r   r0   r9   r:   r8   rJ   r<   s     r   test_write_without_peeledz-PackedRefsFileTests.test_write_without_peeled   ss    II!==>>>JJy($*:;<<uDJJLL	
 	
 	
 	
 	
r    N)
r%   r&   r'   r1   r>   rA   rE   rG   rK   rM   r)   r    r   r,   r,   I   s        
 
 

 
 
Q Q Q
 
 
(Q Q Q
 
 
 
 
 
 
 
r    r,   (   42d06bd4b77fed026b154d16493e5deab78f02ec(   df6800012397fb85c56e7418dd4eb9405dee075c(   3ec9c43c84ff242e3ef4a9fc5bc111fd780a76a8s   ref: refs/heads/loop)   HEADs)   refs/heads/40-char-ref-aaaaaaaaaaaaaaaaaa   refs/heads/master   refs/heads/packed   refs/tags/refs-0.1   refs/tags/refs-0.2   refs/heads/loopc                   h    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd ZdS )RefsContainerTestsc                 \   t          | j                                                  }|                     t          | j                                                  |           |                     t          t
                                                    |           | j                            d          }|                    d           |                     g dt          |                     |                     ddgt          | j                            d                               d S )N
   refs/heads   loops   40-char-ref-aaaaaaaaaaaaaaaaaa   master   packed   refs-0.1   refs-0.2	   refs/tags)set_refskeysr:   allkeys
_TEST_REFSdiscardsortedr   actual_keyss     r   	test_keyszRefsContainerTests.test_keys   s   $*//++,,TZ//1122K@@@Z__..//===joom44G$$$EEE;	
 	
 	
 	+&tz|/L/L(M(M	
 	
 	
 	
 	
r    c                    t          | j                                                  }|                     t          | j                  |           |                     t          t                                                    |           d S N)rb   rc   rd   r:   rf   ri   s     r   	test_iterzRefsContainerTests.test_iter   sg    $*//++,,TZ+666Z__..//=====r    c                     t          t                    }|d= |                     || j                                                   d S )NrV   )dictrf   r:   rc   as_dictr   expected_refss     r   test_as_dictzRefsContainerTests.test_as_dict   sB    Z((,-
(:(:(<(<=====r    c                     | j                             dd           | j                                         }d|v r|                    d           |                     ddd|           d S )N   refs/heads/srcs   refs/heads/dstrQ   rV   )rv   rV   )rc   set_symbolic_refget_symrefspopr:   )r   symrefss     r   test_get_symrefsz#RefsContainerTests.test_get_symrefs   s    
##$57HIII*((**gKK   #4$6  	
 	
 	
 	
 	
r    c                     d| j         d<   |                     d| j         d                    |                     t          j        | j         j        dd           d S )NrN      refs/some/ref   notrefs/foo)rc   r:   r.   r   RefFormatError__setitem__r   s    r   test_setitemzRefsContainerTests.test_setitem   sm    'R
#$7J'(	
 	
 	
 	!J"7		
 	
 	
 	
 	
r    c                 4   d}|                      | j                            dd|                     |                     d| j        d                    |                     | j                            dd|                     |                     || j        d                    |                     | j                            d||                     |                     || j        d                    |                     | j                            dd |                     |                     || j        d                    |                     | j                            dt
          |                     |                     || j        d                    d S )N(   9999999999999999999999999999999999999999rQ      c0ffeerN   rR   s   refs/heads/nonexistent)r#   rc   set_if_equalsr:   r   r	   r   niness     r   test_set_if_equalsz%RefsContainerTests.test_set_if_equals   s   11'9eLLMMM7G9L	
 	
 	
 	J$$De 	
 	
 	

 	
7 3444 	
00%GGHHH
7 3444
001EtUSSTTT
+? @AAAJ$$%>%PP	
 	
 	
 	
+D EFFFFFr    c                 F   d}|                      | j                            d|                     |                     d| j        d                    |                     | j                            d|                     |                     || j        d                    d S )Nr   rR   rN   r}   )r#   rc   
add_if_newr:   r   r   s     r   test_add_if_newz"RefsContainerTests.test_add_if_new   s    ../CUKKLLL7J+,	
 	
 	

 	
--.>FFGGG
+; <=====r    c                     | j                             dd           |                     d| j                             d                     |                     d| j         d                    d S )N   refs/heads/symbolicrR      ref: refs/heads/masterrN   )rc   rw   r:   read_loose_refr   s    r   test_set_symbolic_refz(RefsContainerTests.test_set_symbolic_ref   s}    
##$:<PQQQ%J%%&<==	
 	
 	
 	7J-.	
 	
 	
 	
 	
r    c                    d}|                      d| j                   || j        d<   |                     || j                            d                     | j                            dd           |                     d| j                            d                     |                     d| j        d                    d S )Nr   r   rR   r   rN   )assertNotInrc   r:   r   rw   r   s     r   test_set_symbolic_ref_overwritez2RefsContainerTests.test_set_symbolic_ref_overwrite  s    /<<<-2
)*
 9 9:P Q QRRR
##$:<PQQQ%J%%&<==	
 	
 	
 	7J-.	
 	
 	
 	
 	
r    c                 N   | j                             d           | j                             d           | j                             d           |                     t          j        | j         j        d           |                     t          j        | j         j        d           d S )NrQ   
   refs/stash   refs/heads/foo   refsr~   )rc   _check_refnamer.   r   r   r   s    r   test_check_refnamez%RefsContainerTests.test_check_refname  s    
!!'***
!!-000
!!"3444&/1JGTTT!4:#<n	
 	
 	
 	
 	
r    c                 r    |                      d| j                   |                     d| j                   d S NrR   s   refs/heads/bar)assertInrc   r   r   s    r   test_containsz RefsContainerTests.test_contains  s8    *DJ777*DJ77777r    c                                            d j        d                     j        d=                      t           fd           d S )NrN   rR   c                       j         d         S NrR   rc   r   s   r   <lambda>z1RefsContainerTests.test_delitem.<locals>.<lambda>%      DJ7K,L r    )r:   rc   r.   KeyErrorr   s   `r   test_delitemzRefsContainerTests.test_delitem  s\    7J+,	
 	
 	
 J+,($L$L$L$LMMMMMr    c                    |                      | j                            dd                     |                     d| j        d                    |                     | j                            dd                     |                     | j                            dt
                               |                     d| j                   d S )NrQ   r   rN   rU   rP   )r#   rc   remove_if_equalsr:   r   r	   r   r   s    r   test_remove_if_equalsz(RefsContainerTests.test_remove_if_equals'  s    44WiHHIII7G9L	
 	
 	
 	J''%; 	
 	
 	
 	
334I8TTUUU.
;;;;;r    c                     d| j         d<   | j                             dddi           |                     d| j         d                    |                     d| j         d                    d S )N(   48d01bd4b77fed026b154d16493e5deab78f02ec   refs/remotes/origin/other   refs/remotes/originr]   rN      refs/remotes/origin/master)rc   import_refsr:   r   s    r   test_import_refs_namez(RefsContainerTests.test_import_refs_name5  s     8 	
(	
 	
"CD	
 	
 	
 	7J45	
 	
 	
 	7J34	
 	
 	
 	
 	
r    c                     d| j         d<   | j                             dddid           |                     d| j         d                    |                     d| j                    d S )	Nr   r   r   r]   rN   T)pruner   )rc   r   r:   r   r   s    r   test_import_refs_name_prunez.RefsContainerTests.test_import_refs_name_pruneF  s     8 	
(	
 	
"CD 	 	
 	
 	

 	7J45	
 	
 	
 	5tzBBBBBr    N)r%   r&   r'   rk   rn   rt   r{   r   r   r   r   r   r   r   r   r   r   r   r)   r    r   rX   rX      s        
 
 
> > >
> > >
 
 

 
 
G G G4	> 	> 	>	
 	
 	

 
 

 
 
8 8 8N N N< < <
 
 
"C C C C Cr    rX   c                       e Zd Zd Zd ZdS )DictRefsContainerTestsc                 z    t          j        |            t          t          t                              | _        d S rm   )r   setUpr
   rp   rf   rc   r   s    r   r   zDictRefsContainerTests.setUpW  s-    t&tJ'7'788


r    c                     d| j         j         d<   t          t                    }|d= d|d<   |                     || j                                                    d S )N(   0000000000000000000000000000000000000000r   rV   )rc   rp   rf   r:   rq   rr   s     r   test_invalid_refnamez+DictRefsContainerTests.test_invalid_refname[  s]     +5
'Z((,-'1m$
(:(:(<(<=====r    N)r%   r&   r'   r   r   r)   r    r   r   r   V  s2        9 9 9> > > > >r    r   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )DiskRefsContainerTestsc                     t          j        |            t          d          | _        |                     t
          | j                   | j        j        | _        d S )Nzrefs.git)r   r   r   _repo
addCleanupr   refsrc   r   s    r   r   zDiskRefsContainerTests.setUpf  sF    tz**

333Z_


r    c                 f    |                      ddd| j                                                   d S )NrN   rO   )rS   rT   )r:   rc   get_packed_refsr   s    r   test_get_packed_refsz+DiskRefsContainerTests.test_get_packed_refsl  sG    &Q'R  J&&((	
 	
 	
 	
 	
r    c                 r   |                      d | j                            d                     |                      d| j        d                    |                      | j        d         | j                            d                     |                      d| j                            d                     d S )NrU   rP   rS   rN   rT   )r:   rc   
get_peeledr   s    r   test_get_peeled_not_packedz1DiskRefsContainerTests.test_get_peeled_not_packedu  s    tz445JKKLLL7J,-	
 	
 	
 	J+,J!!"677	
 	
 	
 	7J!!"788	
 	
 	
 	
 	
r    c                    t                               |            t          j                            | j        j        ddd          }t          |d          5 }|                     d|                                d d                    d d d            n# 1 swxY w Y   | 	                    t          | j        j        dd           d S )Nr   s   somes   refrbrN   (   s   refs/some/ref/sub)rX   r   ospathr8   rc   openr:   readr.   OSErrorr   )r   r   r=   s      r   r   z#DiskRefsContainerTests.test_setitem  s   ''---w||DJOWgvFF$ 	YH!&&((SVTVSV-XXX	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	J" 7		
 	
 	
 	
 	
s   1BBBc                    d| j         d<   | j                                         D ]
}| j         |= |                     t          j                            t          j                            | j         j        d                               d S )NrN   s   refs/heads/blahr   )rc   re   r   r   r   existsr8   )r   refs     r   test_delete_refs_containerz1DiskRefsContainerTests.test_delete_refs_container  sq    )T
%&:%%'' 	  	 C
3rw||DJOW'M'MNNOOOOOr    c                    t          t          j                            | j        j        d          d          5 }|                    d           |                    d           d d d            n# 1 swxY w Y   d| j        d<   t          j                            | j        j        ddd	          }t          |d
          5 }|                     d|                                d d                    d d d            n# 1 swxY w Y   |                     t          | j        j
        dd           |                     ddi| j                                                   d S )N   packed-refswz.# pack-refs with: peeled fully-peeled sorted 
z;42d06bd4b77fed026b154d16493e5deab78f02ec refs/heads/packed
rP   rS   r      headsr^   r   r   s   refs/heads/packed/subrN   )r   r   r   r8   rc   writer:   r   r.   r   r   r   )r   r=   packed_ref_paths      r   test_setitem_packedz*DiskRefsContainerTests.test_setitem_packed  s   "',,tz??EE 	TGGEFFFGGRSSS	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T ,W
'(',,tz9UU/4(( 	YAH!&&((SVTVSV-XXX	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	J"$7		
 	
 	
 	!#NOJ&&((	
 	
 	
 	
 	
s#   +A00A47A41C>>DDc                    d| j         d<   t          j                            | j         j        ddd          }|                     t          j                            |                     t          j                            | j         j        d          }| j                             ddi           |                     t          j                            |                     | j                             dd i           |                     t          j                            |                     |                     t          | j         j
        d           |                     t          | j         j        dd	i           | j                             d
 | j                                         D                        |                     i | j                                                    t          j        |           | j                             i            |                     t          j                            |                     d S )NrP   rS   r   r   r^   r   rN   rQ    02ac81614bcdbd585a37b4b0edf8cb8ac                     i | ]}|d S rm   r)   ).0r   s     r   
<dictcomp>z?DiskRefsContainerTests.test_add_packed_refs.<locals>.<dictcomp>  s    #V#V#V#C#V#V#Vr    )rc   r   r   r8   r   r   add_packed_refsr#   r.   r   __getitem__
ValueErrorr   r:   remove)r   r   packed_refs_file_paths      r   test_add_packed_refsz+DiskRefsContainerTests.test_add_packed_refs  s   +V
'(',,tz9UU77888 !#TZ_n M M
""$&Q	
 	
 	
 	88999 	
""$d	
 	
 	
 	88999J" 	
 	
 	
 	J&89	
 	
 	
 	
""#V#V9S9S9U9U#V#V#VWWWTZ7799::: 		'((( 	
""2&&&(=>>?????r    c                 ~   d}|| j         d<   |                     || j         d                    t          t          j                            | j         j        d          d          }t          t          |                                        d          }|	                                 |                     d|           t          t          j                            | j         j        ddd          d          }|                     ||
                                d d	                    |	                                 d S )
Nr*   rQ   r   s   
r   r   r   r]   r   )rc   r:   r   r   r   r8   nextiterrstripcloser   )r   onesr=   vs       r   test_setitem_symbolicz,DiskRefsContainerTests.test_setitem_symbolic  s    "
7tz'2333 djow77>>aMM  ))				2A666 djow)LLdSSqvvxx}---						r    c           
         t                               |            |                     d| j        d                    |                     t
          j                            t
          j                            | j        j        ddd                               |                     t
          j                            t
          j                            | j        j        d                               d S )Nr   rR   r   r      master.lock	   HEAD.lock)	rX   r   r:   rc   r#   r   r   r   r8   r   s    r   r   z)DiskRefsContainerTests.test_set_if_equals  s    --d333 	DJ/C$DEEE 	GNNTZ_gxPP 	
 	
 	

 	TZ_l(S(STTUUUUUr    c                     |                      | j                            dd                     |                     d| j        d                    d S )NrT   r   rO   )r#   rc   r   r:   r   s    r   test_add_if_new_packedz-DiskRefsContainerTests.test_add_if_new_packed
  sY    ../DiPPQQQ7J,-	
 	
 	
 	
 	
r    c                 T   t           j                            t          j                    d          }t          j        |           t          j        |          }|                     t          |           |j
        }d}|                     d|                    d                     |                     d|           |                     |                    d|                     |                     d|                    d                     |                     ||d                    |                     ||d                    |                     |                    dd                     |                     ||d                    |                     ||d                    d S )Ntestr   r   rQ   rR   r*   )r   r   r8   tempfilemkdtempmakedirsr   initr   r   r   r:   read_refr   r   r   r#   )r   repo_dirrepor   r   s        r   test_add_if_new_symbolicz/DiskRefsContainerTests.test_add_if_new_symbolic  sp   7<< 0 2 2F;;
Hy""---y2DMM'4J4JKKK-t444778882DMM'4J4JKKKW...%9 :;;;)<<===W...%9 :;;;;;r    c                    |                      ddgdf| j                            d                     |                      dgdf| j                            d                     |                     t          | j        j        d           d S )NrQ   rR   rN   rV   )r:   rc   followr.   r   r   s    r   test_followz"DiskRefsContainerTests.test_follow%  s    ./; Jg&&	
 	
 	
 	%&; J233	
 	
 	
 	*dj&79KLLLLLr    c                     |                      t          | j        j        d           d| j        d<   |                     dgdf| j                            d                     d S )NrV   rN   )r.   r   rc   r   r:   r   s    r   test_set_overwrite_loopz.DiskRefsContainerTests.test_set_overwrite_loop6  sr    *dj&79KLLL7 	
%& !#NOJ011	3 	3 	3 	3 	3r    c                 P   t                               |            t          j                            | j        j        ddd          }|                     t          j                            |                     |                     d| j        	                                           d S )Nr   r   r]   rR   )
rX   r   r   r   r8   rc   r#   r   r   r   r   ref_files     r   r   z#DiskRefsContainerTests.test_delitem>  s    ''---7<<
(INN11222-tz/I/I/K/KLLLLLr    c                                           d j                            d                      j        d=                      t           fd                                 d j        d                                         t          j                            t          j        	                     j        j        d                               d S )Nr   rQ   c                       j         d         S NrQ   r   r   s   r   r   z>DiskRefsContainerTests.test_delitem_symbolic.<locals>.<lambda>G      DJw,? r    rN   rR   )
r:   rc   r   r.   r   r#   r   r   r   r8   r   s   `r   test_delitem_symbolicz,DiskRefsContainerTests.test_delitem_symbolicD  s    2DJ4M4Mg4V4VWWWJw($?$?$?$?@@@7J+,	
 	
 	
 	TZ_g(N(NOOPPPPPr    c           
                                  j                            dd                                           j                            dd                                          t
           fd                                t
           fd                                d j                            d                                           t          j	        
                    t          j	                             j        j	        ddd	                                                     t          j	        
                    t          j	                             j        j	        d
                               d S )NrQ   rN   rR   c                       j         d         S r   r   r   s   r   r   zEDiskRefsContainerTests.test_remove_if_equals_symref.<locals>.<lambda>[  r   r    c                       j         d         S r  r   r   s   r   r   zEDiskRefsContainerTests.test_remove_if_equals_symref.<locals>.<lambda>^  r  r    r   r   r   r   r   )r#   rc   r   r   r.   r   r:   r   r   r   r   r8   r   s   `r   test_remove_if_equals_symrefz3DiskRefsContainerTests.test_remove_if_equals_symrefN  sX   J''D 	
 	
 	

 	J''$; 	
 	
 	
 	($L$L$L$LMMM 	($?$?$?$?@@@2DJ4M4Mg4V4VWWWGNNTZ_gxPP 	
 	
 	

 	TZ_l(S(STTUUUUUr    c                 @   t           j                            | j        j        d          }t	          |          }|                                }|                                 t	          |d          }|                    d                    d |                    d          D                                  |                                 t          | j        j                  | _        | j        j
        }|                     |                    dd                     d S )Nzpacked-refswbr3   c              3   2   K   | ]}|r
|d          dv|V  dS )r   s   #^Nr)   )r   lines     r   	<genexpr>zKDiskRefsContainerTests.test_remove_packed_without_peeled.<locals>.<genexpr>o  sG          $Awe33 3333 r    rS   rN   )r   r   r8   r   r   r   r   r   splitr   r   r   r   )r   	refs_filer=   	refs_datar   s        r   !test_remove_packed_without_peeledz8DiskRefsContainerTests.test_remove_packed_without_peeledh  s   GLL-@@	IFFHH					It$$	JJ  %OOE22    	
 	
 	
 	
			$*/**
z!!$; 	
 	
 	
 	
 	
r    c                                            d j        d                                          j                            dd                                          t
           fd           d S )NrO   rT   c                       j         d         S )NrT   r   r   s   r   r   zEDiskRefsContainerTests.test_remove_if_equals_packed.<locals>.<lambda>  s    DJ7L,M r    )r:   rc   r   r   r.   r   r   s   `r   test_remove_if_equals_packedz3DiskRefsContainerTests.test_remove_if_equals_packed  s    7J,-	
 	
 	
 	J''%; 	
 	
 	
 	($M$M$M$MNNNNNr    c                 r   d| j         d<   | j         d= t          j                            | j         j        dddd          }|                     t          j                            |                     t          j                            | j         j        ddd          }|                     t          j                            |                     t          j                            | j         j        dd          }|                     t          j                            |                     d| j         d<   d S )NrO      refs/heads/foo/barr   r   r"   s   barr   )rc   r   r   r8   r#   r   r   r  s     r   test_remove_parentz)DiskRefsContainerTests.test_remove_parent  s    ,W
()J,-7<<JO
 
 	112227<<
(FKK112227<<
(CCx00111(S
$%%%r    c                    |                      d| j                            d                     |                      d| j                            d                     |                      d | j                            d                     d S )Nr   rQ   rN   rS   s   nonexistent)r:   rc   r   r   s    r   test_read_refz$DiskRefsContainerTests.test_read_ref  s    2DJ4G4G4P4PQQQ7J 455	
 	
 	
 	tz22>BBCCCCCr    c                 v    d| j         d<   |                     d | j                             d                     d S )NrO   r   r  )rc   r:   r   r   s    r   test_read_loose_refz*DiskRefsContainerTests.test_read_loose_ref  s<    (S
$%tz223HIIJJJJJr    c                    	 t          j        d          }n"# t          $ r}t          d          |d }~ww xY wt           j                            t          j        | j        j                  |          }t          |d          5 }|                    d           d d d            n# 1 swxY w Y   t          t                    }d||<   |d= |                     || j                                                   d S )Nu   refs/tags/schönz5filesystem encoding doesn't support special characterr   (0000000000000000000000000000000000000000r   rV   )r   fsencodeUnicodeEncodeErrorr   r   r8   r   r   r   rp   rf   r:   get_refs)r   encoded_refexcpr=   rs   s         r   test_non_asciiz%DiskRefsContainerTests.test_non_ascii  s3   	+&899KK! 	 	 	G 	 GLLTZ_55{CC!S\\ 	QGGI	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 Z((%/k",-
(;(;(=(=>>>>>s"    
616B''B+.B+c                    t           j        dv rt          d          d}d|z   }t          t          j                            t	          j        | j        j                  |          d          5 }|	                    d           d d d            n# 1 swxY w Y   t          t                                                    }|                    |           |                     |t          | j        j                                                             |                     d |D             t          | j        j                            d                               |                    d	           |                    d
           |                     |t          | j                                                                                             d S )N)darwinwin32z3filesystem encoding doesn't support arbitrary bytess   1s   refs/heads/r   r   c                 f    h | ].}|                     d           |t          d           d         /S )   refs/N)
startswithlen)r   rs     r   	<setcomp>z7DiskRefsContainerTests.test_cyrillic.<locals>.<setcomp>  s8    QQQA!,,x:P:PQQs8}}QQQr    r,  rV   rQ   )sysplatformr   r   r   r   r8   r!  r   r   rb   rf   rd   addr:   r   re   subkeysr   r#  )r   namer$  r=   rs   s        r   test_cyrillicz$DiskRefsContainerTests.test_cyrillic  s   <...PQQQ;$t+"',,r{4:?;;[II3OO 	STGGI	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 JOO--..+&&&DJO,C,C,E,E(F(FGGGQQQQQ
''1122	
 	
 	
 	/000'"""DJ,?,?,A,A,F,F,H,H(I(IJJJJJs   /BBBN)r%   r&   r'   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r'  r6  r)   r    r   r   r   e  s       % % %
 
 

 
 
(
 
 
P P P
 
 
24@ 4@ 4@l   V V V
 
 
< < <&M M M"3 3 3M M MQ Q QV V V4
 
 
.O O OT T T"D D DK K K
? ? ?"K K K K Kr    r   sA  42d06bd4b77fed026b154d16493e5deab78f02ec	refs/heads/40-char-ref-aaaaaaaaaaaaaaaaaa
42d06bd4b77fed026b154d16493e5deab78f02ec	refs/heads/master
42d06bd4b77fed026b154d16493e5deab78f02ec	refs/heads/packed
df6800012397fb85c56e7418dd4eb9405dee075c	refs/tags/refs-0.1
3ec9c43c84ff242e3ef4a9fc5bc111fd780a76a8	refs/tags/refs-0.2
c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )InfoRefsContainerTestsc                     t           dz   dz   }t          t          |                    }t          t                    }|d= d|d<   |d= |                     ||                                           d S )Nr   s   	refs/stash
rQ   r   rV   )_TEST_REFS_SERIALIZEDr   r   rp   rf   r:   rq   )r   textr   rs   s       r   r   z+InfoRefsContainerTests.test_invalid_refname  sq    $z14EE //Z(('"'1m$,-77777r    c                    t          t          t                              }t          |                                          }|                     t          |                                          |           t          t                    }|d= |d= |                     t          |                                          |           |                    d          }|	                    d           |                     g dt          |                     |                     ddgt          |                    d                               d S )	NrQ   rV   rZ   r[   r\   r_   r`   ra   )r   r   r:  rb   rd   r:   re   rp   rf   rg   rh   )r   r   rj   rs   s       r   rk   z InfoRefsContainerTests.test_keys  s#    )>!?!?@@$))++&&T\\^^,,k:::Z(('",-]//1122K@@@ii..G$$$EEE;	
 	
 	
 	+{3VDIIl<S<S5T5TUUUUUr    c                     t          t          t                              }t          t                    }|d= |d= |                     ||                                           d S )NrQ   rV   )r   r   r:  rp   rf   r:   rq   )r   r   rs   s      r   rt   z#InfoRefsContainerTests.test_as_dict  sZ     )>!?!?@@Z(('",-77777r    c                     t          t          t                              }|                     d|           |                     d|           d S r   )r   r   r:  r   r   r   r   s     r   r   z$InfoRefsContainerTests.test_contains  sJ     )>!?!?@@*D111*D11111r    c                     t          t          t                              }|                     t          d         |                    d                     d S r   )r   r   r:  r:   rf   r   r?  s     r   test_get_peeledz&InfoRefsContainerTests.test_get_peeled  sS     )>!?!?@@+,OO011	
 	
 	
 	
 	
r    N)r%   r&   r'   r   rk   rt   r   rA  r)   r    r   r8  r8    sb        8 8 8V V V"8 8 82 2 2

 
 
 
 
r    r8  c                       e Zd Zd Zd ZdS )ParseSymrefValueTestsc                 L    |                      dt          d                     d S )Nr   s   ref: refs/heads/foo)r:   r   r   s    r   r   z ParseSymrefValueTests.test_valid  s)    *,>?U,V,VWWWWWr    c                 H    |                      t          t          d           d S )Ns   foobar)r.   r   r   r   s    r   r$   z"ParseSymrefValueTests.test_invalid  s!    *&8)DDDDDr    N)r%   r&   r'   r   r$   r)   r    r   rC  rC    s:        X X XE E E E Er    rC  c                   4    e Zd ZdddddddZdddddZd ZdS )	StripPeeledRefsTestss(   8843d7f92416211de9ebb963ff4ce28125932878s(   186a005b134d8639a58b6731c7c1ea821a6eedbas(   a93db4b0360cc635a2b93675010bac8d101f73f0s(   0749936d0956c661ac8f8d3483774509c165f89e)rR      refs/heads/testing   refs/tags/1.0.0s   refs/tags/1.0.0^{}   refs/tags/2.0.0s   refs/tags/2.0.0^{})rR   rH  rI  rJ  c                 `    |                      t          | j                  | j                   d S rm   )r:   r   all_refsnon_peeled_refsr   s    r   test_strip_peeled_refsz+StripPeeledRefsTests.test_strip_peeled_refs&  s,    *4=994;OPPPPPr    N)r%   r&   r'   rL  rM  rN  r)   r    r   rG  rG    sd         JJGJGJ H JJGG	 OQ Q Q Q Qr    rG  )-r(   r   r1  r   ior   dulwichr   dulwich.testsr   r   filer   objectsr	   r   r
   r   r   r   r   r   r   r   r   r   r   r   utilsr   r   r   r0   r9   rC   rD   r,   rf   rX   r   r   r:  r8  rC  rG  r)   r    r   <module>rU     s  *   				 



              , , , , , , , ,            : : : : : : : : : : : : : : : : : : : : : : : :       , , , , , , , ,= = = = =( = = =4 	E
 E
 E
 E
 E
( E
 E
 E
T 92]EEFF/ 
vC vC vC vC vC vC vC vCr> > > > >/ > > >jK jK jK jK jK/ jK jK jK\F .
 .
 .
 .
 .
X .
 .
 .
bE E E E EH E E EQ Q Q Q Q8 Q Q Q Q Qr    