
    d                        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	 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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$m%Z%m&Z&m'Z' dZ(dZ)dZ*dZ+dZ, G d de          Z- G d de          Z. G d de          Z/dZ0 G d de          Z1 G d de          Z2dZ3 G d de/          Z4dej5        d fej5        d fd!Z6 ed"d#d            ed$ej5        d            ed%ej5        d           gZ7 G d& d'e/          Z8 G d( d)e          Z9d*Z:d+Z; G d, d-e/          Z< G d. d/e          Z= G d0 d1e          Z> G d2 d3e          Z? G d4 d5e          Z@ G d6 d7e          ZAdS )8zTests for git base objects.    N)contextmanager)BytesIO)permutations)TestCase   )ObjectFormatException)MAX_TIMEBlobCommitShaFileTagTree	TreeEntry_parse_tree_py_sorted_tree_items_pycheck_hexshacheck_identityformat_timezonehex_to_filename
hex_to_shaobject_classparse_timezone
parse_treepretty_format_tree_entry
sha_to_hexsorted_tree_items   )ext_functest_builderfunctest_buildermake_commitmake_objects(   6f670c0fb53f9463760b7295fbb814e965fb20c8s(   2969be3e8ee1c0222396a5611407e4769f14e54bs(   954a536f7819d40e6f637f849ee187dd10066349s(   70c190eb48fa8bbb50ddc692a17b44cb781af7f6s(   71033db03a03c6a36721efcf1968dd8f8e0cf023c                       e Zd Zd Zd ZdS )TestHexToShac                 L    |                      dt          d                     d S )N   ͫͫͫͫͫͫͫͫͫ(   abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd)assertEqualr   selfs    ^/home/feoh/.local/pipx/venvs/poetry/lib/python3.11/site-packages/dulwich/tests/test_objects.pytest_simplezTestHexToSha.test_simple4   s'    ):l+C+CDDDDD    c                 L    |                      dt          d                     d S )Nr&   r%   )r'   r   r(   s    r*   test_reversezTestHexToSha.test_reverse7   s'    z2B'C'CDDDDDr,   N)__name__
__module____qualname__r+   r.    r,   r*   r#   r#   3   s:        E E EE E E E E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 ZdS )BlobReadTestszTest decompression of blobsc                     t           j                            t           j                            t                    ddd|          }|                    t          ||                    S )N..testdata)ospathjoindirname__file__	from_pathr   )r)   clsbaseshadirs        r*   get_sha_filezBlobReadTests.get_sha_file>   sG    gll27??844dD*dSS}}_S#66777r,   c                 :    |                      t          d|          S )z0Return the blob named sha from the test data dirblobs)rB   r
   r)   r@   s     r*   get_blobzBlobReadTests.get_blobB   s      w444r,   c                 :    |                      t          d|          S )Ntrees)rB   r   rE   s     r*   get_treezBlobReadTests.get_treeF   s      w444r,   c                 :    |                      t          d|          S )Ntags)rB   r   rE   s     r*   get_tagzBlobReadTests.get_tagI   s      fc222r,   c                 :    |                      t          d|          S )Ncommits)rB   r   rE   s     r*   commitzBlobReadTests.commitL   s      C888r,   c                    |                      t                    }|                     |j        d           |                     |                                                                                    d          t                     d S )Ns   test 1
ascii)rF   a_shar'   datar@   	hexdigestencoder)   bs     r*   test_decompress_simple_blobz)BlobReadTests.test_decompress_simple_blobO   si    MM%  ---**,,33G<<eDDDDDr,   c                     |                      t                    }|                     t          |j                  t          |                     d S N)rF   rR   r'   hashidrV   s     r*   	test_hashzBlobReadTests.test_hashT   s=    MM%  adT!WW-----r,   c                 :   d}|                      |          }|                     |j        d           |                     |j        |           |                     |                                                                                    d          |           d S )Ns(   e69de29bb2d1d6434b8b29ae775ad8c2e48c5391r,   rQ   )rF   r'   rS   r\   r@   rT   rU   )r)   r@   rW   s      r*   test_parse_empty_blob_objectz*BlobReadTests.test_parse_empty_blob_objectX   s    9MM#%%%s###**,,33G<<cBBBBBr,   c                    d}t          j        |          }|                     |j        |           |                     |                                                                                    d          t                     d S )Ns   test 2
rQ   )r
   from_stringr'   rS   r@   rT   rU   b_shar)   stringrW   s      r*   test_create_blob_from_stringz*BlobReadTests.test_create_blob_from_string_   sm    V$$(((**,,33G<<eDDDDDr,   c                     t          j        d          }|                                }|                    t	          |                    }|                     ||           d S )N   foor
   ra   as_legacy_object	from_filer   r'   r)   b1b_rawb2s       r*   test_legacy_from_filez#BlobReadTests.test_legacy_from_filee   sV    f%%##%%\\'%..))R     r,   c                     t          j        d          }|                    d          }|                    t	          |                    }|                     ||           d S )Nrg      )compression_levelrh   rk   s       r*   'test_legacy_from_file_compression_levelz5BlobReadTests.test_legacy_from_file_compression_levelk   s[    f%%##a#88\\'%..))R     r,   c                 j    d}t          j        |          }|                     |g|j                   d S )N   test 5
)r
   ra   r'   chunkedrc   s      r*   test_chunkszBlobReadTests.test_chunksq   s7    V$$&19-----r,   c           
          g dgddgg dg dg dg dg dd	d
gf	D ]W}t                      }||_        |                     |j                            d          |                                           Xd S )Ns   foo
bar
   bl
a   blie)ry   rz      bloe
)r,   ry   rz   r{   )r,   r,   r,      bla
)r,   r,   r,   r|   r,   )s   blr,      a
aaar}      aT)r
   rv   r'   rS   
splitlines)r)   caserW   s      r*   test_splitlineszBlobReadTests.test_splitlinesv   s    Ow***///%%%***###

 	F 	FD AAIQV..t44allnnEEEE	F 	Fr,   c                    t                      }g d|_        |                     d|j                   g d|_        |                     d|                                           |                     dt          |                     d S )N)   te   sts    5
ru   )r   r   s    6
s   test 6
)r
   rv   r'   rS   as_raw_stringbytesrV   s     r*   test_set_chunkszBlobReadTests.test_set_chunks   s    FF+++	af---+++	aoo&7&7888eAhh/////r,   c                    d}|                      t                    }|                     |j        |           |                     |                                                                                    d          t                     d S )Ns   test 3
rQ   )rF   c_shar'   rS   r@   rT   rU   rc   s      r*   test_parse_legacy_blobz$BlobReadTests.test_parse_legacy_blob   sn    MM%  (((**,,33G<<eDDDDDr,   c                     |                      t                    }|                      t                    }|                     ||           d S rZ   )rF   rR   r'   )r)   blob1blob2s      r*   test_eqzBlobReadTests.test_eq   s@    e$$e$$&&&&&r,   c                    |                      t                    }|                     |                                d         ddt          f           |                     |                                d         ddt
          f           d S )Nr   r~   餁  r      b)rI   tree_shar'   itemsrR   rb   r)   ts     r*   test_read_tree_from_filez&BlobReadTests.test_read_tree_from_file   sk    MM(##1eU';<<<1eU';<<<<<r,   c                     t           j        fd}                     |           d _         fd}|t           _                             t
                    }                     |                                d         ddt          f                                |                                d         ddt          f                                 j        d           d S )Nc                        t           _        d S rZ   )r   _deserialize)old_deserializes   r*   reset_deserializezMBlobReadTests.test_read_tree_from_file_parse_count.<locals>.reset_deserialize   s     /Dr,   r   c                  4    xj         dz  c_          | i |S )Nr   )deserialize_count)argskwargsr   r)   s     r*   counting_deserializezPBlobReadTests.test_read_tree_from_file_parse_count.<locals>.counting_deserialize   s,    ""a'"""?D3F333r,   r~   r   r   r   )
