
    6h                        S SK Jr  S SKrSSKJrJr  SSKJrJr  SSK	J
r
  SSKJr   " S S	\R                  5      r " S
 S\5      r " S S\5      r " S S\5      rS rS rS rg)    )annotationsN   )hexnullrev)errormdiff)
repository)storageutilc                  x    \ rS rSr\" \R                  SS5      (       d  \R                  R                  rSr	gSr	g)basetestcase   assertRaisesRegexF N)
__name__
__module____qualname____firstlineno__getattrunittestTestCaseassertRaisesRegexpr   __static_attributes__r       ;/usr/lib/python3/dist-packages/mercurial/testing/storage.pyr   r      s2    8$$&95AA00 	 Br   r   c                  0    \ rS rSrSrS rS rS rS rSr	g)	ifileindextests   zGeneric 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                   U R                  5       nU R                  [        U5      SS5        U R                  [        U5      / S5        [	        U5      nU R                  [        5         [        U5        S S S 5        U R                  UR                  S 5      5        U R                  UR                  S5      5        U R                  UR                  [        5      5        U R                  UR                  UR                  5      5        U R                  UR                  S5      5        U R                  UR                  S5      5        U R                  [        UR                  5       5      / 5        [	        UR                  5       5      nU R                  [        5         [        U5        S S S 5        U R                  [        UR                  SS95      / 5        U R                  UR                  UR                  5      UR                  UR                  45        U R                  UR                  [        5      [        [        45        U R                  [        R                   5         UR                  S5        S S S 5        [#        S	S
5       H>  nU[        :X  a  M  U R                  [$        5         UR                  U5        S S S 5        M@     U R                  UR'                  UR                  5      [        5        U R                  UR)                  [        5      UR                  5        U R                  [        R                   5         UR'                  S5        S S S 5        [#        S	S
5       H>  nU[        :X  a  M  U R                  [$        5         UR)                  U5        S S S 5        M@     U R                  UR+                  UR                  5      UR                  5        U R                  UR+                  [        5      UR                  5        U R                  UR+                  [-        UR                  5      5      UR                  5        U R                  UR+                  S[        -  5      UR                  5        U R                  [        R                   5         UR+                  S5        S S S 5        U R                  [        R                   5         UR+                  [-        UR                  5      SS 5        S S S 5        U R                  [        R                   5         UR+                  S5        S S S 5        U R                  [        R                   5         UR+                  S5        S S S 5        U R                  [        R                   5         UR+                  S5        S S S 5        U R                  [        R                   5         UR+                  S5        S S S 5        [#        S	S
5       H>  nU[        :X  a  M  U R                  [         5         UR+                  U5        S S S 5        M@     U R                  UR/                  [        5      [        5        [#        S	S
5       H>  nU[        :X  a  M  U R                  [$        5         UR/                  U5        S S S 5        M@     U R                  UR1                  [        5      5        [#        S	S
5       H>  nU[        :X  a  M  U R                  [$        5         UR1                  U5        S S S 5        M@     U R                  [        UR3                  UR                  UR                  5      5      / 5        U R                  [4        5         U R                  [        UR7                  / 5      5      / 5        S S S 5        U R                  [        UR7                  [        /5      5      / 5        U R                  UR9                  5       UR                  /5        U R                  UR9                  UR                  5      UR                  /5        U R                  UR9                  S UR                  /5      UR                  /5        U R                  UR9                  UR                  UR                  /5      UR                  /5        U R                  UR;                  UR                  5      / 5        U R                  [        R                   5         UR;                  S5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GM  = f! , (       d  f       GN= f! , (       d  f       GM  = f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNy= f! , (       d  f       GNR= f! , (       d  f       GN+= f! , (       d  f       GN= f! , (       d  f       GM  = f! , (       d  f       GM  = f! , (       d  f       GMH  = f! , (       d  f       GN= f! , (       d  f       g = f)Nr   s&   new file store has 0 length by defaults   iter yields nothing by default   0s   aaaaaaaaaaaaaaaaaaaa   start         %ds   badvalue      -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genr5   is        r   	testemptyifileindextests.testempty(   s   Q$MNa"&GH1g}-I . 	4)1&7+,188,-4)9-. 	affh,AFFH~}-J . 	aff2f./4 	188,qxx.BCg.'0BCu001IIl# 2 r1AG|"":.Q /.	  	qxx'2!((3u001EE, 2 r1AG|"":.q	 /.	  	!((+QXX6'*AHH5#ahh-0!((;%'/2AHH=u001HH[! 2 u001HHS]1R() 2 u001HHUO 2 u001HHTN 2 u001HHTN 2 u001HH>? 2 r1AG|"";/ 0/	  	7+W5r1AG|"":.		! /.	  	g./r1AG|"":.Q /.	  	a44QXXqxxHI2Nz*T!--"34b9 + 	ammWI67<QXXJ/*QXXJ7z2QXXJ?AHH:6
CAHH-r2u001JJ|$ 21[ .- .- 21 /. 21 /. 21 21 21 21 21 21 0/ /. /.
 +* 21s   )d'"d9-e7ee0f-f&(f'5f9.g'g g/*h!hh'+h:i'
d69
e
e
e-	0
e?
f	
f$'
f69
g
g
g,/
g>
h	
h$	'
h7	:
i	
ic           	        U R                  5       nU R                  5        nUR                  SS USUR                  UR                  5      nS S S 5        U R	                  [        U5      S5        U R	                  [        U5      S/5        [        U5      nU R	                  [        U5      S5        U R                  [        5         [        U5        S S S 5        U R                  UR                  W5      5        U R                  UR                  [        U5      5      5        U R                  UR                  [        5      5        U R                  UR                  UR                  5      5        U R                  UR                  USS 5      5        U R                  UR                  [        U5      SS 5      5        U R	                  [        UR!                  5       5      S/5        U R	                  [        UR!                  SS95      / 5        U R	                  [        UR!                  SS95      S/5        U R	                  [        UR!                  SS95      S/5        U R	                  [        UR!                  SS95      S/5        U R	                  [        UR!                  SS5      5      / 5        U R	                  [        UR!                  SS5      5      SS/5        U R	                  [        UR!                  SS5      5      / S	Q5        U R	                  UR#                  U5      UR                  UR                  45        U R	                  UR%                  S5      [        [        45        U R                  [&        R(                  5         UR#                  S
5        S S S 5        U R                  [*        5         UR%                  S5        S S S 5        U R	                  UR-                  U5      S5        U R                  [&        R(                  5         UR-                  S
5        S S S 5        U R	                  UR/                  S5      U5        U R                  [*        5         UR/                  S5        S S S 5        U R	                  UR1                  U5      U5        U R	                  UR1                  S5      U5        U R	                  UR1                  S5      UR                  5        U R	                  UR1                  S5      U5        U R	                  UR1                  [        U5      5      U5        U R                  [&        R(                  5         UR1                  [        U5      SS 5        S S S 5        U R                  [&        R(                  5         UR1                  S5        S S S 5        U R                  [&        R(                  5         UR1                  S5        S S S 5        U R                  [&        R(                  5         UR1                  S5        S S S 5        U R                  [&        R(                  5         UR1                  S5        S S S 5        U R	                  UR3                  S5      S5        U R                  [*        5         UR3                  S5        S S S 5        U R                  UR5                  S5      5        U R                  [*        5         UR5                  S5        S S S 5        U R	                  [        UR7                  S/5      5      / 5        U R	                  UR9                  5       U/5        U R	                  UR9                  U5      U/5        U R	                  UR9                  U/S9U/5        U R                  [&        R(                  5         UR9                  S
/S9  S S S 5        U R	                  UR;                  U5      / 5        g ! , (       d  f       GN= f! , (       d  f       GN6= f! , (       d  f       GNu= f! , (       d  f       GNX= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNr= f! , (       d  f       GNK= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f)N   initialr      r'   r    r!   stopr   r   rM   r   r#   r   r(   r)   )r*   _maketransactionfnaddr4   r+   r,   r-   r.   r1   r/   r0   
assertTruer3   r2   r   r   r5   r6   r7   r   r8   r:   r;   r<   r=   r>   r?   rB   rC   rD   )rE   rF   trr<   rG   s        r   testsinglerevision"ifileindextests.testsinglerevision   s2   $$&"55T2q!((AHHED ' 	Q#a1#&1gcA&}-I . 			$(3t9-.7+,188,-4":./3t9Qr?34affh!-aff1fo.3aff1fo.4aff!fn-s3aff!fn-s3affQl+R0affQl+aV4affQl+Y74188QXX*>?a7G*<=u001IIl# 2 z*LLO + 	ta(u001EE, 2 	D)z*FF1I + 	$.!d+"qxx0$.#d),d3u001HHSYq_% 2 u001HHRL 2 u001HHUO 2 u001HHQK 2 u001HHTN 2 	1q)z*IIaL + 	a)z*LLO + 	ammQC0126TF+/tf-v6u001GG,G( 2 	D)2.q '& .-. 21 +*
 21
 +* 21 21 21 21 21
 +*
 +* 21s   +_/```%`7,a	a"a-a?bb#b5,c4c/
_>
`
`"%
`47
a	
a
a*-
a<?
b
b #
b25
c
c
c(c           	        SnUS-   nSU-   S-   nU R                  5       nU R                  5        nUR                  US USUR                  UR                  5      nUR                  US USXdR                  5      nUR                  US USXtR                  5      nS S S 5        U R	                  [        U5      S5        U R	                  [        U5      / SQ5        [        U5      n	U R	                  [        U	5      S5        U R	                  [        U	5      S5        U R	                  [        U	5      S5        U R                  [        5         [        U	5        S S S 5        U R	                  [        UR                  5       5      / SQ5        U R	                  [        UR                  S5      5      / SQ5        U R	                  [        UR                  S5      5      SS/5        U R	                  [        UR                  S5      5      S/5        U R	                  [        UR                  S5      5      / 5        U R	                  [        UR                  SS	95      SS/5        U R	                  [        UR                  SS	95      / SQ5        U R	                  [        UR                  SS	95      / SQ5        U R	                  [        UR                  SS5      5      / S
Q5        U R	                  [        UR                  SS5      5      SS/5        U R	                  [        UR                  SS5      5      SS/5        U R	                  UR                  W5      UR                  UR                  45        U R	                  UR                  W5      XdR                  45        U R	                  UR                  W5      XtR                  45        U R	                  UR                  S5      [        [        45        U R	                  UR                  S5      S[        45        U R	                  UR                  S5      S[        45        U R	                  UR                  U5      S5        U R	                  UR                  U5      S5        U R	                  UR                  U5      S5        U R                  [         R"                  5         UR                  S5        S S S 5        U R	                  UR%                  S5      U5        U R	                  UR%                  S5      U5        U R	                  UR%                  S5      U5        U R                  [&        5         UR%                  S5        S S S 5        U R	                  UR)                  U5      U5        U R	                  UR)                  S5      U5        U R	                  UR)                  S5      U5        U R	                  UR)                  [+        U5      5      U5        U R	                  UR)                  U5      U5        U R	                  UR)                  S5      U5        U R	                  UR)                  S5      U5        U R	                  UR)                  [+        U5      5      U5        U R	                  UR-                  S5      S5        U R	                  UR-                  S5      S5        U R	                  UR-                  S5      S5        U R                  [&        5         UR-                  S5        S S S 5        U R/                  UR1                  S5      5        U R/                  UR1                  S5      5        U R/                  UR1                  S5      5        U R                  [&        5         UR1                  S5        S S S 5        U R	                  UR3                  XtR                  5      / 5        U R	                  UR3                  Xv5      U/5        U R	                  UR3                  Xw5      U/5        U R	                  UR3                  Xg5      U/5        U R	                  UR3                  Xx5      U/5        U R	                  UR3                  X5      U/5        U R	                  [        UR5                  S/5      5      SS/5        U R	                  [        UR5                  S/5      5      S/5        U R	                  [        UR5                  SS/5      5      SS/5        U R	                  UR7                  5       U/5        U R	                  UR7                  U5      U/5        U R	                  UR7                  U5      U/5        U R	                  UR7                  U5      U/5        U R	                  UR7                  U/S	9Xx/5        U R	                  UR7                  U/S	9Xh/5        U R	                  UR7                  Xx/S	9Xx/5        U R                  [         R"                  5         UR7                  S/S	9  S S S 5        U R	                  UR9                  U5      U/5        U R	                  UR9                  U5      U/5        U R	                  UR9                  U5      / 5        g ! , (       d  f       G	N= f! , (       d  f       G	NS= f! , (       d  f       GN= f! , (       d  f       GNd= f! , (       d  f       GN= f! , (       d  f       GNM= f! , (       d  f       N= f)N   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx   y   zr   rM      r   rM   r   r   rN   rP   r#   r   r)   )r*   rS   rT   r4   r+   r,   r-   r.   r1   r/   r0   r5   r6   r7   r   r;   r   r8   r<   r:   r=   r   r>   r2   r?   r@   rB   rC   rD   )
rE   	fulltext0	fulltext1	fulltext2rF   rV   node0node1node2rG   s
             r   testmultiplerevisions%ifileindextests.testmultiplerevisions   s7   	$	9$t+	$$&"EE)T2q!((AHHEEEE)T2q%BEEE)T2q%BE '
 	Q#a),1gcA&cA&cA&}-I . 	affh3affQi)4affQi1a&1affQi1#.affQi"-aff!fn-1v6aff!fn-y9aff!fn-y9affQl+Y7affQl+aV4affQl+aV45)AHHahh+?@5)E88+<=5)E88+<=a7G*<=a1g,7a1g,7uq)uq)uq)u001EE, 2 	E*E*E*z*FF1I + 	%%0!e,$/#e*-u5%%0!e,$/#e*-u51q)1q)1q)z*IIaL + 	a)a)a)z*LLO + 	//xx@"E//=wG//=wG//=wG//=wG//=wGammQC01Aq6:ammQC01A37ammQF34q!f=UG,%1%1%1
 	ug.?ug.?un5~Fu001GG,G( 2 	E*UG4E*UG4E*B/O '& .-8 21 +*" +* +*4 21sT   A)j
j"j4kkk*k<
j"
j14
k
k
k'*
k9<
l
c           	     N   U R                  5       nU R                  5        nUR                  SS USUR                  UR                  5      nUR                  SS USX1R                  5      nUR                  SS USXAR                  5      nUR                  SS USX1R                  5      nUR                  S	S US
XaR                  5      nUR                  SS USX1R                  5      nS S S 5        U R	                  [        U5      S5        U R	                  [        UR                  S/5      5      / SQ5        U R	                  [        UR                  S/5      5      S/5        U R	                  [        UR                  S/5      5      / 5        U R	                  [        UR                  S/5      5      S
/5        U R	                  [        UR                  SS/5      5      / SQ5        U R	                  [        UR                  SS/5      5      SS
/5        U R	                  UR                  5       WWW/5        U R	                  UR                  W5      XWU/5        U R	                  UR                  W5      U/5        U R	                  UR                  U5      U/5        U R	                  UR                  W5      U/5        U R	                  UR                  U5      U/5        U R	                  UR                  U5      U/5        U R	                  UR                  U/S9X5Xx/5        U R	                  UR                  U/S9XEXx/5        U R	                  UR                  U5      XFU/5        U R	                  UR                  U5      U/5        U R	                  UR                  U5      / 5        U R	                  UR                  U5      U/5        U R	                  UR                  U5      / 5        U R	                  UR                  U5      / 5        g ! , (       d  f       GN5= f)Nr   r   r)   rM      2r      3r]      4      5r%      )rM   r   r]   rk   r%   rN   )
r*   rS   rT   r4   r+   r,   r-   rB   rC   rD   )	rE   rF   rV   rb   rc   rd   node3node4node5s	            r   testmultipleheads!ifileindextests.testmultipleheadsi  sR   $$&"EE$b!QXXqxx@EEE$b!UHH=EEE$b!UHH=EEE$b!UHH=EEE$b!UHH=EEE$b!UHH=E ' 	Q#ammQC01?CammQC01A37ammQC0126ammQC01A37ammQF34oFammQF34q!f=UE5$9:%)>?%1%1%1%1%1 	ug.u0LMug.u0LME*U5,ABE*UG4E*B/E*UG4E*B/E*B/E '&s   CP
P$r   N)
r   r   r   r   __doc__rI   rW   re   rq   r   r   r   r   r   r      s!    t%lZ/xm0^%0r   r   c                  Z    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS rSrg)ifiledatatestsi  zGeneric 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                   U R                  5       nU R                  UR                  5       0 5        U R                  UR                  SSS9SSS.5        U R                  UR                  [        5      S5        [        SS5       H>  nU[        :X  a  M  U R                  [        5         UR                  U5        S S S 5        M@     U R                  UR                  UR                  5      S5        U R                  UR                  UR                  5      S5        U R                  [        R                  5         UR                  S5        S S S 5        U R                  UR                  UR                  5      S5        U R                  [        R                  5         UR                  S5        S S S 5        U R                  UR                  UR                  5      5        U R                  [        R                  5         UR                  S5        S S S 5        U R!                  UR#                  UR                  S5      5        U R!                  UR#                  UR                  S	5      5        U R                  [        R                  5         UR#                  SS
5        S S S 5        UR%                  / 5      nU R                  [&        5         [)        U5        S S S 5        UR%                  UR                  /5      nU R                  [&        5         [)        U5        S S S 5        U R                  [        R                  5         [+        UR%                  S/5      5        S S S 5        g ! , (       d  f       GM  = f! , (       d  f       GN<= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)NTrevisionscounttrackedsizer   s   revisionscounts   trackedsizer$   r%   r   r#      foo
   irrelevant)r*   r+   storageinfosizer   r9   r/   r:   revisionr4   rawdatar   r8   readr2   renamedrU   cmpemitrevisionsr0   r1   r-   )rE   rF   rH   rG   s       r   rI   ifiledatatests.testempty  s   "-MM4M@ !15	

 	!,r1AG|"":.q	 /.	  	AHH-s3188,c2u001JJ|$ 2 	)3/u001FF<  2 	188,-u001FF<  2 	ahh,-ahh/0u001EE,. 2 oob!}-I . ooqxxj)}-I . u001,01 21I /. 21
 21
 21 21
 .-
 .- 21s`   )M0<N NN'N9OOO-0
N 	
N
N$'
N69
O
O
O*-
O;c           	     	   SnU R                  5       nU R                  5        nUR                  US USUR                  UR                  5      nS S S 5        U R	                  UR                  5       0 5        U R	                  UR                  SSS9S[        U5      S.5        U R	                  UR                  S5      [        U5      5        U R                  [        5         UR                  S5        S S S 5        U R	                  UR                  W5      U5        U R	                  UR                  U5      U5        U R	                  UR                  U5      U5        U R                  UR                  U5      5        U R                  UR                  XA5      5        U R!                  UR                  XAS-   5      5        UR#                  U/5      n[%        U5      nU R	                  UR&                  U5        U R	                  UR(                  UR                  5        U R	                  UR*                  UR                  5        U R-                  UR.                  5        U R	                  UR0                  UR                  5        U R-                  UR2                  5        U R-                  UR                  5        U R-                  UR4                  5        U R                  [6        5         [%        U5        S S S 5        UR#                  U/SS9n[%        U5      nU R	                  UR&                  U5        U R	                  UR(                  UR                  5        U R	                  UR*                  UR                  5        U R-                  UR.                  5        U R	                  UR0                  UR                  5        U R-                  UR2                  5        U R	                  UR                  U5        U R-                  UR4                  5        U R                  [6        5         [%        U5        S S S 5        U R                  [8        R:                  5         [=        UR#                  US	/5      5        S S S 5        g ! , (       d  f       GN?= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       g = f)
NrL   r   Trw   rM   rz   s   extrarevisiondatar#   )r*   rS   rT   r4   r+   r}   r,   r~   r/   r:   r   r   r   r2   r   r   rU   r   r1   r<   p1nodep2nodeassertIsNonelinknodebasenodebaserevisionsizedeltar0   r   r8   r-   )rE   fulltextrF   rV   r<   rG   r;   s          r   rW   !ifiledatatests.testsinglerevision  sv   $$&"554Q!((CD ' 	"-MM4M@ !3x=A	

 	CM2z*FF1I + 	D)844(3x04)t./dx$789 ootf%3i4(QXX.QXX.#,,'qxx0#../#,,'#))$}-I . ootf4o83i4(QXX.QXX.#,,'qxx0#../x0#))$}-I . u001$!567 21s '& +*4 .-  .- 21s;   +R!R-R*-R< S
R
R'*
R9<
S

Sc           	     (   SnUS-   nSU-   S-   nU R                  5       nU R                  5        nUR                  US USUR                  UR                  5      nUR                  US USXdR                  5      nUR                  US USXtR                  5      nS S S 5        U R	                  UR                  5       0 5        U R	                  UR                  SSS9S[        U5      [        U5      -   [        U5      -   S	.5        U R	                  UR                  S5      [        U5      5        U R	                  UR                  S5      [        U5      5        U R	                  UR                  S
5      [        U5      5        U R                  [        5         UR                  S5        S S S 5        U R	                  UR                  W5      U5        U R	                  UR                  U5      U5        U R	                  UR                  W5      U5        U R	                  UR                  U5      U5        U R	                  UR                  W5      U5        U R	                  UR                  U5      U5        U R                  [        R                  5         UR                  S5        S S S 5        U R	                  UR                  U5      U5        U R	                  UR                  U5      U5        U R	                  UR                  U5      U5        U R                  [        R                  5         UR                  S5        S S S 5        U R                  UR!                  U5      5        U R                  UR!                  U5      5        U R                  UR!                  U5      5        U R                  [        R                  5         UR!                  S5        S S S 5        U R                  UR#                  Xa5      5        U R                  UR#                  Xr5      5        U R                  UR#                  X5      5        U R%                  UR#                  Xq5      5        U R%                  UR#                  X5      5        U R                  [        R                  5         UR#                  SS5        S S S 5        UR'                  XgU/SS9n	[)        U	5      n
U R	                  U
R*                  U5        U R	                  U
R,                  UR                  5        U R	                  U
R.                  UR                  5        U R1                  U
R2                  5        U R	                  U
R4                  UR                  5        U R1                  U
R6                  5        U R	                  U
R                  U5        U R1                  U
R8                  5        [)        U	5      n
U R	                  U
R*                  U5        U R	                  U
R,                  U5        U R	                  U
R.                  UR                  5        U R1                  U
R2                  5        U R	                  U
R4                  U5        U R1                  U
R6                  5        U R1                  U
R                  5        U R	                  U
R8                  SU-   5        [)        U	5      n
U R	                  U
R*                  U5        U R	                  U
R,                  U5        U R	                  U
R.                  UR                  5        U R1                  U
R2                  5        U R	                  U
R4                  U5        U R1                  U
R6                  5        U R1                  U
R                  5        U R	                  U
R8                  SU-   5        U R                  [:        5         [)        U	5        S S S 5        UR'                  XU/SS9n	[)        U	5      n
U R	                  U
R*                  U5        U R	                  U
R,                  UR                  5        U R	                  U
R.                  UR                  5        U R1                  U
R2                  5        U R	                  U
R4                  UR                  5        U R1                  U
R6                  5        U R	                  U
R                  U5        U R1                  U
R8                  5        [)        U	5      n
U R	                  U
R*                  U5        U R	                  U
R,                  U5        U R	                  U
R.                  UR                  5        U R1                  U
R2                  5        U R	                  U
R4                  U5        U R1                  U
R6                  5        U R1                  U
R                  5        U R	                  U
R8                  SU-   5        [)        U	5      n
U R	                  U
R*                  U5        U R	                  U
R,                  U5        U R	                  U
R.                  UR                  5        U R1                  U
R2                  5        U R	                  U
R4                  U5        U R1                  U
R6                  5        U R1                  U
R                  5        U R	                  U
R8                  SU-   5        U R                  [:        5         [)        U	5        S S S 5        U R                  [        R<                  5         [?        UR'                  / SS95        S S S 5        [?        UR'                  XU/SS95      nU R	                  [        U5      S5        U R	                  U Vs1 s H  oR*                  iM     snXgU15        UR'                  X/SSS9n	[)        U	5      n
U R	                  U
R*                  U5        U R	                  U
R,                  U5        U R	                  U
R.                  UR                  5        U R	                  U
R4                  UR                  5        U R1                  U
R6                  5        U R	                  U
R                  U5        U R1                  U
R8                  5        [)        U	5      n
U R	                  U
R*                  U5        U R	                  U
R,                  UR                  5        U R	                  U
R.                  UR                  5        U R                  [:        5         [)        U	5        S S S 5        UR'                  X1SS9n	[)        U	5      n
U R	                  U
R*                  U5        U R	                  U
R,                  U5        U R	                  U
R.                  UR                  5        U R	                  U
R4                  UR                  5        U R1                  U
R6                  5        U R	                  U
R                  U5        U R1                  U
R8                  5        [)        U	5      n
U R	                  U
R*                  U5        U R	                  U
R,                  U5        U R	                  U
R.                  UR                  5        U R	                  U
R4                  U5        U R1                  U
R6                  5        U R1                  U
R                  5        U R	                  U
R8                  SU-   5        U R                  [:        5         [)        U	5        S S S 5        UR'                  X/SSS9n	[)        U	5      n
U R	                  U
R*                  U5        U R	                  U
R,                  U5        U R	                  U
R.                  UR                  5        U R	                  U
R4                  U5        U R1                  U
R6                  5        U R1                  U
R                  5        U R	                  U
R8                  SU-   5        UR'                  U/S[@        RB                  S9n	[)        U	5      n
U R	                  U
R*                  U5        U R	                  U
R,                  UR                  5        U R	                  U
R.                  UR                  5        U R	                  U
R4                  UR                  5        U R1                  U
R6                  5        U R1                  U
R                  5        U R	                  U
R8                  SU-   5        U R                  [:        5         [)        U	5        S S S 5        UR'                  Xh/S[@        RB                  S9n	[)        U	5      n
U R	                  U
R*                  U5        U R	                  U
R,                  UR                  5        U R	                  U
R.                  UR                  5        U R	                  U
R4                  UR                  5        U R1                  U
R6                  5        U R1                  U
R                  5        U R	                  U
R8                  SU-   5        [)        U	5      n
U R	                  U
R*                  U5        U R	                  U
R,                  U5        U R	                  U
R.                  UR                  5        U R	                  U
R4                  U5        U R                  [:        5         [)        U	5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNg= fs  snf ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       g = f)NrZ   r[   r\   r   rM   r]   Trw   rz   r   r#   r|   r   s            s           s   bad)
nodesorders   storages   nodes)r   r   )r   assumehaveparentrevisions)r   	deltamodes              )"r*   rS   rT   r4   r+   r}   r,   r~   r/   r:   r   r   r   r8   r   r2   r   r   rU   r   r1   r<   r   r   r   r   r   r   r   r0   ProgrammingErrorr-   r	   CG_DELTAMODE_PREV)rE   r_   r`   ra   rF   rV   rb   rc   rd   rG   r;   resos                r   re   $ifiledatatests.testmultiplerevisions  s   	$	9$t+	$$&"EE)T2q!((AHHEEEE)T2q%BEEE)T2q%BE '
 	"-MM4M@#$ #Ii.!!i.!!	
 	C	N3C	N3C	N3z*FF1I + 	E*I65)95E*I65)95E*I65)95u001JJ|$ 2 		2	2	2u001FF<  2 	5)*5)*5)*u001IIl# 2 	u01u01u01e/0e/0u001EE,. 2 oouU3$oG3i5)QXX.QXX.#,,'qxx0#../y1#))$3i5)U+QXX.#,,'u-#../#,,'II?)K	

 3i5)U+QXX.#,,'u-#../#,,'II?)K	

 }-I . oouU3$oG3i5)QXX.QXX.#,,'qxx0#../y1#))$3i5)U+QXX.#,,'u-#../#,,'II?)K	

 3i5)U+QXX.#,,'u-#../#,,'II?)K	

 }-I . u55678 7
 OOU51jOI
 	S1%#.#Q&&#.u0EF ooNxd  
 3i5)U+QXX.qxx0#../y1#))$3i5)QXX.QXX. }-I .
 ooun4o@3i5)U+QXX.qxx0#../y1#))$3i5)U+QXX.u-#../#,,'II?)K	

 }-I . ooN  
 3i5)U+QXX.u-#../#,,'II?)K	
 ooG$*2N2N  
 3i5)QXX.QXX.qxx0#../#,,'II?)K	

 }-I . ooN 22  
 3i5)QXX.QXX.qxx0#../#,,'II?)K	

 3i5)U+QXX.u-}-I .-a '&( +* 21 21 21 21Z .-Z .- 76 /, .-8 .-L .-6 .-s   A)ALAL1AM3AMAM'%AM9ANAN5AN/AO6AO+AOEAO*L
AO<L
AL.L1
AM M
AMM
AM$M'
AM6M9
ANN
ANN
AN,N/
AN>O
AOO
AO'O*
AO9O<
AP
c           	        SnSnSnSSS.nSSS.nS	R                  S
SU/5      nS	R                  SSU/5      nU R                  5       nU R                  5        n	UR                  US U	SUR                  UR                  5      n
UR                  X$U	SXR                  5      nUR                  X5U	SUR                  UR                  5      nS S S 5        U R                  UR                  S5      [        U5      5        U R                  UR                  S5      [        U5      5        U R                  UR                  W5      U5        U R                  UR                  U5      U5        U R                  UR                  W5      U5        U R                  UR                  U5      U5        U R                  UR                  U5      U5        U R                  UR                  U5      U5        U R                  UR                  U5      5        U R                  UR                  U5      S5        U R                  UR                  X5      5        U R                  UR                  X5      5        U R                  UR                  X5      5        U R                  UR                  X5      5        g ! , (       d  f       GN= f)Nr{      bars   baz   source0s(   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas   copys   copyrev   source1(   bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbr      
copy: source0
s4   copyrev: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

s   
copy: source1
s4   copyrev: bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb

r   rM   r   )r      )joinr*   rS   rT   r4   r+   r~   r,   r   r   r   r2   r   rU   r   )rE   r_   r`   ra   meta1meta2stored1stored2rF   rV   rb   rc   rd   s                r   testrenamedifiledatatests.testrenamed)  sD   			  !
  !

 (((L
 (((L
 $$&"EE)T2q!((AHHEEEE)B5((CEEE)B188QXXFE ' 	CL1C	N3E*G45)73E*G45)73	2	2 	5)*5)+EFe/0e-.u01e-.1 '&s   A2J//
J>c           	        SnSnSnSSS.nSR                  SS	S-  S
/5      nU R                  5       nU R                  5        nUR                  U0 USUR                  UR                  5      nUR                  X4USUR                  UR                  5      n	S S S 5        U R                  UR                  S5      [        U5      S-   5        U R                  UR                  S5      [        U5      5        U R                  UR                  W5      U5        U R                  UR                  U5      U5        U R                  UR                  W	5      U5        U R                  UR                  U	5      U5        U R                  UR                  U5      U5        U R                  UR                  U	5      U5        U R                  UR                  X5      5        U R                  UR                  X5      5        U R                  UR                  X5      5        U R                  UR                  X5      5        g ! , (       d  f       GN= f)Ns   
foos	   


foos   
barr   r   r   r   r   s   copyrev: %s
s   

barr   rM   rk   )r   r*   rS   rT   r4   r+   r~   r,   r   r   r   r2   r   rU   )
rE   r_   stored0r`   r   r   rF   rV   rb   rc   s
             r   testmetadataprefix!ifiledatatests.testmetadataprefixc  s    	* 	!
 ((( I."
 $$&"EE)RQ!((CEEE)B188QXXFE '
 	C	NQ$67C	N3E*G45)73E*G45)73	2	2u01e-.u01e-.- '&s   AH==
Ic                f   U R                  5       nSnUS-   nU R                  5        nUR                  US USUR                  UR                  5      nSnU R	                  XXeUR                  SUS9  S S S 5        U R                  [        U5      S5        U R                  UR                  W5      WUR                  45        U R                  [        R                  5         UR                  U5        S S S 5        U R                  [        R                  5         UR                  U5        S S S 5        U R                  [        R                  5         UR                  U5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       Nk= f! , (       d  f       g = f)Nx   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
   bar
r      rM   rawtextr   )r*   rS   rT   r4   _addrawrevisionfnr+   r,   r6   r/   r   StorageErrorr   r   r   rE   rF   r_   r`   rV   rb   rc   s          r   testbadnodereadifiledatatests.testbadnoderead  sL   !	(	$$&"EE)T2q!((AHHEE E""uQXXq) # 	 ' 	Q#5)E188+<= u112JJu 3
 u112IIe 3 u112FF5M 32+ '& 32
 32 32s0   A
E.!F FF".
E= 
F
F"
F0c                @   U R                  5       nSnUS-   nU R                  5        nUR                  US USUR                  UR                  5      nSnU R	                  XXeUR                  SUS9  S S S 5        U R                  [        R                  5         UR                  W5        S S S 5        U R                  [        R                  5         UR                  W5        S S S 5        g ! , (       d  f       N= f! , (       d  f       NY= f! , (       d  f       g = fNr   r   r   r   rM   r   )	r*   rS   rT   r4   r   r/   r   r   r   r   s          r   testbadnoderevisionraw%ifiledatatests.testbadnoderevisionraw  s     !	(	$$&"EE)T2q!((AHHEE E""uQXXq) # 	 ' u112IIe 3 u112IIe 32 '& 32 32$   A
C-C>D-
C;>
D
Dc                @   U R                  5       nSnUS-   nU R                  5        nUR                  US USUR                  UR                  5      nSnU R	                  XXeUR                  SUS9  S S S 5        U R                  [        R                  5         UR                  W5        S S S 5        U R                  [        R                  5         UR                  W5        S S S 5        g ! , (       d  f       N= f! , (       d  f       NY= f! , (       d  f       g = fr   )	r*   rS   rT   r4   r   r/   r   r   r   r   s          r   testbadnoderevision"ifiledatatests.testbadnoderevision  s     !	(	$$&"EE)T2q!((AHHEE E""uQXXq) # 	 ' u112FF5M 3 u112FF5M 32 '& 32 32r   c                0   U R                  5       nSnUS-   nUS-   nU R                  5        nUR                  US USUR                  UR                  5      nSnU R	                  XXvUR                  SUS9  S S S 5        U R                  [        R                  5         UR                  W5        S S S 5        [        R                  " UWUR                  5      nU R                  5        n[        R                  " X45      n	U R	                  XXUR                  SSU	4S	9  S S S 5        U R                  [        U5      S
5        U R                  UR                  U5      U5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nm= f)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   s   baz
r   r   rM   r   r   )r   r]   )r*   rS   rT   r4   r   r/   r   r   r   r
   hashrevisionsha1r   textdiffr+   r,   )
rE   rF   r_   r`   ra   rV   rb   rc   rd   r   s
             r   testbadnodedeltaifiledatatests.testbadnodedelta  sU   !	(	(	$$&"EE)T2q!((AHHEE E""uQXXq) # 	 ' u112FF5M 3 ,,YqxxH$$&"NN98E""uQXXqE
 #  ' 	Q# 		2/ '& 32
 '&s$   A
E%E6*6F%
E36
F
Fc                :   U R                  5       n[        R                  " SS0S5      nU R                  5        nUR	                  SS USUR
                  UR
                  5      nSnU R                  XXTUR
                  SUSS	9  S S S 5        U R                  UR                  S5      5        U R                  [        R                  5         UR                  S5        S S S 5        U R                  [        R                  5         UR                  S5        S S S 5        U R                  [        R                  5         UR                  S5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nj= f! , (       d  f       g = f
N   censored	   tombstoner   r{   r   r   rM   Tcensored)r*   r
   packmetarS   rT   r4   r   rU   r?   r/   r   CensoredNodeErrorr   r   r   rE   rF   r   rV   rb   rc   s         r   testcensoredifiledatatests.testcensored  s<   &&\ 	
 $$&"EE&$AqxxBE !E""uQXXq'D #  ' 	Q(u667JJqM 8 u667IIaL 8 u667FF1I 87% '& 87 87 87s0   AEE*E;>F
E'*
E8;
F	
Fc                   U R                  5       n[        R                  " SS0S5      nU R                  5        nUR	                  SS USUR
                  UR
                  5      nSnU R                  XXTUR
                  SUSS	9  S S S 5        U R                  [        R                  5         UR                  S5        S S S 5        g ! , (       d  f       NH= f! , (       d  f       g = fr   )r*   r
   r   rS   rT   r4   r   r/   r   r   r   r   s         r   testcensoredrawrevision&ifiledatatests.testcensoredrawrevision  s     &&\ 	
 $$&"EE&$AqxxBE !E""uQXXq'D #  ' u667IIaL 87 '& 87s   AC,C
C
C&r   N)r   r   r   r   rs   rI   rW   re   r   r   r   r   r   r   r   r   r   r   r   r   ru   ru     sF    42l>8@Wr8/t)/VB,,3@>r   ru   c                  l    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rSrg)ifilemutationtestsi5  zGeneric 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           	        U R                  5       nU R                  5        nUR                  SS USUR                  UR                  5      nUR                  SS USUR                  UR                  5      nUR                  SS USUR                  UR                  5      nS S S 5        U R	                  WW5        U R	                  WU5        U R	                  [        U5      S5        g ! , (       d  f       NN= f)Nr{   r   rM   )r*   rS   rT   r4   r+   r,   rE   rF   rV   rb   rc   rd   s         r   testaddnoopifilemutationtests.testaddnoop>  s    $$&"EE&$AqxxBEEE&$AqxxBEEE&$AqxxBE	 ' 	&&Q# '&s   A?C((
C6c                :   U R                  5       nU R                  5        nU R                  [        R                  5         UR                  SUSUR                  UR                  SS9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr{   r   r#   r<   )r*   rS   r/   r   r   addrevisionr4   rE   rF   rV   s      r   testaddrevisionbadnode)ifilemutationtests.testaddrevisionbadnodeJ  su    $$&"""5#5#56B188QXXL   7 '&66 '&s#    B)A;*B;
B		B
Bc                   U R                  5       nU R                  5        n[        SSS5       H&  nSU-  [        R                  ) -  (       d  M!  SU-  n  O   U R                  [        R                  5         UR                  SUSUR                  UR                  WS9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)N   r   rQ   rM   r{   )flags)
r*   rS   r9   r	   REVISION_FLAGS_KNOWNr/   r   r   r   r4   )rE   rF   rV   rH   r   s        r   testaddrevisionunknownflag-ifilemutationtests.testaddrevisionunknownflagS  s    $$&"2q"%Fz>>>>>FE &
 ""5#5#56fb!QXXqxxuM 7 '& 76 '&s)   +C(C8)B2!C2
C 	<C
Cc           	       ^
^^ U R                  5       n/ m
U
4S jmS nU R                  5        n/ mUU4S jnU4S jnUR                  / S UUUS9  S S S 5        U R                  T/ 5        U R                  T
/ 5        U R                  [	        U5      S5        Sn[
        R                  " [	        U5      5      U-   nU R                  5        nUR                  US USUR                  UR                  5      nS S S 5        U R                  5       nWUR                  UR                  UR                  UR                  US0 4/n	U R                  5        n/ mUU4S jnU4S	 jnUR                  U	UUUUS9  S S S 5        U R                  TS
/5        U R                  [	        T
5      S5        U R                  T
S   S   S   TS   5        U R                  [        UR                  5       5      S/5        U R                  UR                  TS   5      S5        U R                  UR                  S5      TS   5        g ! , (       d  f       GN= f! , (       d  f       GN^= f! , (       d  f       N= f)Nc                 *   > TR                  X45        g N)append)argskwargscallbackargss     r   cb1ifilemutationtests.testaddgroupsimple.<locals>.cbc  s    /r   c                    gNr   r   r   s    r   
linkmapper9ifilemutationtests.testaddgroupsimple.<locals>.linkmapperf  s    r   c                Z   > U R                  U5      nTR                  U5        T" X5        g r   r<   r   clr;   r<   r   nodess      r   onchangeset:ifilemutationtests.testaddgroupsimple.<locals>.onchangesetl  #    wws|T"2r   c                F   > TR                  U R                  U5      5        g r   r   r<   r   r;   r   s     r   ondupchangeset=ifilemutationtests.testaddgroupsimple.<locals>.ondupchangesetq      RWWS\*r   addrevisioncbduplicaterevisioncbr   r{   c                Z   > U R                  U5      nTR                  U5        T" X5        g r   r   r   s      r   r   r     r   r   c                F   > TR                  U R                  U5      5        g r   r   r   s     r   r   r     r  r   s   I˱\WG kFzyrM   )r*   rS   addgroupr+   r,   r   trivialdiffheaderrT   r4   r-   r5   r;   r<   )rE   rF   r   rV   r   r   r_   delta0rb   deltasr   r   r   s             @@@r   testaddgroupsimple%ifilemutationtests.testaddgroupsimple^  s6   	0	 $$&"E
+ JJ)$2   '& 	#r*Q#	((Y89D$$&"EE)T2q!((AHHEE '  AHHahh!((FArJ
 $$&"E
+ JJ)$2   '& 	<	
 	\*A.a+A.a9affh!-uQx!,E!H-G '&4 '& '&s#   #H=+I#I!=
I
I!
I/c                "  ^
 U R                  5       n/ SQn/ nU R                  5        nU H<  nUR                  UR                  US USUR                  UR                  5      5        M>     S S S 5        U R                  5       n/ n[        U5       Hj  u  pu[        R                  " [        U5      5      U-   nUR                  X7   UR                  UR                  UR                  UR                  US0 45        Ml     U R                  5        n/ m
U
4S jn	UR                  US UU	U	S9  U R                  T
U5        S S S 5        U R                  [        U5      [        U5      5        U R                  [        UR                  5       5      / SQ5        U R                  UR                  US   5      S5        U R                  UR                  US   5      S5        U R                  UR                  US   5      S5        U R                  UR                  S5      US   5        U R                  UR                  S5      US   5        U R                  UR                  S5      US   5        g ! , (       d  f       GN	= f! , (       d  f       GNI= f)	N)r{   r   rZ   r   c                F   > TR                  U R                  U5      5        g r   r   )r   r;   newnodess     r   r   <ifilemutationtests.testaddgroupmultiple.<locals>.onchangeset  s    -r   c                    gr   r   xs    r   <lambda>9ifilemutationtests.testaddgroupmultiple.<locals>.<lambda>  s    !r   r  r^   rM   r   )r*   rS   r   rT   r4   	enumerater   r  r,   r  r+   r-   r5   r;   r<   )rE   rF   	fulltextsr   rV   r   r
  rH   r   r   r  s             @r   testaddgroupmultiple'ifilemutationtests.testaddgroupmultiple  s   
	 $$&"%QUU8T2q!((AHHMN & ' $Y/KA++CM:XEEMM188QXXqxx5!RP 0 $$&"H. JJ)$/   Xu- ' 	QV-affh3uQx!,uQx!,uQx!,E!H-E!H-E!H-G '& '&s   AI-/I?-
I<?
Jc                   U R                  5       n[        R                  " SS0S5      nU R                  5        nUR	                  SS USUR
                  UR
                  5      nSnU R                  XXTUR
                  SUSS	9  S S S 5        [        R                  " S
S5      nSWUR
                  SXVS0 4/nU R                  5        nU R                  [        R                  5         UR                  US U5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = f)Nr   r   r   r   r   r   rM   Tr   sx   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
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   r#   c                    gr   r   r  s    r   r  =ifilemutationtests.testdeltaagainstcensored.<locals>.<lambda>  s    Qr   )r*   r
   r   rS   rT   r4   r   r   r   r/   r   CensoredBaseErrorr  )rE   rF   r   rV   rb   rc   r   r
  s           r   testdeltaagainstcensored+ifilemutationtests.testdeltaagainstcensored  s   &&\ 	
 $$&"EE-r1ahhIE !E""uQXXq'D #  ' }.HI5!((L%2N
 $$&"""5#:#:;

6;3 < '& '&  <; '&s0   AD D0(D=D0
D
D-	)D00
D>c           	     f   U R                  5       nU R                  5        nUR                  SS USUR                  UR                  5      nUR                  SS USX1R                  5      nUR                  SS USXAR                  5      nS S S 5        U R                  5        nUR	                  UW/5        S S S 5        U R                  [        U5      S5        U R                  [        UR                  5       5      / SQ5        U R                  UR                  W5      S5        U R                  UR                  W5      S5        U R                  [        R                  5         UR                  W5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)	Nr   r   r   rM   s   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
r   r]   r^   )r*   rS   rT   r4   censorrevisionr+   r,   r-   r5   r   r/   r   r   r   s         r   testcensorrevisionbasic*ifilemutationtests.testcensorrevisionbasic  s@   $$&"EE-r1ahhIEEE-r1eXXFEEE-r1eXXFE '
 $$&"R%) ' 	Q#affh366u667FF5M 87 '&
 '& 87s$   A)F "F%F" 
F
F"
F0c           
     n   U R                  5       nU R                  5        n[        S5       H/  nUR                  SU-  S X#UR                  UR                  5        M1     S S S 5        [        S5       H.  nU R                  UR                  U5      U[        5       45        M0     g ! , (       d  f       NL= fN
   r&   )r*   rS   r9   rT   r4   r+   getstrippointset)rE   rF   rV   r;   s       r   testgetstrippointnoparents-ifilemutationtests.testgetstrippointnoparents  s    $$&"Ryeck4!((AHHE ! ' 9CQ__S1C<@ 	 '&s   ?B&&
B4c           
     p   U R                  5       nU R                  5        nUR                  n[        S5       H$  nUR	                  SU-  S X$X1R                  5        M&     S S S 5        [        S5       H.  nU R                  UR                  U5      U[        5       45        M0     g ! , (       d  f       NL= fr%  )r*   rS   r4   r9   rT   r+   r'  r(  rE   rF   rV   p1r;   s        r   testgetstrippointlinear*ifilemutationtests.testgetstrippointlinear  s    $$&"BRyeck4"hh? ! ' 9CQ__S1C<@  '&s   A B''
B5c           	     >   U R                  5       nU R                  5        nUR                  SS USUR                  UR                  5      nUR                  SS USX1R                  5      nUR                  SS USXAR                  5        UR                  SS USX1R                  5        UR                  S	S US
X1R                  5        S S S 5        [	        S5       H.  nU R                  UR                  U5      U[        5       45        M0     g ! , (       d  f       NL= f)Nr   r   r)   rM   rh   r   ri   r]   rj   rk   r%   )r*   rS   rT   r4   r9   r+   r'  r(  )rE   rF   rV   rb   rc   r;   s         r   testgetstrippointmultipleheads1ifilemutationtests.testgetstrippointmultipleheads'  s    $$&"EE$b!QXXqxx@EEE$b!UHH=EEE$b!UHH5EE$b!UHH5EE$b!UHH5 ' 8CQ__S1C<@  '&s   B'D
Dc           	        U R                  5       nU R                  5        nUR                  SS USUR                  UR                  5      nUR                  SS USX1R                  5        UR                  SS USX1R                  5        S S S 5        U R	                  UR                  S5      S[        5       45        U R	                  UR                  S5      S[        5       45        U R	                  UR                  S5      S[        5       45        U R	                  UR                  S	5      S[        5       45        U R	                  UR                  S
5      S[        5       45        U R	                  UR                  S5      S[        5       45        U R	                  UR                  S5      SS145        U R	                  UR                  S5      SS145        U R	                  UR                  S5      SS145        U R	                  UR                  S5      SS145        U R	                  UR                  S5      SS145        U R	                  UR                  S5      S	[        5       45        g ! , (       d  f       GN= f)Nr   r   r)   r&  rh   r%   rM   r   r]   rk   rm         	      )r*   rS   rT   r4   r+   r'  r(  )rE   rF   rV   rb   s       r    testgetstrippointearlierlinkrevs3ifilemutationtests.testgetstrippointearlierlinkrevs4  s   $$&"EE$b!QXXqxx@EEE$b"eXX6EE$b!UHH5 '
 	+aZ8+aZ8+aZ8+aZ8+aZ8+aZ8+a!X6+a!X6+a!X6+a!X6,q1#h7,q#%j9! '&s   A)I44
Jc                    U R                  5       nU R                  5        nUR                  SU5        S S S 5        U R                  [	        U5      S5        g ! , (       d  f       N*= fr   )r*   rS   stripr+   r,   r   s      r   teststripempty!ifilemutationtests.teststripemptyI  sO    $$&"GGArN ' 	Q# '&s   A
A&c           
        U R                  5       nU R                  5        nUR                  n[        S5       H$  nUR	                  SU-  S X$X1R                  5      nM&     S S S 5        U R                  [        U5      S5        U R                  5        nUR                  SU5        S S S 5        U R                  [        U5      S5        g ! , (       d  f       Np= f! , (       d  f       N;= f)Nr&  r&   r   )r*   rS   r4   r9   rT   r+   r,   r;  r,  s        r   teststripallifilemutationtests.teststripallQ  s    $$&"BRyUU53;br88D ! '
 	Q$$$&"GGArN ' 	Q# '& '&s   A CC
C
C*c           	        U R                  5       nU R                  5        nUR                  SS USUR                  UR                  5        UR                  SS USUR                  UR                  5      nUR                  SS USUR                  UR                  5      nS S S 5        U R	                  [        U5      S5        U R                  5        nUR                  SU5        S S S 5        U R	                  [        U5      S5        U R                  5        nUR                  SU5        S S S 5        U R	                  [        U5      S	5        U R                  [        R                  5         UR                  W5        S S S 5        U R                  5        nUR                  S
U5        S S S 5        U R	                  [        U5      S	5        U R                  5        nUR                  SU5        S S S 5        U R	                  [        U5      S5        U R                  [        R                  5         UR                  W5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNM= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr   r   r)   r%   rh   r&  r]   r7  r   rm   rM   )r*   rS   rT   r4   r+   r,   r;  r/   r   r8   r;   )rE   rF   rV   rc   rd   s        r   teststrippartial#ifilemutationtests.teststrippartial`  s   $$&"EE$b!QXXqxx8EE$b!QXXqxx@EEE$b"ahhAE '
 	Q#$$&"GGBO ' 	Q#$$&"GGBO ' 	Q#u001EE%L 2 $$&"GGArN ' 	Q#$$&"GGArN ' 	Q#u001EE%L 21= '& '&
 '&
 21 '&
 '&
 21sT   A?II I2.JJJ'3J8
I 
I/2
J
J
J$'
J58
Kr   N)r   r   r   r   rs   r   r   r   r  r  r  r"  r)  r.  r1  r8  r<  r?  rB  r   r   r   r   r   r   5  sT    
$	NN.`-.^4<(	AAA:*$$"r   r   c                2    U UUS.n[        S[        4U5      $ )a	  Create 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*   rS   r   r   )typer   
makefilefnmaketransactionfnaddrawrevisionfnds       r   makeifileindextestsrL    s)    & "/-	A
 !O#5q99r   c                2    U UUS.n[        S[        4U5      $ )NrE  ru   )rF  ru   rG  s       r   makeifiledatatestsrN    s'    !/-	A
  >"3Q77r   c                2    U UUS.n[        S[        4U5      $ )NrE  r   )rF  r   rG  s       r   makeifilemutationtestsrP    s(    !/-	A
 $'9&;Q??r   )
__future__r   r   r<   r   r    r   r   
interfacesr	   utilsr
   r   r   r   ru   r   rL  rN  rP  r   r   r   <module>rU     sn    #  $ 
8$$ 
o0l o0da
\ a
HM M`
:48@r   