o ö]Lb¨ºã@s¶ddlmZddlZddlmZmZddlmZddlm Z m Z ddl m Z ddl mZGd d „d ejƒZGd d „d eƒZGd d„deƒZGdd„deƒZdd„Zdd„Zdd„ZdS)é)Úabsolute_importNé)ÚhexÚnullrev)Úgetattr)ÚerrorÚmdiff)Ú repository)Ú storageutilc@s&eZdZeejddƒsejjZdSdS)Ú basetestcaseÚassertRaisesRegexFN)Ú__name__Ú __module__Ú __qualname__rÚunittestÚTestCaseÚassertRaisesRegexpr ©rrú;/usr/lib/python3/dist-packages/mercurial/testing/storage.pyr s ÿÿr c@s0eZdZdZdd„Zdd„Zdd„Zdd „Zd S) ÚifileindextestszÔGeneric tests for the ifileindex interface. All file storage backends for index data should conform to the tests in this class. Use ``makeifileindextests()`` to create an instance of this type. c Csª| ¡}| t|ƒdd¡| t|ƒgd¡t|ƒ}| t¡ t|ƒWdƒn1s.wY| |  d¡¡| |  d¡¡| |  t ¡¡| |  |j ¡¡| |  d¡¡| |  d¡¡| t|  ¡ƒg¡t|  ¡ƒ}| t¡ t|ƒWdƒn1sˆwY| t|j ddƒg¡| |  |j ¡|j |j f¡| | t ¡t t f¡| tj¡ |  d¡Wdƒn1sÈwYtd d ƒD]!}|t krÙqÒ| t¡ | |¡Wdƒn1sîwYqÒ| | |j ¡t ¡| | t ¡|j ¡| tj¡ | d¡Wdƒn 1swYtd d ƒD]%}|t kr2q)| t¡ | |¡Wdƒn 1sHwYq)| | |j ¡|j ¡| | t ¡|j ¡| | t|j ƒ¡|j ¡| | d t ¡|j ¡| tj¡ | d ¡Wdƒn 1s”wY| tj¡| t|j ƒdd …¡Wdƒn 1s·wY| tj¡ | d¡Wdƒn 1sÓwY| tj¡ | d¡Wdƒn 1sïwY| tj¡ | d¡Wdƒn 1s wY| tj¡ | d¡Wdƒn 1s'wYtd d ƒD]%}|t kr:q1| t¡ | |¡Wdƒn 1sPwYq1| | t ¡t ¡td d ƒD]%}|t krnqe| t¡ | |¡Wdƒn 1s„wYqe| | t ¡¡td d ƒD]%}|t kr¡q˜| t¡ | |¡Wdƒn 1s·wYq˜| t| |j |j ¡ƒg¡| t¡| t| g¡ƒg¡Wdƒn 1sèwY| t| t g¡ƒg¡| | ¡|j g¡| | |j ¡|j g¡| | d|j g¡|j g¡| | |j |j g¡|j g¡| | |j ¡g¡| tj¡| d¡WdƒdS1sNwYdS)Nrs&new file store has 0 length by defaultsiter yields nothing by defaultó0saaaaaaaaaaaaaaaaaaaaé©Ústartóéûÿÿÿéó%dsbadvalueé ó-2ó1s&11111111111111111111111111111111111111)Ú _makefilefnÚ assertEqualÚlenÚlistÚiterÚ assertRaisesÚ StopIterationÚnextÚ assertFalseÚhasnoderÚnullidÚrevsÚparentsÚ parentrevsrÚ LookupErrorÚrangeÚ IndexErrorÚrevÚnodeÚlookuprÚlinkrevÚ iscensoredÚcommonancestorsheadsÚ ValueErrorÚ descendantsÚheadsÚchildren)ÚselfÚfÚgenr,ÚirrrÚ testempty)sÊ  ÿ   ÿ ÿ  ÿ€ ÿ   ÿ€ ÿÿ ÿ ÿ ÿ ÿ   ÿ€   ÿ€   ÿ€ ÿ $ÿzifileindextests.testemptyc Csä| ¡}| ¡}| dd|d|j|j¡}Wdƒn1swY| t|ƒd¡| t|ƒdg¡t|ƒ}| t|ƒd¡|  t ¡ t|ƒWdƒn1sUwY|  |  |¡¡|  |  t|ƒ¡¡|  |  t¡¡|  |  |j¡¡|  |  |dd…¡¡|  |  t|ƒdd…¡¡| t| ¡ƒdg¡| t|jddƒg¡| t|jddƒdg¡| t|jddƒdg¡| t|jddƒdg¡| t| dd¡ƒg¡| t| dd¡ƒddg¡| t| dd¡ƒgd ¢¡| | |¡|j|jf¡| | d¡ttf¡|  tj¡ | d ¡Wdƒn 1s,wY|  t¡ | d¡Wdƒn 1sGwY| | |¡d¡|  tj¡ | d ¡Wdƒn 1slwY| | d¡|¡|  t¡ | d¡Wdƒn 1swY| | |¡|¡| | d¡|¡| | d ¡|j¡| | d ¡|¡| | t|ƒ¡|¡|  tj¡| t|ƒdd…¡Wdƒn 1sâwY|  tj¡ | d ¡Wdƒn 1sþwY|  tj¡ | d¡Wdƒn 1swY|  tj¡ | d¡Wdƒn 1s6wY|  tj¡ | d¡Wdƒn 1sRwY| | d¡d¡|  t¡ | d¡Wdƒn 1svwY|  | d¡¡|  t¡ | d¡Wdƒn 1s™wY| t| dg¡ƒg¡| | ¡|g¡| | |¡|g¡| |j|gd|g¡|  tj¡|jd gdWdƒn 1sâwY| | |¡g¡dS)Nóinitialrérrr©Ústopr©rrBrréÿÿÿÿréþÿÿÿrr )r!Ú_maketransactionfnÚaddr+r"r#r$r%r(r&r'Ú assertTruer*r)rrr,r-r.rr/r1r2r3r4r5r6r9r:r;)r<r=Útrr3r>rrrÚtestsinglerevisionŸsš ÿ  ÿ ÿ  ÿ ÿ  ÿÿ ÿ ÿ ÿ ÿ  ÿ  ÿÿz"ifileindextests.testsinglerevisionc Csüd}|d}d|d}| ¡}| ¡*}| |d|d|j|j¡}| |d|d||j¡}| |d|d||j¡}Wdƒn1sAwY| t|ƒd¡| t|ƒgd¢¡t|ƒ} | t| ƒd¡| t| ƒd¡| t| ƒd¡|  t ¡ t| ƒWdƒn1sˆwY| t|  ¡ƒgd¢¡| t|  d¡ƒgd¢¡| t|  d¡ƒddg¡| t|  d¡ƒdg¡| t|  d¡ƒg¡| t|j dd ƒddg¡| t|j dd ƒgd¢¡| t|j dd ƒgd¢¡| t|  dd¡ƒgd ¢¡| t|  dd¡ƒddg¡| t|  dd¡ƒddg¡| |  |¡|j|jf¡| |  |¡||jf¡| |  |¡||jf¡| |  d¡ttf¡| |  d¡dtf¡| |  d¡dtf¡| | |¡d¡| | |¡d¡| | |¡d¡|  tj¡ | d ¡Wdƒn 1s–wY| | d¡|¡| | d¡|¡| | d¡|¡|  t¡ | d¡Wdƒn 1sÌwY| | |¡|¡| | d¡|¡| | d ¡|¡| | t|ƒ¡|¡| | |¡|¡| | d¡|¡| | d ¡|¡| | t|ƒ¡|¡| | d¡d¡| | d¡d¡| | d¡d¡|  t¡ | d¡Wdƒn 1sNwY| | d¡¡| | d¡¡| | d¡¡|  t¡ | d¡Wdƒn 1swY| | ||j¡g¡| | ||¡|g¡| | ||¡|g¡| | ||¡|g¡| | ||¡|g¡| | ||¡|g¡| t| dg¡ƒddg¡| t| dg¡ƒdg¡| t| ddg¡ƒddg¡| | ¡|g¡| | |¡|g¡| | |¡|g¡| | |¡|g¡| |j|gd ||g¡| |j|gd ||g¡| |j||gd ||g¡|  tj¡|jd gd Wdƒn 1sZwY| | |¡|g¡| | |¡|g¡| | |¡g¡dS)NóxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxóyózrrBé©rrBrrrCrErrr )r!rHrIr+r"r#r$r%r(r&r'r,r-r.rr2rr/r3r1r4rr5r)r6r7r9r:r;) r<Ú fulltext0Ú fulltext1Ú fulltext2r=rKÚnode0Únode1Únode2r>rrrÚtestmultiplerevisionsûs²  ý  ÿ ÿ  ÿ  ÿ  ÿÿz%ifileindextests.testmultiplerevisionsc Cs²| ¡}| ¡K}| dd|d|j|j¡}| dd|d||j¡}| dd|d||j¡}| dd|d||j¡}| d d|d ||j¡}| d d|d ||j¡}Wdƒn1sVwY| t|ƒd ¡| t| dg¡ƒgd¢¡| t| dg¡ƒdg¡| t| dg¡ƒg¡| t| dg¡ƒd g¡| t| ddg¡ƒgd¢¡| t| ddg¡ƒdd g¡| | ¡|||g¡| | |¡|||g¡| | |¡|g¡| | |¡|g¡| | |¡|g¡| | |¡|g¡| | |¡|g¡| |j|gd||||g¡| |j|gd||||g¡| |  |¡|||g¡| |  |¡|g¡| |  |¡g¡| |  |¡|g¡| |  |¡g¡| |  |¡g¡dS)Nrrr rBó2ró3rPó4éó5ré)rBrrPr\rrC) r!rHrIr+r"r#r$r9r:r;) r<r=rKrUrVrWÚnode3Únode4Únode5rrrÚtestmultipleheadsjs> úz!ifileindextests.testmultipleheadsN)r rrÚ__doc__r@rLrXrbrrrrr s v\ orc@sheZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dd„Z dd„Z dd„ZdS)ÚifiledatatestszÌGeneric tests for the ifiledata interface. All file storage backends for data should conform to the tests in this class. Use ``makeifiledatatests()`` to create an instance of this type. c Cs¨| ¡}| | ¡i¡| |jddddddœ¡| | t¡d¡tddƒD]!}|tkr/q(| t¡ | |¡Wdƒn1sDwYq(| | |j ¡d¡| |  |j ¡d¡| t j ¡ | d¡Wdƒn1stwY| |  |j ¡d¡| t j ¡ |  d¡Wdƒn1s™wY| | |j ¡¡| t j ¡ |  d¡Wdƒn1s½wY| | |j d¡¡| | |j d ¡¡| t j ¡| dd ¡Wdƒn1síwY| g¡}| t¡ t|ƒWdƒn 1s wY| |j g¡}| t¡ t|ƒWdƒn 1s-wY| t j ¡t| dg¡ƒWdƒdS1sMwYdS) NT©ÚrevisionscountÚ trackedsizer©srevisionscounts trackedsizerrórófooó irrelevant)r!r"Ú storageinfoÚsizerr0r&r1Úrevisionr+Úrawdatarr/Úreadr)ÚrenamedrJÚcmpÚ emitrevisionsr'r(r$)r<r=r?r>rrrr@›sV þ  ÿ€ ÿ ÿ ÿÿ   ÿ  ÿ$ÿzifiledatatests.testemptyc Csêd}| ¡}| ¡}| |d|d|j|j¡}Wdƒn1s!wY| | ¡i¡| |jddddt|ƒdœ¡| | d¡t|ƒ¡| t ¡ | d¡Wdƒn1s^wY| |  |¡|¡| |  |¡|¡| |  |¡|¡|  | |¡¡|  | ||¡¡| | ||d¡¡| |g¡}t|ƒ}| |j|¡| |j|j¡| |j|j¡| |j¡| |j|j¡| |j¡| |j ¡| |j¡| t¡ t|ƒWdƒn1sïwY|j|gdd}t|ƒ}| |j|¡| |j|j¡| |j|j¡| |j¡| |j|j¡| |j¡| |j |¡| |j¡| t¡ t|ƒWdƒn 1sMwY| tj¡t| |d g¡ƒWdƒdS1snwYdS) NrArTrerBrhsextra©Ú revisiondatar)r!rHrIr+r"rlr#rmr&r1rnrorpr)rqrrrJrsr(r3Úp1nodeÚp2nodeÚ assertIsNoneÚlinknodeÚbasenodeÚbaserevisionsizeÚdeltar'rr/r$)r<Úfulltextr=rKr3r>r2rrrrLÑsb ÿ  þ  ÿ       ÿ     ÿ$ÿz!ifiledatatests.testsinglerevisionc Csp d}|d}d|d}| ¡}| ¡*}| |d|d|j|j¡}| |d|d||j¡}| |d|d||j¡}Wdƒn1sAwY| | ¡i¡| |jddddt|ƒt|ƒt|ƒd œ¡| | d¡t|ƒ¡| | d¡t|ƒ¡| | d ¡t|ƒ¡| t ¡ | d¡Wdƒn1sœwY| |  |¡|¡| |  |¡|¡| |  |¡|¡| |  |¡|¡| |  |¡|¡| |  |¡|¡| t j ¡ |  d ¡Wdƒn1síwY| | |¡|¡| | |¡|¡| | |¡|¡| t j ¡ | d ¡Wdƒn 1s$wY| | |¡¡| | |¡¡| | |¡¡| t j ¡ | d ¡Wdƒn 1sXwY| | ||¡¡| | ||¡¡| | ||¡¡| | ||¡¡| | ||¡¡| t j ¡| d d ¡Wdƒn 1s¢wY|j|||gdd } t| ƒ} | | j|¡| | j|j¡| | j|j¡| | j¡| | j|j¡| | j¡| | j |¡| | j¡t| ƒ} | | j|¡| | j|¡| | j|j¡| | j¡| | j|¡| | j¡| | j ¡| | jd|¡t| ƒ} | | j|¡| | j|¡| | j|j¡| | j¡| | j|¡| | j¡| | j ¡| | jd|¡| t¡ t| ƒWdƒn 1szwY|j|||gdd } t| ƒ} | | j|¡| | j|j¡| | j|j¡| | j¡| | j|j¡| | j¡| | j |¡| | j¡t| ƒ} | | j|¡| | j|¡| | j|j¡| | j¡| | j|¡| | j¡| | j ¡| | jd|¡t| ƒ} | | j|¡| | j|¡| | j|j¡| | j¡| | j|¡| | j¡| | j ¡| | jd|¡| t¡ t| ƒWdƒn 1sRwY| t j¡t|jgddƒWdƒn 1srwYt|j|||gddƒ} | t| ƒd¡| dd„| Dƒ|||h¡|j||gddd} t| ƒ} | | j|¡| | j|¡| | j|j¡| | j|j¡| | j¡| | j |¡| | j¡t| ƒ} | | j|¡| | j|j¡| | j|j¡| t¡ t| ƒWdƒn 1swY|j||hdd } t| ƒ} | | j|¡| | j|¡| | j|j¡| | j|j¡| | j¡| | j |¡| | j¡t| ƒ} | | j|¡| | j|¡| | j|j¡| | j|¡| | j¡| | j ¡| | jd|¡| t¡ t| ƒWdƒn 1s–wY|j||gddd} t| ƒ} | | j|¡| | j|¡| | j|j¡| | j|¡| | j¡| | j ¡| | jd|¡|j|gdt j!d} t| ƒ} | | j|¡| | j|j¡| | j|j¡| | j|j¡| | j¡| | j ¡| | jd|¡| t¡ t| ƒWdƒn 1s2wY|j||gdt j!d} t| ƒ} | | j|¡| | j|j¡| | j|j¡| | j|j¡| | j¡| | j ¡| | jd|¡t| ƒ} | | j|¡| | j|¡| | j|j¡| | j|¡| t¡ t| ƒWdƒdS1s±wYdS)NrMrNrOrrBrPTrerhrrrkrts s sbad)Ú nodesordersstoragecSsh|]}|j’qSr©r3)Ú.0ÚorrrÚ ´sz7ifiledatatests.testmultiplerevisions..snodes)r~ru)ruÚassumehaveparentrevisions)ruÚ deltamodes )"r!rHrIr+r"rlr#rmr&r1rnrorr/rpr)rqrrrJrsr(r3rvrwrxryrzr{r|r'ÚProgrammingErrorr$r ÚCG_DELTAMODE_PREV) r<rRrSrTr=rKrUrVrWr>r2ÚresrrrrXsÒ  ý ÿþþþ   ÿ ÿ ÿ ÿÿ      þ   þ  ÿ      þ   þ  ÿÿÿ ÿ    ÿ    þ  ÿ ÿ  þ ÿ  þ  ÿý  þ  $ÿz$ifiledatatests.testmultiplerevisionsc Cs¼d}d}d}dddœ}dddœ}d  d d |g¡}d  d d |g¡}| ¡}| ¡+} | |d| d|j|j¡} | ||| d| |j¡} | ||| d|j|j¡} Wdƒn1sVwY| | d¡t|ƒ¡| | d¡t|ƒ¡| | | ¡|¡| |  | ¡|¡| | | ¡|¡| |  | ¡|¡| |  | ¡|¡| |  | ¡|¡|  |  | ¡¡| |  | ¡d¡|  | | |¡¡|  | | |¡¡|  | | |¡¡|  | | |¡¡dS)Nrjóbarsbazósource0s(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa©scopyscopyrevósource1ó(bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbrió copy: source0 s4copyrev: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  s copy: source1 s4copyrev: bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb  rrBr)r‹ó»»»»»»»»»»»»»»»»»»»»)Újoinr!rHrIr+r"rmr#rnrorpr)rqrJrr) r<rRrSrTÚmeta1Úmeta2Ústored1Ústored2r=rKrUrVrWrrrÚ testrenamed*sRþþýÿýÿ ýzifiledatatests.testrenamedc Csrd}d}d}dddœ}d dd dd g¡}| ¡}| ¡ }| |i|d |j|j¡}| |||d |j|j¡} Wdƒn1s@wY| | d ¡t|ƒd ¡| | d ¡t|ƒ¡| | |¡|¡| |  |¡|¡| | | ¡|¡| |  | ¡|¡| |  |¡|¡| |  | ¡|¡|  |  ||¡¡|  |  ||¡¡|  |  | |¡¡|  |  | |¡¡dS)Ns foos    foos barr‰rŒrŠrirs copyrev: %s s  barrrBr\)rr!rHrIr+r"rmr#rnrorpr)rrrJ) r<rRÚstored0rSrr’r=rKrUrVrrrÚtestmetadataprefixds:þýÿ þz!ifiledatatests.testmetadataprefixc CsB| ¡}d}|d}| ¡#}| |d|d|j|j¡}d}|j|||||jd|dWdƒn1s4wY| t|ƒd¡| | |¡||jf¡| t j ¡ |  |¡Wdƒn1scwY| t j ¡ |  |¡Wdƒn1s~wY| t j ¡|  |¡WdƒdS1sšwYdS)Nóxfoo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo óbar r󪪪ªªªªªªªªªªªªªªªªªrB©Úrawtextr)r!rHrIr+Ú_addrawrevisionfnr"r#r-r&rÚ StorageErrorrnrorp©r<r=rRrSrKrUrVrrrÚtestbadnodereads* ÿü ÿ ÿ "ÿzifiledatatests.testbadnodereadc Cóä| ¡}d}|d}| ¡#}| |d|d|j|j¡}d}|j|||||jd|dWdƒn1s4wY| tj¡ | |¡Wdƒn1sOwY| tj¡| |¡WdƒdS1skwYdS©Nr—r˜rr™rBrš) r!rHrIr+rœr&rrroržrrrÚtestbadnoderevisionraw°ó  ÿü ÿ "ÿz%ifiledatatests.testbadnoderevisionrawc Cr r¡) r!rHrIr+rœr&rrrpržrrrÚtestbadnoderevisionÆr£z"ifiledatatests.testbadnoderevisionc Cs8| ¡}d}|d}|d}| ¡#}| |d|d|j|j¡}d}|j|||||jd|dWdƒn1s8wY| tj¡ | |¡Wdƒn1sSwYt   |||j¡}| ¡}t   ||¡} |j|||||jdd| fd Wdƒn1s„wY|  t|ƒd ¡|  | |¡|¡dS) Nó|foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo r˜sbaz rr™rBršr)r|rP)r!rHrIr+rœr&rrrpr Úhashrevisionsha1rÚtextdiffr"r#) r<r=rRrSrTrKrUrVrWr|rrrÚtestbadnodedeltaÜs. ÿü ÿ  ÿþzifiledatatests.testbadnodedeltac Cs0| ¡}t ddid¡}| ¡$}| dd|d|j|j¡}d}|j|||||jd|dd Wdƒn1s7wY| | d¡¡|  t j ¡ |  d¡Wdƒn1sZwY|  t j ¡ |  d¡Wdƒn1suwY|  t j ¡| d¡WdƒdS1s‘wYdS© Nócensoredó tombstonerirjrrŽrBT©Úcensored)r!r ÚpackmetarHrIr+rœrJr6r&rÚCensoredNodeErrorrnrorp©r<r=r’rKrUrVrrrÚ testcensoredüs.ÿü ÿú  ÿ ÿ "ÿzifiledatatests.testcensoredc Cs´| ¡}t ddid¡}| ¡$}| dd|d|j|j¡}d}|j|||||jd|dd Wdƒn1s7wY| tj ¡|  d¡WdƒdS1sSwYdSr©) r!r r®rHrIr+rœr&rr¯ror°rrrÚtestcensoredrawrevisions ÿü ÿú "ÿz&ifiledatatests.testcensoredrawrevisionN)r rrrcr@rLrXr”r–rŸr¢r¤r¨r±r²rrrrrd’s6@:+! rdc@s€eZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„ZdS)Úifilemutationtestsz×Generic tests for the ifilemutation interface. All file storage backends that support writing should conform to this interface. Use ``makeifilemutationtests()`` to create an instance of this type. c Cs¤| ¡}| ¡,}| dd|d|j|j¡}| dd|d|j|j¡}| dd|d|j|j¡}Wdƒn1s7wY| ||¡| ||¡| t|ƒd¡dS)NrjrrB)r!rHrIr+r"r#©r<r=rKrUrVrWrrrÚ testaddnoop?s ü  zifilemutationtests.testaddnoopc CsŒ| ¡}| ¡4}| tj¡|jd|d|j|jddWdƒn1s'wYWdƒdSWdƒdS1s?wYdS)Nrjrrr)r!rHr&rrÚ addrevisionr+©r<r=rKrrrÚtestaddrevisionbadnodeKs ÿÿþ"þz)ifilemutationtests.testaddrevisionbadnodec Csº| ¡}| ¡K}tdddƒD]}d|>tj@rd|>}nq| tj¡|jd|d|j |j |dWdƒn1s>wYWdƒdSWdƒdS1sVwYdS)NérrFrBrj)Úflags) r!rHr0r ÚREVISION_FLAGS_KNOWNr&rrr¶r+)r<r=rKr?rºrrrÚtestaddrevisionunknownflagTs þÿú"úz-ifilemutationtests.testaddrevisionunknownflagc sø| ¡}g‰‡fdd„‰dd„}| ¡!}g‰‡‡fdd„}‡fdd„}|jgd|||d Wdƒn1s8wY| ˆg¡| ˆg¡| t|ƒd ¡d }t t|ƒ¡|}| ¡}| |d|d |j|j¡}Wdƒn1swwY| ¡}||j|j|j|j|d ifg} | ¡!}g‰‡‡fd d„}‡fd d„}|j| ||||d Wdƒn1s·wY| ˆdg¡| tˆƒd¡| ˆd d dˆd ¡| t |  ¡ƒd g¡| |  ˆd ¡d ¡| |  d ¡ˆd ¡dS)Ncsˆ ||f¡dS©N)Úappend)ÚargsÚkwargs)Ú callbackargsrrÚcbdsz1ifilemutationtests.testaddgroupsimple..cbcSódS©NrrrrrrÚ linkmappergsz9ifilemutationtests.testaddgroupsimple..linkmappercó"| |¡}ˆ |¡ˆ||ƒdSr½©r3r¾©Úclr2r3©rÂÚnodesrrÚ onchangesetmó  z:ifilemutationtests.testaddgroupsimple..onchangesetcóˆ | |¡¡dSr½©r¾r3©rÉr2©rËrrÚondupchangesetróz=ifilemutationtests.testaddgroupsimple..ondupchangeset©Ú addrevisioncbÚduplicaterevisioncbrrjcrÆr½rÇrÈrÊrrrÌrÍcrÎr½rÏrÐrÑrrrÒ•rÓsIØË±\âW’GkF—‹zù€©yrB) r!rHÚaddgroupr"r#rÚtrivialdiffheaderrIr+r$r,r2r3) r<r=rÅrKrÌrÒrRÚdelta0rUÚdeltasr)rÁrÂrËrÚtestaddgroupsimple_sb   ûõ   ÿÿ  ûõÿþz%ifilemutationtests.testaddgroupsimplec sÊ| ¡}gd¢}g}| ¡}|D]}| | |d|d|j|j¡¡qWdƒn1s-wY| ¡}g}t|ƒD] \}}t t|ƒ¡|}| |||j|j|j|j|dif¡q<| ¡"}g‰‡fdd„} |j |dd„|| | d|  ˆ|¡Wdƒn1s†wY|  t|ƒt|ƒ¡|  t |  ¡ƒgd¢¡|  |  |d¡d¡|  |  |d ¡d ¡|  |  |d ¡d ¡|  | d¡|d¡|  | d ¡|d ¡|  | d ¡|d ¡dS) N)rjrˆrMrcrÎr½rÏrЩÚnewnodesrrrÌÉrÓz.onchangesetcSrÃrÄr©ÚxrrrÚÎóz9ifilemutationtests.testaddgroupmultiple..rÔrQrBr)r!rHr¾rIr+Ú enumeraterrØr#r×r"r$r,r2r3) r<r=Ú fulltextsrËrKr}rÚr?r|rÌrrÜrÚtestaddgroupmultiple¯sF  ÿÿÿ  ûóz'ifilemutationtests.testaddgroupmultiplec Cs| ¡}t ddid¡}| ¡$}| dd|d|j|j¡}d}|j|||||jd|dd Wdƒn1s7wYt d d ¡}d ||jd ||difg}| ¡0}|  t j ¡|  |dd„|¡Wdƒn1smwYWdƒdSWdƒdS1s…wYdS)Nrªr«rir—rrŽrBTr¬sxbar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar s|bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar baz sÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌrcSrÃrÄrrÞrrrràúráz=ifilemutationtests.testdeltaagainstcensored..) r!r r®rHrIr+rœrr§r&rÚCensoredBaseErrorr×)r<r=r’rKrUrVr|rÚrrrÚtestdeltaagainstcensoredÞs.ÿü ÿú ÿ ÿÿ"ÿz+ifilemutationtests.testdeltaagainstcensoredc Cs0| ¡}| ¡*}| dd|d|j|j¡}| dd|d||j¡}| dd|d||j¡}Wdƒn1s5wY| ¡}| ||¡Wdƒn1sOwY| t|ƒd¡| t| ¡ƒgd¢¡| |  |¡d¡| |  |¡d¡|  t j ¡|  |¡WdƒdS1s‘wYdS) Nr—rr¥rBs€foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo rrPrQ) r!rHrIr+Úcensorrevisionr"r#r$r,rpr&rr¯r´rrrÚtestcensorrevisionbasicüs  ý ÿ "ÿz*ifilemutationtests.testcensorrevisionbasicc Cs„| ¡}| ¡}tdƒD]}| d|d|||j|j¡q Wdƒn1s(wYtdƒD]}| | |¡|tƒf¡q1dS©Né r)r!rHr0rIr+r"Ú getstrippointÚset)r<r=rKr2rrrÚtestgetstrippointnoparentss  ÿÿ ÿz-ifilemutationtests.testgetstrippointnoparentsc Csˆ| ¡}| ¡}|j}tdƒD]}| d|d||||j¡qWdƒn1s*wYtdƒD]}| | |¡|tƒf¡q3dSré)r!rHr+r0rIr"rërì©r<r=rKÚp1r2rrrÚtestgetstrippointlinears  ÿý ÿz*ifilemutationtests.testgetstrippointlinearc CsÊ| ¡}| ¡@}| dd|d|j|j¡}| dd|d||j¡}| dd|d||j¡| dd|d||j¡| d d|d ||j¡Wdƒn1sKwYtd ƒD]}| | |¡|tƒf¡qTdS) Nrrr rBrYrrZrPr[r\r)r!rHrIr+r0r"rërì)r<r=rKrUrVr2rrrÚtestgetstrippointmultipleheads(s û ÿz1ifilemutationtests.testgetstrippointmultipleheadsc Cs˜| ¡}| ¡*}| dd|d|j|j¡}| dd|d||j¡| dd|d||j¡Wdƒn1s5wY| | d¡dtƒf¡| | d¡dtƒf¡| | d¡dtƒf¡| | d ¡dtƒf¡| | d ¡dtƒf¡| | d¡dtƒf¡| | d ¡ddhf¡| | d ¡ddhf¡| | d ¡ddhf¡| | d¡ddhf¡| | d¡ddhf¡| | d¡d tƒf¡dS)Nrrr rêrYrrBrrPr\r^ééé é )r!rHrIr+r"rërì)r<r=rKrUrrrÚ testgetstrippointearlierlinkrevs5s$ ýz3ifilemutationtests.testgetstrippointearlierlinkrevscCsP| ¡}| ¡}| d|¡Wdƒn1swY| t|ƒd¡dSrÄ)r!rHÚstripr"r#r·rrrÚteststripemptyJs  ÿz!ifilemutationtests.teststripemptyc Cs¶| ¡}| ¡}|j}tdƒD]}| d|d||||j¡}qWdƒn1s*wY| t|ƒd¡| ¡}| d|¡Wdƒn1sLwY| t|ƒd¡dS)Nrêrr)r!rHr+r0rIr"r#r÷rîrrrÚ teststripallRs  ÿþ ÿzifilemutationtests.teststripallc Cs | ¡}| ¡,}| dd|d|j|j¡| dd|d|j|j¡}| dd|d|j|j¡}Wdƒn1s7wY| t|ƒd¡| ¡}| d|¡Wdƒn1sYwY| t|ƒd¡| ¡}| d|¡Wdƒn1s{wY| t|ƒd ¡| tj ¡ |  |¡Wdƒn1sžwY| ¡}| d |¡Wdƒn1s¸wY| t|ƒd ¡| ¡}| d|¡Wdƒn1sÚwY| t|ƒd ¡| tj ¡|  |¡WdƒdS1sþwYdS) Nrrr rrYrêrPrõrr^rB) r!rHrIr+r"r#r÷r&rr/r2)r<r=rKrVrWrrrÚteststrippartialas: ý ÿ ÿ ÿ ÿ ÿ "ÿz#ifilemutationtests.teststrippartialN)r rrrcrµr¸r¼rÛrärærèrírðrñrörørùrúrrrrr³6s    P/    r³cCó|||dœ}tdtf|ƒS)a9Create a unittest.TestCase class suitable for testing file storage. ``makefilefn`` is a callable which receives the test case as an argument and returns an object implementing the ``ifilestorage`` interface. ``maketransactionfn`` is a callable which receives the test case as an argument and returns a transaction object. ``addrawrevisionfn`` is a callable which receives arguments describing a low-level revision to add. This callable allows the insertion of potentially bad data into the store in order to facilitate testing. Returns a type that is a ``unittest.TestCase`` that can be used for testing the object implementing the file storage interface. Simply assign the returned value to a module-level attribute and a test loader should find and run it automatically. ©r!rHrœr)Útyper©Ú makefilefnÚmaketransactionfnÚaddrawrevisionfnÚdrrrÚmakeifileindextests†s ýrcCrû)Nrürd)rýrdrþrrrÚmakeifiledatatests ó ýrcCrû)Nrür³)rýr³rþrrrÚmakeifilemutationtests©rr)Ú __future__rrr3rrÚpycompatrÚrrÚ interfacesr Úutilsr rr rrdr³rrrrrrrÚs.    t)R