r   r   
addCleanupr   rI   r   r'   r   rR   rb   )r)   r   r   r   r   s   `   @r*   $test_read_tree_from_file_parse_countz2BlobReadTests.test_read_tree_from_file_parse_count   s    +	0 	0 	0 	0 	0 	)***!"	4 	4 	4 	4 	4 	4 1MM(##1eU';<<<1eU';<<</33333r,   c                    |                      t                    }|                     |j        t          df           |                     |j        d           |                     |j        d           |                     |j        d           |                     |j        d           |                     |j	        d           d S )Ns(   51b668fd5bf7061b7d6fa525f88803e6cfadaa51s   signeds   Ali Sabil <ali.sabil@gmail.com>ibIs   This is a signed tag
s   -----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)

iEYEABECAAYFAkliqx8ACgkQqSMmLy9u/kcx5ACfakZ9NnPl02tOyYP6pkBoEkU1
5EcAn0UFgokaSvS371Ym/4W9iJj6vh3h
=ql7y
-----END PGP SIGNATURE-----
)
rL   tag_shar'   objectr   nametaggertag_timemessage	signaturer   s     r*   test_read_tag_from_filez%BlobReadTests.test_read_tag_from_file   s    LL!!HvJK	
 	
 	
 	+++#EFFFZ000$=>>>K-
	
 
	
 
	
 
	
 
	
r,   c                    d}|                      |          }|                     |j        t                     |                     |j        dg           |                     |j        d           |                     |j        d           |                     |j        d           |                     |j        d           |                     |j	        d           |                     |j
        d           d S )Ns(   60dacdc733de308bb77bb76ce0fb0f9b44c9769e(   0d89f20333fbb1d2f3a94da77f4981373d8f4310(   James Westby <jw+debian@jameswestby.net>i>gFr      Test commit
)rO   r'   treer   parentsauthor	committercommit_timecommit_timezoneauthor_timezoner   r)   r@   cs      r*   test_read_commit_from_filez(BlobReadTests.test_read_commit_from_file   s    9KK***%P$QRRR#NOOO&QRRR
333*A...*A...$455555r,   c                    d}|                      |          }|                     |j        d           |                     |j        g            |                     |j        d           |                     |j        d           |                     |j        d           |                     |j        d           |                     |j        d           |                     |j	        d           d S )Nr   s(   90182552c4a85a45ec2a835cadc3451bebdfe870r   ibFr   r   
rO   r'   r   r   r   r   r   r   r   r   r   s      r*   test_read_commit_no_parentsz)BlobReadTests.test_read_commit_no_parents   s    9KK!LMMMB'''#NOOO&QRRR
333*A...*A...$455555r,   c                    d}|                      |          }|                     |j        d           |                     |j        ddg           |                     |j        d           |                     |j        d           |                     |j        d           |                     |j        d           |                     |j        d           |                     |j	        d           d S )	N(   5dac377bdded4c9aeb8dff595f0faeebcc8498cc(   d80c186a03f423a81b39df39dc87fd269736ca86(   ab64bbdcc51b170d21588e5c5d391ee5c0c96dfd(   4cffe90e0a41ad3f5190079d7c8f036bde29cbe6r   ןFr      Merge ../b
r   r   s      r*   test_read_commit_two_parentsz*BlobReadTests.test_read_commit_two_parents   s    9KK!LMMMI;;	
 	
 	
 	#NOOO&QRRR
333*A...*A...O44444r,   c                     d}t          |d          }|                     |t                     |                     ||j                   |                     ||                                           d S )Ns(   5555555555555555555555555555555555555555rg   )r\   r   )r    assertIsInstancer   r'   r\   assertNotEqualr@   r   s      r*   test_stub_shazBlobReadTests.test_stub_sha   sk    3///a(((ad###C)))))r,   N)r/   r0   r1   __doc__rB   rF   rI   rL   rO   rX   r]   r_   re   ro   rs   rw   r   r   r   r   r   r   r   r   r   r   r   r2   r,   r*   r4   r4   ;   s       %%8 8 85 5 55 5 53 3 39 9 9E E E
. . .C C CE E E! ! !! ! !. . .
F F F 0 0 0E E E' ' '
= = =
4 4 4&
 
 
*
6 
6 
6
6 
6 
65 5 5$* * * * *r,   r4   c                       e Zd Zd Zd ZdS )ShaFileCheckTestsc                 `     |            fd}|                      t          |           d S )Nc                  Z                                                                      d S rZ   )set_raw_stringcheck)rS   objs   r*   do_checkz4ShaFileCheckTests.assertCheckFails.<locals>.do_check   s(    t$$$IIKKKKKr,   )assertRaisesr   )r)   r>   rS   r   r   s     ` @r*   assertCheckFailsz"ShaFileCheckTests.assertCheckFails   sL    cee	 	 	 	 	 	 	/:::::r,   c                      |            }|                     |           |                     d |                                           d S rZ   )r   r'   r   )r)   r>   rS   r   s       r*   assertCheckSucceedsz%ShaFileCheckTests.assertCheckSucceeds  sE    cee4   syy{{+++++r,   N)r/   r0   r1   r   r   r2   r,   r*   r   r      s2        ; ; ;, , , , ,r,   r   su   H10@Q;d7B\IRԒxu|eՁa6LFĨjd͠u=w܆/ ҫ.;PS$8#!/$Rc                       e Zd Zd ZdS )ShaFileTestsc                     t          j        t          t                              }|                     |j        d           |                     |j        d           d S )N   tags    <@localhost>)r   rj   r   small_buffer_zlib_objectr'   	type_namer   )r)   sfs     r*   #test_deflated_smaller_window_bufferz0ShaFileTests.test_deflated_smaller_window_buffer  sT     w'?@@AAv...$455555r,   N)r/   r0   r1   r   r2   r,   r*   r   r     s#        6 6 6 6 6r,   r   c                   b    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S )CommitSerializationTestsc           
      `    dddgdddddddd	}|                     |           t          d	i |S 
Nr   r   r   r   r   r   r   )	r   r   r   r   r   author_timer   r   r   r2   )updater    )r)   r   attrss      r*   r    z$CommitSerializationTests.make_commit!  s\    ?;; BD%%  &
 
 	V##U###r,   c                     |                      d          }|                     d|                                           d S )Ns	   iso8859-1encodings   encoding iso8859-1
r    assertInr   r)   r   s     r*   test_encodingz&CommitSerializationTests.test_encoding3  s=    l33-q/@/@AAAAAr,   c                     |                      d          }t                      }|                    |                                           |                     d|j                   d S )N   r   )r    r   r   r   r'   r   )r)   r   c1s      r*   test_short_timestampz-CommitSerializationTests.test_short_timestamp7  s]    ,,XX
!//++,,,R^,,,,,r,   c                    |                      d          }t                      }|                    ddt                      j                   ||_        t                      }|                    |                                           | 	                    |j        |j                   | 	                    |                                |                                           d S )Nr   r   s   data-x  )
r    r   addr
   r\   r   r   r   r   r'   )r)   r   r   r   s       r*   test_full_treez'CommitSerializationTests.test_full_tree=  s    ,,FF	i	***XX
!//++,,,rw'''**B,<,<,>,>?????r,   c                     |                                  }|                     t          |                                          |                                           d S rZ   )r    r'   lenr   
raw_lengthr   s     r*   test_raw_lengthz(CommitSerializationTests.test_raw_lengthG  sI    Q__..//@@@@@r,   c                     |                                  }|                     |j        d           |                     d|                                           d S )Nr   s  tree d80c186a03f423a81b39df39dc87fd269736ca86
parent ab64bbdcc51b170d21588e5c5d391ee5c0c96dfd
parent 4cffe90e0a41ad3f5190079d7c8f036bde29cbe6
author James Westby <jw+debian@jameswestby.net> 1174773719 +0000
committer James Westby <jw+debian@jameswestby.net> 1174773719 +0000

Merge ../b
)r    r'   r\   r   r   s     r*   r+   z$CommitSerializationTests.test_simpleK  sb    JKKK OO	
 	
 	
 	
 	
r,   c                     |                      d          }|                     d|                                           d S )Ni,  r   s    +0005
r   r   s     r*   test_timezonez&CommitSerializationTests.test_timezone[  s<    f66k1??#4#455555r,   c                     |                      d          }|                     d|                                           d S )Nir   s    -0100
r   r   s     r*   test_neg_timezonez*CommitSerializationTests.test_neg_timezone_  s<    i99k1??#4#455555r,   c                     |                                  }t                      }|                    |                                           |                     ||           d S rZ   )r    r   r   as_raw_chunksr'   )r)   r   ds      r*   test_deserializez)CommitSerializationTests.test_deserializec  sT    HH	q(()))Ar,   c                     |                      d          }d | _        |                     d|                                           d S )N2  -----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQIcBAABCgAGBQJULCdfAAoJEACAbyvXKaRXuKwP/RyP9PA49uAvu8tQVCC/uBa8
vi975+xvO14R8Pp8k2nps7lSxCdtCd+xVT1VRHs0wNhOZo2YCVoU1HATkPejqSeV
NScTHcxnk4/+bxyfk14xvJkNp7FlQ3npmBkA+lbV0Ubr33rvtIE5jiJPyz+SgWAg
xdBG2TojV0squj00GoH/euK6aX7GgZtwdtpTv44haCQdSuPGDcI4TORqR6YSqvy3
GPE+3ZqXPFFb+KILtimkxitdwB7CpwmNse2vE3rONSwTvi8nq3ZoQYNY73CQGkUy
qoFU0pDtw87U3niFin1ZccDgH0bB6624sLViqrjcbYJeg815Htsu4rmzVaZADEVC
XhIO4MThebusdk0AcNGjgpf3HRHk0DPMDDlIjm+Oao0cqovvF6VyYmcb0C+RmhJj
dodLXMNmbqErwTk3zEkW0yZvNIYXH7m9SokPCZa4eeIM7be62X6h1mbt0/IU6Th+
v18fS0iTMP/Viug5und+05C/v04kgDo0CPphAbXwWMnkE4B6Tl9sdyUYXtvQsL7x
0+WP1gL27ANqNZiI07Kz/BhbBAQI/+2TFT7oGr0AnFPQ5jHp+3GpUf6OKuT1wT3H
ND189UFuRuubxb42vZhpcXRbqJVWnbECTKVUPsGZqat3enQUB63uM4i6/RdONDZA
fDeF1m4qYs+cUXKNUZ03
=X6RT
-----END PGP SIGNATURE-----)gpgsigsi  tree d80c186a03f423a81b39df39dc87fd269736ca86
parent ab64bbdcc51b170d21588e5c5d391ee5c0c96dfd
parent 4cffe90e0a41ad3f5190079d7c8f036bde29cbe6
author James Westby <jw+debian@jameswestby.net> 1174773719 +0000
committer James Westby <jw+debian@jameswestby.net> 1174773719 +0000
gpgsig -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABCgAGBQJULCdfAAoJEACAbyvXKaRXuKwP/RyP9PA49uAvu8tQVCC/uBa8
 vi975+xvO14R8Pp8k2nps7lSxCdtCd+xVT1VRHs0wNhOZo2YCVoU1HATkPejqSeV
 NScTHcxnk4/+bxyfk14xvJkNp7FlQ3npmBkA+lbV0Ubr33rvtIE5jiJPyz+SgWAg
 xdBG2TojV0squj00GoH/euK6aX7GgZtwdtpTv44haCQdSuPGDcI4TORqR6YSqvy3
 GPE+3ZqXPFFb+KILtimkxitdwB7CpwmNse2vE3rONSwTvi8nq3ZoQYNY73CQGkUy
 qoFU0pDtw87U3niFin1ZccDgH0bB6624sLViqrjcbYJeg815Htsu4rmzVaZADEVC
 XhIO4MThebusdk0AcNGjgpf3HRHk0DPMDDlIjm+Oao0cqovvF6VyYmcb0C+RmhJj
 dodLXMNmbqErwTk3zEkW0yZvNIYXH7m9SokPCZa4eeIM7be62X6h1mbt0/IU6Th+
 v18fS0iTMP/Viug5und+05C/v04kgDo0CPphAbXwWMnkE4B6Tl9sdyUYXtvQsL7x
 0+WP1gL27ANqNZiI07Kz/BhbBAQI/+2TFT7oGr0AnFPQ5jHp+3GpUf6OKuT1wT3H
 ND189UFuRuubxb42vZhpcXRbqJVWnbECTKVUPsGZqat3enQUB63uM4i6/RdONDZA
 fDeF1m4qYs+cUXKNUZ03
 =X6RT
 -----END PGP SIGNATURE-----

Merge ../b
)r    maxDiffr'   r   )r)   rO   s     r*   test_serialize_gpgsigz.CommitSerializationTests.test_serialize_gpgsigi  sb    !! " 
 
& 4   ""7	
 	
 	
 	
 	
r,   c           
          t          t          t          dfdddddt                    }|                     |g          }|                     d	|                                           d S )
N(   a38d6181ff27824c79fc7df825164a212eff6a3f   commit   v2.6.22-rc7zFr   4   Linus Torvalds <torvalds@woody.linux-foundation.org>r   object_type_namer   r   tag_timezoner   r   mergetags  tree d80c186a03f423a81b39df39dc87fd269736ca86
parent ab64bbdcc51b170d21588e5c5d391ee5c0c96dfd
parent 4cffe90e0a41ad3f5190079d7c8f036bde29cbe6
author James Westby <jw+debian@jameswestby.net> 1174773719 +0000
committer James Westby <jw+debian@jameswestby.net> 1174773719 +0000
mergetag object a38d6181ff27824c79fc7df825164a212eff6a3f
 type commit
 tag v2.6.22-rc7
 tagger Linus Torvalds <torvalds@woody.linux-foundation.org> 1183319674 +0000
 
 Linux 2.6.22-rc7
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.7 (GNU/Linux)
 
 iD8DBQBGiAaAF3YsRnbiHLsRAitMAKCiLboJkQECM/jpYsY3WPfvUgLXkACgg3ql
 OK2XeQOiEeXtT76rV4t2WR4=
 =ivrA
 -----END PGP SIGNATURE-----

Merge ../b
r!   r   r   default_messager    r'   r   r)   tagrO   s      r*   test_serialize_mergetagz0CommitSerializationTests.test_serialize_mergetag  s    GH&J#	
 	
 	
 !!C5!11*   ""-	
 	
 	
 	
 	
r,   c           
          t          t          t          dfdddddt                    }|                     ||g          }|                     d	|                                           d S )
Nr	  r
  r  r  r   r  r  r  s  tree d80c186a03f423a81b39df39dc87fd269736ca86
parent ab64bbdcc51b170d21588e5c5d391ee5c0c96dfd
parent 4cffe90e0a41ad3f5190079d7c8f036bde29cbe6
author James Westby <jw+debian@jameswestby.net> 1174773719 +0000
committer James Westby <jw+debian@jameswestby.net> 1174773719 +0000
mergetag object a38d6181ff27824c79fc7df825164a212eff6a3f
 type commit
 tag v2.6.22-rc7
 tagger Linus Torvalds <torvalds@woody.linux-foundation.org> 1183319674 +0000
 
 Linux 2.6.22-rc7
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.7 (GNU/Linux)
 
 iD8DBQBGiAaAF3YsRnbiHLsRAitMAKCiLboJkQECM/jpYsY3WPfvUgLXkACgg3ql
 OK2XeQOiEeXtT76rV4t2WR4=
 =ivrA
 -----END PGP SIGNATURE-----
mergetag object a38d6181ff27824c79fc7df825164a212eff6a3f
 type commit
 tag v2.6.22-rc7
 tagger Linus Torvalds <torvalds@woody.linux-foundation.org> 1183319674 +0000
 
 Linux 2.6.22-rc7
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.7 (GNU/Linux)
 
 iD8DBQBGiAaAF3YsRnbiHLsRAitMAKCiLboJkQECM/jpYsY3WPfvUgLXkACgg3ql
 OK2XeQOiEeXtT76rV4t2WR4=
 =ivrA
 -----END PGP SIGNATURE-----

Merge ../b
r  r  s      r*   test_serialize_mergetagsz1CommitSerializationTests.test_serialize_mergetags  s    GH&J#	
 	
 	
 !!C:!66!D   ""G$	
 $	
 $	
 $	
 $	
r,   c           
         t          t          t          dfdddddt                    }|                     |g          }t                      }|                    |                                           |                     ||           d S 	Nr	  r
  r  r  r   r  r  r  r!   r   r   r  r    r   r   r'   r)   r  rO   r  s       r*   test_deserialize_mergetagz2CommitSerializationTests.test_deserialize_mergetag  s    GH&J#	
 	
 	
 !!C5!11HH	v++--...#####r,   c           
         t          t          t          dfdddddt                    }|                     ||g          }t                      }|                    |                                           |                     ||           d S r  r  r  s       r*   test_deserialize_mergetagsz3CommitSerializationTests.test_deserialize_mergetags  s    GH&J#	
 	
 	
 !!C:!66HH	v++--...#####r,   N)r/   r0   r1   r    r   r   r   r   r+   r   r   r  r  r  r  r  r   r2   r,   r*   r   r      s        $ $ $$B B B- - -@ @ @A A A
 
 
 6 6 66 6 6  1
 1
 1
f$
 $
 $
L1
 1
 1
f$ $ $"$ $ $ $ $r,   r   s9   James Westby <jw+debian@jameswestby.net> 1174773719 +0000c                   p    e Zd Zdddgeedddf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 )CommitParseTestsr   r   r   Nr   c                    g }||                     d|z              ||                    d |D                        ||                     d|z              ||                     d|z              ||                     d|z              |Bt          |                                          D ] \  }	}
|                     |	dz   |
z              !|                     d           ||                     |           |S )Ns   tree c              3       K   | ]	}d |z   V  
dS )s   parent Nr2   ).0ps     r*   	<genexpr>z5CommitParseTests.make_commit_lines.<locals>.<genexpr>-  s&      99Aa999999r,   s   author s
   committer s	   encoding     r,   )appendextendsortedr   )r)   r   r   r   r   r   r   extralinesr   values              r*   make_commit_linesz"CommitParseTests.make_commit_lines  s    LLD)))LL99999999LLf,--- LL2333LL0111%ekkmm44 2 2eTD[501111SLL!!!r,   c                 B    d                      | j        di |          S N   
r2   )r:   r/  r)   r   s     r*   make_commit_textz!CommitParseTests.make_commit_text<  s(    zz0$0::6::;;;r,   c                    t          j        |                                           }|                     d|j                   |                     d|j                   |                     d|j                   |                     d|j                   |                     ddg|j                   t          j	        dddd	d
d          }|                     |t          j	        
                    |j                             |                     d|j                   |                     |t          j	        
                    |j                             |                     d|j                   |                     d |j                   d S )Nr   r   r   r   r              r   ;   r   )r   ra   r4  r'   r   r   r   r   r   datetimeutcfromtimestampr   r   r   r   r   )r)   r   expected_times      r*   r+   zCommitParseTests.test_simple?  s{   t446677!)444DahOOODakRRRDafMMM;; I	
 	
 	
 !)$2r1bAA8,==amLL	
 	
 	
 	A-...8,==amLL	
 	
 	
 	A-...qz*****r,   c                     t          j        |                     ddi                    }|                     dg|j                   d S )N   extra-field   data)r,  )r?  r@  )r   ra   r4  r'   _extrar   s     r*   test_customzCommitParseTests.test_customW  sJ    t44NG;T4UUVV34ah?????r,   c                     t          j        |                     d                    }|                     d|j                   d S )N   UTF-8r   )r   ra   r4  r'   r   r   s     r*   r   zCommitParseTests.test_encoding[  sA    t44h4GGHH1:.....r,   c                    |                      t          |                                            |                      t          |                     d                      |                      t          |                     d                     |                     t          |                     d                     |                     t          |                     t          dg                     d}|                     t          |                     |                     |                     t          |                     |                     |                     t          |                     d                      |                     t          |                     d                      |                     t          |                     d d 	                     d S )
N)r   rD  r      xxx)r   s2   some guy without an email address 1174773719 +0000)r   r   r   r   )r   r   r4  r   rR   )r)   bad_committers     r*   
test_checkzCommitParseTests.test_check_  s     )>)>)@)@AAA  )>)>t)>)L)LMMM  )>)>)>)Q)QRRRfd&;&;&;&H&HIIIfd&;&;UFO&;&T&TUUUMfd&;&;m&;&T&TUUUfd&;&;=&;&Q&QRRRfd&;&;4&;&H&HIIIfd&;&;d&;&K&KLLLD)))FF	
 	
 	
 	
 	
r,   c                 j   t          d          D ]}|                     t          gd          }|                    |||                    d                    |          }||                             d          r|                     t          |           |                     t          |           d S )N   rD  r   r   r2  s   parent)	ranger/  rR   insertr:   
startswithr   r   r   )r)   ir-  texts       r*   test_check_duplicatesz&CommitParseTests.test_check_duplicateso  s    q 	4 	4A**E7X*NNELLE!H%%%::e$$DQx""9-- 4((6666%%fd3333	4 	4r,   c                 T   |                      t          gd          }|d d         }|dd          }t          |          D ]f}t          |          }d                    ||z             }||k    r|                     t          |           K|                     t          |           gd S )NrD  rM  rL  r2  )r/  rR   r   listr:   r   r   r   r)   r-  headersrestpermrR  s         r*   test_check_orderz!CommitParseTests.test_check_order{  s    &&w&JJ)QRRy )) 	4 	4D::D::dTk**Dw((6666%%fd3333	4 	4r,   c                     d}|                      t          |                     t          |                     |                      t          |                     |t                               d S )Ns:   Igor Sysoev <igor@sysoev.ru> 18446743887488505614+42707004rH  )r   r   r4  default_committer)r)   identity_with_wrong_times     r*   'test_check_commit_with_unparseable_timez8CommitParseTests.test_check_commit_with_unparseable_time  s    I 	!
 	!!(4L "  	
 	
 	
 	!!/;L "  	
 	
 	
 	
 	
r,   c                 \   d}t          j        |                     |t                              }t          j        |                     t          |                    }||fD ]H}|                     t
                    5  |                                 ddd           n# 1 swxY w Y   IdS )EDate with overflow should raise an ObjectFormatException when checkeds;   Igor Sysoev <igor@sysoev.ru> 18446743887488505614 +42707004rH  N)r   ra   r4  r\  r   r   r   )r)   r]  commit0commit1rO   s        r*   $test_check_commit_with_overflow_datez5CommitParseTests.test_check_commit_with_overflow_date  s	    K 	! $!!/;L "  
 

 $!!(4L "  
 
 ( 	 	F""#899                	 	s   ?B  B$	'B$	c                 "   d}d}t          j        |                     |                    }|                     |j        |           |                     t                    5  |                                 ddd           dS # 1 swxY w Y   dS )z-Mangled author line should successfully parses^   Karl MacMillan <kmacmill@redhat.com> <"Karl MacMillan <kmacmill@redhat.com>"> 1197475547 -0500sM   Karl MacMillan <kmacmill@redhat.com> <"Karl MacMillan <kmacmill@redhat.com>">rG  N)r   ra   r4  r'   r   r   r   r   )r)   author_lineexpected_identityrO   s       r*   test_mangled_author_linez)CommitParseTests.test_mangled_author_line  s    8 	
' 	 #D$9$9$9$M$MNN 	(9::: 455 	 	LLNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   "BBBc                     t          j        d          }|                     d|j                   |                     g |j                   |                     d|j                   d S )Ns  tree aaff74984cccd156a469afa7d9ab10e4777beb24
author Jelmer Vernooij <jelmer@samba.org> 1412179807 +0200
committer Jelmer Vernooij <jelmer@samba.org> 1412179807 +0200
gpgsig -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABCgAGBQJULCdfAAoJEACAbyvXKaRXuKwP/RyP9PA49uAvu8tQVCC/uBa8
 vi975+xvO14R8Pp8k2nps7lSxCdtCd+xVT1VRHs0wNhOZo2YCVoU1HATkPejqSeV
 NScTHcxnk4/+bxyfk14xvJkNp7FlQ3npmBkA+lbV0Ubr33rvtIE5jiJPyz+SgWAg
 xdBG2TojV0squj00GoH/euK6aX7GgZtwdtpTv44haCQdSuPGDcI4TORqR6YSqvy3
 GPE+3ZqXPFFb+KILtimkxitdwB7CpwmNse2vE3rONSwTvi8nq3ZoQYNY73CQGkUy
 qoFU0pDtw87U3niFin1ZccDgH0bB6624sLViqrjcbYJeg815Htsu4rmzVaZADEVC
 XhIO4MThebusdk0AcNGjgpf3HRHk0DPMDDlIjm+Oao0cqovvF6VyYmcb0C+RmhJj
 dodLXMNmbqErwTk3zEkW0yZvNIYXH7m9SokPCZa4eeIM7be62X6h1mbt0/IU6Th+
 v18fS0iTMP/Viug5und+05C/v04kgDo0CPphAbXwWMnkE4B6Tl9sdyUYXtvQsL7x
 0+WP1gL27ANqNZiI07Kz/BhbBAQI/+2TFT7oGr0AnFPQ5jHp+3GpUf6OKuT1wT3H
 ND189UFuRuubxb42vZhpcXRbqJVWnbECTKVUPsGZqat3enQUB63uM4i6/RdONDZA
 fDeF1m4qYs+cUXKNUZ03
 =X6RT
 -----END PGP SIGNATURE-----

foo
s   foo
r  )r   ra   r'   r   rA  r  r   s     r*   test_parse_gpgsigz"CommitParseTests.test_parse_gpgsig  sy    
 
2 	19---QX&&&" H%	
 	
 	
 	
 	
r,   c                     t          j        d          }|                     g |j                   |                     d|j                   d S )Ns  tree a7d6277f78d3ecd0230a1a5df6db00b1d9c521ac
parent c09b6dec7a73760fbdb478383a3c926b18db8bbe
author Neil Matatall <oreoshake@github.com> 1461964057 -1000
committer Neil Matatall <oreoshake@github.com> 1461964057 -1000
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJXI80ZCRA6pcNDcVZ70gAAarcIABs72xRX3FWeox349nh6ucJK
 CtwmBTusez2Zwmq895fQEbZK7jpaGO5TRO4OvjFxlRo0E08UFx3pxZHSpj6bsFeL
 hHsDXnCaotphLkbgKKRdGZo7tDqM84wuEDlh4MwNe7qlFC7bYLDyysc81ZX5lpMm
 2MFF1TvjLAzSvkT7H1LPkuR3hSvfCYhikbPOUNnKOo0sYjeJeAJ/JdAVQ4mdJIM0
 gl3REp9+A+qBEpNQI7z94Pg5Bc5xenwuDh3SJgHvJV6zBWupWcdB3fAkVd4TPnEZ
 nHxksHfeNln9RKseIDcy4b2ATjhDNIJZARHNfr6oy4u3XPW4svRqtBsLoMiIeuI=
 =ms6q
 -----END PGP SIGNATURE-----
 

3.3.0 version bump and docs
s  -----BEGIN PGP SIGNATURE-----

wsBcBAABCAAQBQJXI80ZCRA6pcNDcVZ70gAAarcIABs72xRX3FWeox349nh6ucJK
CtwmBTusez2Zwmq895fQEbZK7jpaGO5TRO4OvjFxlRo0E08UFx3pxZHSpj6bsFeL
hHsDXnCaotphLkbgKKRdGZo7tDqM84wuEDlh4MwNe7qlFC7bYLDyysc81ZX5lpMm
2MFF1TvjLAzSvkT7H1LPkuR3hSvfCYhikbPOUNnKOo0sYjeJeAJ/JdAVQ4mdJIM0
gl3REp9+A+qBEpNQI7z94Pg5Bc5xenwuDh3SJgHvJV6zBWupWcdB3fAkVd4TPnEZ
nHxksHfeNln9RKseIDcy4b2ATjhDNIJZARHNfr6oy4u3XPW4svRqtBsLoMiIeuI=
=ms6q
-----END PGP SIGNATURE-----
)r   ra   r'   rA  r  r   s     r*   "test_parse_header_trailing_newlinez3CommitParseTests.test_parse_header_trailing_newline  sa    
 
* 	QX&&&
! H	
 	
 	
 	
 	
r,   )r/   r0   r1   r\  r/  r4  r+   rB  r   rJ  rS  rZ  r^  rc  rg  ri  rk  r2   r,   r*   r"  r"    s        977
 !#   @< < <+ + +0@ @ @/ / /
 
 
 
4 
4 
44 4 4
 
 
&  *  &/
 /
 /
b$
 $
 $
 $
 $
r,   r"    r   r   )   a.cr~      a/crn  rm  r~   ro  c                       e Zd Zd Zd Zd Zd Zd Zd Z e	ee
          Z eee          Zd Z e	ee          Z eee          Zd Z e	ee          Z eee          Zd	 Zd
 ZdS )	TreeTestsc                     d}t                      }|                    dd|           |                     |d         d|f           |                     dt          |          z   |                                           d S )Nr      mynamerm     100755 myname )r   r   r'   r   r   r)   myhexshaxs      r*   test_addzTreeTests.test_add)  sy    >FF	i8,,,9(';<<<+j.B.BBAOODUDUVVVVVr,   c                 
   d}t                      }d|f|d<   |                     dt          |          z   |                                           |                     dt          |          z   t	          |                     d S )Nr   rm  rs  rt  )r   r'   r   r   r   ru  s      r*   r+   zTreeTests.test_simple0  s|    >FF (+)+j.B.BBAOODUDUVVV+j.B.BBE!HHMMMMMr,   c                     t                      }d|d<   |                     d|j                   t          j        df|d<   |                     d|j                   d S )Nrl  rn  s(   0c5c6bc2c081accfbc250331b19e43b904ab9cddr   s   a.bs(   07bfcb5f3ada15bbebdfa3bbb8fd858a363925c8)r   r'   r\   statS_IFDIRr)   rw  s     r*   test_tree_update_idzTreeTests.test_tree_update_id7  s]    FFK&	DadKKK\#NO&	DadKKKKKr,   c                     t                      }t                                          D ]
\  }}|||<   |                     t          |                                           d S rZ   r   _TREE_ITEMSr   r'   _SORTED_TREE_ITEMSr)   rw  r   items       r*   test_tree_iteritems_dir_sortz&TreeTests.test_tree_iteritems_dir_sort>  Z    FF%++-- 	 	JD$AdGG+QWWYY77777r,   c                     t                      }t                                          D ]
\  }}|||<   |                     t          |                                           d S rZ   r  r  s       r*   test_tree_items_dir_sortz"TreeTests.test_tree_items_dir_sortD  r  r,   c           	      D   t           j                            t           j                            t                    dddd          }t          j        t          |t                              }| 	                    ddt          fddt          fgt           |                                                               dt          t                    z   }fd}| 	                    d	dt          fg ||                     |                     t           ||d
           d S )Nr6   r7   rH   r~   r   r      0100644 foo c                  .    t           | i |          S rZ   rU  )r   r   r   s     r*   eval_parse_treez6TreeTests._do_test_parse_tree.<locals>.eval_parse_treeT  s     

D3F33444r,   rg   T)strict)r8   r9   r:   r;   r<   r   r=   r   r   r'   rR   rb   rU  r   r   r   r   )r)   r   rA   obroken_treer  s    `    r*   _do_test_parse_treezTreeTests._do_test_parse_treeJ  s   gll27??844dD*gVVN?399::He$tXu&=>AOO--..//	
 	
 	

 'E):)::	5 	5 	5 	5 	5 	68U34ook6R6RSSS!?K 	 	
 	
 	
 	
 	
r,   c                    fd} |t                     }|                     t          |           |                     |d         t                     t
          t          t          f}|                     ||d           |                     ||ddi           d}|                     ||dd|fi           |                     ||ddi           d S )Nc                 6    t           | d                    S )NFr  )entriesr   s    r*   do_sortz5TreeTests._do_test_sorted_tree_items.<locals>.do_sort`  s    ))'599:::r,   r   rg   )r   r   r7  r   rF  )rm  90  )	r  r'   r  r   r   	TypeError
ValueErrorAttributeErrorr   )r)   r   r  actualerrorsrv  s    `    r*   _do_test_sorted_tree_itemsz$TreeTests._do_test_sorted_tree_items_  s    	; 	; 	; 	; 	; %%+V444fQi333 Z8&'6222&'FI+>???>&'FVX4F+GHHH&'F4E+FGGGGGr,   c           	          |                      t          dt          j        d          t          ddd          t          dt          j        d          gt	           |t
          d                               d S )Nr~   r   rn  rm  ro  T)r'   r   r{  r|  rU  r  )r)   r   s     r*   %_do_test_sorted_tree_items_name_orderz/TreeTests._do_test_sorted_tree_items_name_order{  s    L? 
 ? 
 L? " "";5566%	
 	
 	
 	
 	
r,   c                 >   t           }t          t                    }|                     |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           |                     |d           |                     |d|z              t          t
                    }|                     |d|z   dz   |z              |                     |d|z   dz   |z              |                     |d|z   dz   |z              |                     |d|z   dz   |z              d S )Ns
   100644 .a s   100644  s	   100644 . s   100644 a/a s
   100644 .. s   100644 .git s	   100644 a s	   100755 a s	   160000 a s	   123456 a s	   123abc a r  s   100644 a xxxxxs   100644 a xxxxxxxxxxxxxxxxxx s(   100644 a xxxxxxxxxxxxxxxxxxxxx
100644 b s
   
100644 b s
   
100755 a s	   100644 b s
   
100644 a )r   r   rR   r   r   rb   )r)   r   r@   sha2s       r*   rJ  zTreeTests.test_check  sT    	  NS$8999a!3444a!4555a3!6777a#!5666a!1C!7888 	  MC$7888  MC$7888  MC$7888a!4555a!4555a!1C!7888 	a!;<<<a!DEEEa!NQT!TUUU %    MC$7/$IC$OPPP  MC$7/$ID$PQQQa!4!F!MNNNa!5!G#!MNNNNNr,   c                     t                      }dt          f|d<   |                     dht          |                     d S )Nr   rg   )r   rR   r'   setr   s     r*   	test_iterzTreeTests.test_iter  s=    FFu%&	&3q66*****r,   N)r/   r0   r1   rx  r+   r~  r  r  r  r   r   test_parse_treer   r   test_parse_tree_extensionr  r   test_sorted_tree_itemsr    test_sorted_tree_items_extensionr  !test_sorted_tree_items_name_order+test_sorted_tree_items_name_order_extensionrJ  r  r2   r,   r*   rq  rq  (  sP       W W WN N NL L L8 8 88 8 8
 
 
$ '&':NKKO 4 45H* U UH H H* .-"$9  (<';"$5( ($
 
 
, )9(8-/D) )% 3G2F-/@3 3/ O  O  OD+ + + + +r,   rq  c                       e Zd Zd Zd ZdS )TagSerializeTestsc           	          t          t          dddt          dfdd          }|                     d|                                           d S )	N"   Jelmer Vernooij <jelmer@samba.org>   0.1s   Tag 0.1r   <r   r   r   r   r   r   r  s   object d80c186a03f423a81b39df39dc87fd269736ca86
type blob
tag 0.1
tagger Jelmer Vernooij <jelmer@samba.org> 423423423 +0000

Tag 0.1r!   r   r
   r'   r   r}  s     r*   test_serialize_simplez'TagSerializeTests.test_serialize_simple  si    8EF
 
 
 	 OO	
 	
 	
 	
 	
r,   c           	          t          t          ddd t          dfdd          }|                     d|                                           d S )Nr  r  r   r  r   r  s|   object d80c186a03f423a81b39df39dc87fd269736ca86
type blob
tag 0.1
tagger Jelmer Vernooij <jelmer@samba.org> 423423423 +0000
r  r}  s     r*   test_serialize_none_messagez-TagSerializeTests.test_serialize_none_message  si    8EF
 
 
 	% OO		
 		
 		
 		
 		
r,   N)r/   r0   r1   r  r  r2   r,   r*   r  r    s2        
 
 
.
 
 
 
 
r,   r  sE   Linus Torvalds <torvalds@woody.linux-foundation.org> 1183319674 -0700s   Linux 2.6.22-rc7
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (GNU/Linux)

iD8DBQBGiAaAF3YsRnbiHLsRAitMAKCiLboJkQECM/jpYsY3WPfvUgLXkACgg3ql
OK2XeQOiEeXtT76rV4t2WR4=
=ivrA
-----END PGP SIGNATURE-----
c                   \    e Zd ZdddeefdZd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd ZdS )TagParseTestsr	  r
  r  c                 2   g }||                     d|z              ||                     d|z              ||                     d|z              ||                     d|z              |*|                     d           |                     |           |S )Ns   object s   type s   tag s   tagger r,   )r)  )r)   
object_shar  r   r   r   r-  s          r*   make_tag_lineszTagParseTests.make_tag_lines  s     !LLj0111'LL$44555LL4(((LLf,---LLLL!!!r,   c                 B    d                      | j        di |          S r1  )r:   r  r3  s     r*   make_tag_textzTagParseTests.make_tag_text  s(    zz-$-7777888r,   c                 &   t                      }|                    |                                            |                     d|j                   |                     d|j                   |j        \  }}|                     d|           |                     t          |           |                     t          j        	                    |j
                  t          j        dddddd	                     |                     d
|j                   d S )Nr  r  r	  r6     r      6   "   鐝)r   r   r  r'   r   r   r   r   r;  r<  r   r  )r)   rw  object_typer  s       r*   
test_parsezTagParseTests.test_parse  s   EE	++--...CQX	
 	
 	
 	000"#(ZDjQQQ---..qz::dAq"b"55	
 	
 	
 	00000r,   c                    t                      }|                    |                     d                      |                     d |j                   |                     d|j                   |                     d |j                   d S )Nr   r  )r   r   r  r'   r   r   r   r}  s     r*   test_parse_no_taggerz"TagParseTests.test_parse_no_tagger&  s~    EE	++4+88999qx(((000qz*****r,   c                    t                      }|                    |                     d                      |                     d |j                   |                     d|j                   |                     t          j                            |j                  t          j        dddddd                     |                     d	|j	                   |                     d
|j
                   d S )N)r   r  r6  r  r   r  r  r  r  r  )r   r   r  r'   r   r   r;  r<  r   r  r   r}  s     r*   test_parse_no_messagez#TagParseTests.test_parse_no_message-  s    EE	++D+99:::qy)))CQX	
 	
 	
 	..qz::dAq"b"55	
 	
 	
 	00000000r,   c                 P   |                      t          |                                            |                     t          |                     d                      |                     t          |                     d                      |                     t          |                     d                      |                     t          |                     d                     |                     t          |                     d                     |                     t          |                     d                     |                     t          |                     d                     |                     t          |                     d	                     d S )
N)r  )r  )r   r,   s   foobars2   some guy without an email address 1183319674 -0700r  sR   Linus Torvalds <torvalds@woody.linux-foundation.org> Sun 7 Jul 2007 12:54:34 +0700rF  )r   r   r  r   r(   s    r*   rJ  zTagParseTests.test_check;  s     d&8&8&:&:;;;c4#5#5#5#F#FGGGc4#5#5t#5#L#LMMMc4#5#54#5#@#@AAAc4#5#53#5#?#?@@@c4#5#5y#5#Q#QRRRL   	
 	
 	
 	5   	
 	
 	
 	c4#5#5#5#H#HIIIIIr,   c                 d    |                      t          |                     d                     d S )Ns@   Linus Torvalds <torvalds@woody.linux-foundation.org> 423423+0000r  )r   r   r  r(   s    r*   %test_check_tag_with_unparseable_fieldz3TagParseTests.test_check_tag_with_unparseable_fieldS  sD    #   	
 	
 	
 	
 	
r,   c                 B   d                     t          dz             }t          j        |                     |                                                    }|                     t                    5  |                                 ddd           dS # 1 swxY w Y   dS )r`  z"Some Dude <some@dude.org> {} +0000r   r  N)	formatr	   r   ra   r  rU   r   r   r   )r)   r   r  s      r*   !test_check_tag_with_overflow_timez/TagParseTests.test_check_tag_with_overflow_time^  s    5<<X\JJod000JJKK455 	 	IIKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   2BBBc                     t          d          D ]`}|                                 }|                    |||                    |                     t          d                    |                     ad S N   r2  )rN  r  rO  r   r   r:   )r)   rQ  r-  s      r*   rS  z#TagParseTests.test_check_duplicatese  so    q 	: 	:A''))ELLE!H%%%!!#uzz%'8'89999	: 	:r,   c                 B   |                                  }|d d         }|dd          }t          |          D ]f}t          |          }d                    ||z             }||k    r|                     t
          |           K|                     t
          |           gd S r  )r  r   rU  r:   r   r   r   rV  s         r*   rZ  zTagParseTests.test_check_orderl  s    ##%%)QRRy )) 	1 	1D::D::dTk**Dw((d3333%%c40000	1 	1r,   c                    g }t                      }|                    |j                   |                    ddt	                      j                   |                                }|                    |j                   |                    |j                   |                     |d         |dd                    |                     |d         |d                    dS )zICheck Tree.id is correctly updated when the tree is copied after updated.r@  r   r   r   Nr   )r   r)  r\   r   r
   copyassertNotInr'   )r)   shasr   copieds       r*   test_tree_copy_after_updatez)TagParseTests.test_tree_copy_after_updatey  s    vvDG%+++DGFIa$qrr(+++a$q'*****r,   N)r/   r0   r1   default_taggerr  r  r  r  r  r  rJ  r  r  rS  rZ  r  r2   r,   r*   r  r    s         ?"   ,9 9 91 1 1 + + +1 1 1J J J0	
 	
 	
  : : :1 1 1+ + + + +r,   r  c                       e Zd Zd Zd ZdS )
CheckTestsc                     t          t          d           |                     t          t           dd           |                     t          t           dd           |                     t          t           dd           d S )Nzfailed to check good shas'   111111111111111111111111111111111111111zsha too shorts)   11111111111111111111111111111111111111111zsha too longs(   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzinvalid characters)r   rR   r   r   r(   s    r*   test_check_hexshazCheckTests.test_check_hexsha  s    U6777!<O	
 	
 	
 	!<N	
 	
 	
 	! 		
 	
 	
 	
 	
r,   c                 v   t          dd           t          dd           |                     t          t           dd           |                     t          t           dd           |                     t          t           dd	           |                     t          t           d
d	           |                     t          t           dd           |                     t          t           dd           |                     t          t           dd           |                     t          t           dd           |                     t          t           dd           |                     t          t           dd           |                     t          t           dd           |                     t          t           dd           d S )Ns$   Dave Borowitz <dborowitz@google.com>zfailed to check good identitys    <dborowitz@google.com>s   <dborowitz@google.com>zno space before emails   Dave Borowitzzno emails   Dave Borowitz <dborowitzzincomplete emails   dborowitz@google.com>s%   Dave Borowitz <<dborowitz@google.com>typos%   Dave Borowitz <dborowitz@google.com>>s'   Dave Borowitz <dborowitz@google.com>xxxztrailing characterss$   Dave<Borowitz <dborowitz@google.com>zreserved byte in names$   Dave>Borowitz <dborowitz@google.com>s$   Dave Borowitz <dborowitz@google.com>z	null bytes$   Dave
Borowitz <dborowitz@google.com>znewline byte)r   r   r   r(   s    r*   test_check_identityzCheckTests.test_check_identity  s   3+	
 	
 	
 	13RSSS!>3LNe	
 	
 	
 	!>3CZ	
 	
 	
 	!'		
 	
 	
 	!$		
 	
 	
 	!4		
 	
 	
 	!4		
 	
 	
 	!6!		
 	
 	
 	!6!		
 	
 	
 	!3#		
 	
 	
 	!3#		
 	
 	
 	!4		
 	
 	
 	!4		
 	
 	
 	
 	
r,   N)r/   r0   r1   r  r  r2   r,   r*   r  r    s7        
 
 
G
 G
 G
 G
 G
r,   r  c                   V    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S )TimezoneTestsc                 L    |                      dt          d                     d S )N)r   F   +0000r'   r   r(   s    r*   test_parse_timezone_utcz%TimezoneTests.test_parse_timezone_utc  s&    ^H%=%=>>>>>r,   c                 L    |                      dt          d                     d S )N)r   T   -0000r  r(   s    r*    test_parse_timezone_utc_negativez.TimezoneTests.test_parse_timezone_utc_negative  s&    N8$<$<=====r,   c                 L    |                      dt          d                     d S )Nr  r   r'   r   r(   s    r*   test_generate_timezone_utcz(TimezoneTests.test_generate_timezone_utc  s&    ?1#5#566666r,   c                 N    |                      dt          dd                     d S )Nr  r   Tr  r(   s    r*   #test_generate_timezone_utc_negativez1TimezoneTests.test_generate_timezone_utc_negative  s(    ?1d#;#;<<<<<r,   c                 L    |                      dt          d                     d S )N)  F   +0100r  r(   s    r*   test_parse_timezone_cetz%TimezoneTests.test_parse_timezone_cet  s'    )>(+C+CDDDDDr,   c                 L    |                      dt          d                     d S )Nr  r  r  r(   s    r*   test_format_timezone_cetz&TimezoneTests.test_format_timezone_cet  s&    ?7#;#;<<<<<r,   c                 L    |                      dt          d                     d S )N   -0400r  r(   s    r*   test_format_timezone_pdtz&TimezoneTests.test_format_timezone_pdt  s&    ?<#@#@AAAAAr,   c                 L    |                      dt          d                     d S )N)r  Fr  r  r(   s    r*   test_parse_timezone_pdtz%TimezoneTests.test_parse_timezone_pdt  s'    .x0H0HIIIIIr,   c                 f    |                      dt          t          d                               d S )N   -0440`r'   r   intr(   s    r*   test_format_timezone_pdt_halfz+TimezoneTests.test_format_timezone_pdt_half  s/    ?37L3M3M#N#NOOOOOr,   c                 h    |                      dt          t          d          d                     d S )N   --700pb  Tr  r(   s    r*   $test_format_timezone_double_negativez2TimezoneTests.test_format_timezone_double_negative  s0    ?3}3E3Et#L#LMMMMMr,   c                 L    |                      dt          d                     d S )N)r  Fr  r  r(   s    r*   test_parse_timezone_pdt_halfz*TimezoneTests.test_parse_timezone_pdt_half   s'    79Q9QRRRRRr,   c                     |                      t          d          dft          d                     |                      t          d          dft          d                     d S )Nr  Fs   +700Tr  )r'   r  r   r(   s    r*   #test_parse_timezone_double_negativez1TimezoneTests.test_parse_timezone_double_negative  s^    #m,,e4nW6M6MNNN#m,,d3^H5M5MNNNNNr,   N)r/   r0   r1   r  r  r  r  r  r  r  r  r   r  r  r  r2   r,   r*   r  r    s        ? ? ?> > >7 7 7= = =E E E= = =B B BJ J JP P PN N NS S SO O O O Or,   r  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )ShaFileCopyTestsc                     t          |j                  }|                                }|                     ||           |                     ||           |                     ||           d S rZ   )r   type_numr  r   r'   assertIsNot)r)   origoclassr  s       r*   assert_copyzShaFileCopyTests.assert_copy	  sf    dm,,yy{{dF+++t$$$t$$$$$r,   c           
      d    dddgdddddddd	}t          d	i |}|                     |           d S r   )r    r  r)   r   rO   s      r*   test_commit_copyz!ShaFileCopyTests.test_commit_copy  sc    ?;; BD%%  &
 
 %%u%%     r,   c                 \    t          t          d          }|                     |           d S )N   i am a blobrS   )r!   r
   r  r)   blobs     r*   test_blob_copyzShaFileCopyTests.test_blob_copy#  s.    4n555r,   c                     t          t          d          }t                      }t          j        |j        f|d<   |                     |           d S )Nr  r     blob)r!   r
   r   r{  S_IFREGr\   r  r)   r  r   s      r*   test_tree_copyzShaFileCopyTests.test_tree_copy'  sI    4n555vvtw/Wr,   c           
      t    t          t          dddddt          df          }|                     |           d S )Nr   r,      Tagger <test@example.com>r  r   (   0000000000000000000000000000000000000000r   r   r   r   r  r   )r!   r   r   r  r)   r  s     r*   test_tag_copyzShaFileCopyTests.test_tag_copy-  sL    /I&
 
 
 	r,   N)r/   r0   r1   r  r  r  r  r$  r2   r,   r*   r
  r
    s_        % % %! ! !$    
 
 
 
 
r,   r
  c                   J    e Zd ZdZe	 d
d            Zd Zd Zd Zd Z	d Z
d	S )ShaFileSerializeTestszD`ShaFile` objects only gets serialized once if they haven't changed.Tc              #   0  K   |j         }|                     |j                   |V  |r|                     |j                   n|                     |j                   |j         }|                     |j                   |                     ||           d S rZ   )r\   assertFalse_needs_serialization
assertTruer   )r)   r    needs_serialization_after_changeold_idnew_ids        r*   assert_serialization_on_changez4ShaFileSerializeTests.assert_serialization_on_change=  s       1222			+ 	7OOC45555S56661222FF+++++r,   c           
          dddgdddddddd	}t          d	i |}|                     |          5  dg|_        d d d            d S # 1 swxY w Y   d S r   )r    r.  r   r  s      r*   test_commit_serializez+ShaFileSerializeTests.test_commit_serializeN  s    ?;; BD%%  &
 
 %%u%%0088 	K 	KIJFN	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	Ks   	AA
A
c                     t          t          d          }|                     |d          5  d|_        d d d            d S # 1 swxY w Y   d S )Nr  r  F)r+  s   i am another blob)r!   r
   r.  rS   r  s     r*   test_blob_serializez)ShaFileSerializeTests.test_blob_serializeb  s    4n555005 1 
 
 	- 	- -DI	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   AA
Ac                    t          t          d          }t                      }t          j        |j        f|d<   |                     |          5  t          j        |j        f|d<   d d d            d S # 1 swxY w Y   d S )Nr  r  r  s   blob2)r!   r
   r   r{  r  r\   r.  r  s      r*   test_tree_serializez)ShaFileSerializeTests.test_tree_serializej  s    4n555vvtw/W0066 	5 	5"lDG4DN	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   A44A8;A8c           
          t          t          dddddt          df          }|                     |          5  d|_        d d d            d S # 1 swxY w Y   d S )	Nr   r,   r   r  r   r!  r"  s   new message)r!   r   r   r.  r   r#  s     r*   test_tag_serializez(ShaFileSerializeTests.test_tag_serializer  s    /I&
 
 
 0055 	) 	)(CK	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   AAAc           	          |                      t                    5  t          t          dddt          df          }|                    |                                           d d d            d S # 1 swxY w Y   d S )Nr   s   some messages)   Tagger <test@example.com> 1174773719+0000r!  )r   r   r   r   )r   r   r!   r   r   r   
_serializer#  s     r*   test_tag_serialize_time_errorz3ShaFileSerializeTests.test_tag_serialize_time_error  s    455 	/ 	/'C	*  C S^^--...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   AA00A47A4N)T)r/   r0   r1   r   r   r.  r0  r2  r4  r6  r9  r2   r,   r*   r&  r&  :  s        NN48, , , ^, K K K(- - -5 5 5) ) )	/ 	/ 	/ 	/ 	/r,   r&  c                       e Zd Zd ZdS )PrettyFormatTreeEntryTestsc                 P    |                      dt          ddd                     d S )Nz840000 tree 40820c38cfb182ce6c8b261555410d8382a5918b	foo
rg   i @  s(   40820c38cfb182ce6c8b261555410d8382a5918b)r'   r   r(   s    r*   test_formatz&PrettyFormatTreeEntryTests.test_format  s<    H$!L 	
 	
 	
 	
 	
r,   N)r/   r0   r1   r=  r2   r,   r*   r;  r;    s#        
 
 
 
 
r,   r;  )Br   r;  r8   r{  
contextlibr   ior   	itertoolsr   dulwich.testsr   r  r   objectsr	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   utilsr   r   r    r!   rR   rb   r   r   r   r#   r4   r   r   r   r   r\  r"  r|  r  r  rq  r  r  r  r  r  r  r
  r&  r;  r2   r,   r*   <module>rD     s  * " !
  				  % % % % % %       " " " " " " " " " " " " * * * * * *P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P
! ! ! ! ! ! ! ! ! ! ! ! 	4336
5E E E E E8 E E Ez* z* z* z* z*H z* z* z*z, , , , , , , ,"	, 6 6 6 6 68 6 6 6u$ u$ u$ u$ u$x u$ u$ u$p Q }
 }
 }
 }
 }
( }
 }
 }
B D<D
E\FG  Ifh KLLIdDL"MNNIfdl$OPP U+ U+ U+ U+ U+! U+ U+ U+p+
 +
 +
 +
 +
 +
 +
 +
^ Q H+ H+ H+ H+ H+% H+ H+ H+VW
 W
 W
 W
 W
 W
 W
 W
t$O $O $O $O $OH $O $O $ON/ / / / /x / / /dO/ O/ O/ O/ O/H O/ O/ O/d
 
 
 
 
 
 
 
 
 
r,   