
    q&fd                         d dl Z ddlmZmZ ddlmZmZ ddlmZ ddl	m
Z
  G d de j                        Z G d	 d
e      Z G d de      Z G d de      Zd Zd Zd Zy)    N   )hexnullrev)errormdiff)
repository)storageutilc                   b    e Zd Z eej
                  dd      sej
                  j                  Zyy)basetestcaseassertRaisesRegexFN)__name__
__module____qualname__getattrunittestTestCaseassertRaisesRegexpr        ;/usr/lib/python3/dist-packages/mercurial/testing/storage.pyr   r      s/    8$$&95A00 	 Br   r   c                   (    e Zd ZdZd Zd Zd Zd Zy)ifileindextestszGeneric 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                    | j                         }| j                  t        |      dd       | j                  t        |      g d       t	        |      }| j                  t              5  t        |       d d d        | j                  |j                  d              | j                  |j                  d             | j                  |j                  t                     | j                  |j                  |j                               | j                  |j                  d             | j                  |j                  d             | j                  t        |j                               g        t	        |j                               }| j                  t              5  t        |       d d d        | j                  t        |j                  d            g        | j                  |j                  |j                        |j                  |j                  f       | j                  |j                  t              t        t        f       | j                  t        j                         5  |j                  d       d d d        t#        d	d
      D ];  }|t        k(  r| j                  t$              5  |j                  |       d d d        = | j                  |j'                  |j                        t               | j                  |j)                  t              |j                         | j                  t        j                         5  |j'                  d       d d d        t#        d	d
      D ];  }|t        k(  r| j                  t$              5  |j)                  |       d d d        = | j                  |j+                  |j                        |j                         | j                  |j+                  t              |j                         | j                  |j+                  t-        |j                              |j                         | j                  |j+                  dt        z        |j                         | j                  t        j                         5  |j+                  d       d d d        | j                  t        j                         5  |j+                  t-        |j                        dd        d d d        | j                  t        j                         5  |j+                  d       d d d        | j                  t        j                         5  |j+                  d       d d d        | j                  t        j                         5  |j+                  d       d d d        | j                  t        j                         5  |j+                  d       d d d        t#        d	d
      D ];  }|t        k(  r| j                  t               5  |j+                  |       d d d        = | j                  |j/                  t              t               t#        d	d
      D ];  }|t        k(  r| j                  t$              5  |j/                  |       d d d        = | j                  |j1                  t                     t#        d	d
      D ];  }|t        k(  r| j                  t$              5  |j1                  |       d d d        = | j                  t        |j3                  |j                  |j                              g        | j                  t4              5  | j                  t        |j7                  g             g        d d d        | j                  t        |j7                  t        g            g        | j                  |j9                         |j                  g       | j                  |j9                  |j                        |j                  g       | j                  |j9                  d |j                  g      |j                  g       | j                  |j9                  |j                  |j                  g      |j                  g       | j                  |j;                  |j                        g        | j                  t        j                         5  |j;                  d       d d d        y # 1 sw Y   xY w# 1 sw Y   wxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   jxY w# 1 sw Y   >xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   UxY w# 1 sw Y   xY w# 1 sw Y   <xY w# 1 sw Y   y xY w)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genr0   is        r   	testemptyz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#	$ r1 	 AG|"":.  Q   		  	qxx'2!((3u001 	 EE,	  r1 	AG|"":. q	 		 	!((+QXX6'*AHH5#ahh-0!((;%'/2AHH=u001 	"HH[!	" u001 	*HHS]1R()	* u001 	HHUO	 u001 	HHTN	 u001 	HHTN	 u001 	@HH>?	@ r1 	AG|"";/  		 	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|$	% 	%[	 		 		$ 	$   	  	  	" 	"	* 	*	 		 		 		@ 	@     
	: 	:	% 	%s   )d"d#0d08d=e
e(e$!(e10e>)f"ff%#f2f?g4+g;g&d #d-0d:=e	
ee!	$e.1e;>fff"%f/2f<	?g		g	g#&g/c           	      l   | j                         }| j                         5 }|j                  dd |d|j                  |j                        }d d d        | j	                  t        |      d       | j	                  t        |      dg       t        |      }| j	                  t        |      d       | j                  t              5  t        |       d d d        | j                  |j                               | j                  |j                  t        |                   | j                  |j                  t                     | j                  |j                  |j                               | j                  |j                  |dd              | j                  |j                  t        |      dd              | j	                  t        |j!                               dg       | j	                  t        |j!                  d            g        | j	                  t        |j!                  d            dg       | j	                  t        |j!                  d            dg       | j	                  t        |j!                  d            dg       | j	                  t        |j!                  dd            g        | j	                  t        |j!                  dd            ddg       | j	                  t        |j!                  dd            g d	       | j	                  |j#                  |      |j                  |j                  f       | j	                  |j%                  d      t        t        f       | j                  t&        j(                        5  |j#                  d
       d d d        | j                  t*              5  |j%                  d       d d d        | j	                  |j-                  |      d       | j                  t&        j(                        5  |j-                  d
       d d d        | j	                  |j/                  d      |       | j                  t*              5  |j/                  d       d d d        | j	                  |j1                  |      |       | j	                  |j1                  d      |       | j	                  |j1                  d      |j                         | j	                  |j1                  d      |       | j	                  |j1                  t        |            |       | j                  t&        j(                        5  |j1                  t        |      dd        d d d        | j                  t&        j(                        5  |j1                  d       d d d        | j                  t&        j(                        5  |j1                  d       d d d        | j                  t&        j(                        5  |j1                  d       d d d        | j                  t&        j(                        5  |j1                  d       d d d        | j	                  |j3                  d      d       | j                  t*              5  |j3                  d       d d d        | j                  |j5                  d             | j                  t*              5  |j5                  d       d d d        | j	                  t        |j7                  dg            g        | j	                  |j9                         |g       | j	                  |j9                  |      |g       | j	                  |j9                  |g      |g       | j                  t&        j(                        5  |j9                  d
g       d d d        | j	                  |j;                  |      g        y # 1 sw Y   xY w# 1 sw Y   >xY w# 1 sw Y   lxY w# 1 sw Y   JxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   rxY w# 1 sw Y   FxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)N   initialr      r"   r   r   stopr   r   rG   r   r   r   r#   r$   )r%   _maketransactionfnaddr/   r&   r'   r(   r)   r,   r*   r+   
assertTruer.   r-   r   r   r0   r1   r2   r   r3   r5   r6   r7   r8   r9   r:   r=   r>   r?   )r@   rA   trr7   rB   s        r   testsinglerevisionz"ifileindextests.testsinglerevision   s   $$& 	F"55T2q!((AHHED	F 	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#	$ z* 	LLO	 	ta(u001 	 EE,	  	D)z* 	FF1I	 	$.!d+"qxx0$.#d),d3u001 	&HHSYq_%	& u001 	HHRL	 u001 	HHUO	 u001 	HHQK	 u001 	HHTN	 	1q)z* 	IIaL	 	a)z* 	LLO	 	ammQC0126TF+/tf-v6u001 	)GG,G(	) 	D)2.q	F 	F	 	.	$ 	$	 	
	  	 
	 		& 	&	 		 		 		 	
	 	
	 		) 	)s   +````((`58a)a.a'a) a6b)b8bb*```%(`25`?aaa&)a36b bbb'*b3c           	         d}|dz   }d|z   dz   }| j                         }| j                         5 }|j                  |d |d|j                  |j                        }|j                  |d |d||j                        }|j                  |d |d||j                        }d d d        | j	                  t        |      d       | j	                  t        |      g d       t        |      }	| j	                  t        |	      d       | j	                  t        |	      d       | j	                  t        |	      d       | j                  t              5  t        |	       d d d        | j	                  t        |j                               g d       | j	                  t        |j                  d            g d       | j	                  t        |j                  d            ddg       | j	                  t        |j                  d            dg       | j	                  t        |j                  d            g        | j	                  t        |j                  d	            ddg       | j	                  t        |j                  d	            g d       | j	                  t        |j                  d	            g d       | j	                  t        |j                  dd            g d
       | j	                  t        |j                  dd            ddg       | j	                  t        |j                  dd            ddg       | j	                  |j                        |j                  |j                  f       | j	                  |j                        ||j                  f       | j	                  |j                        ||j                  f       | j	                  |j                  d      t        t        f       | j	                  |j                  d      dt        f       | j	                  |j                  d      dt        f       | j	                  |j                  |      d       | j	                  |j                  |      d       | j	                  |j                  |      d       | j                  t         j"                        5  |j                  d       d d d        | j	                  |j%                  d      |       | j	                  |j%                  d      |       | j	                  |j%                  d      |       | j                  t&              5  |j%                  d       d d d        | j	                  |j)                  |      |       | j	                  |j)                  d      |       | j	                  |j)                  d      |       | j	                  |j)                  t+        |            |       | j	                  |j)                  |      |       | j	                  |j)                  d      |       | j	                  |j)                  d      |       | j	                  |j)                  t+        |            |       | j	                  |j-                  d      d       | j	                  |j-                  d      d       | j	                  |j-                  d      d       | j                  t&              5  |j-                  d       d d d        | j/                  |j1                  d             | j/                  |j1                  d             | j/                  |j1                  d             | j                  t&              5  |j1                  d       d d d        | j	                  |j3                  ||j                        g        | j	                  |j3                  ||      |g       | j	                  |j3                  ||      |g       | j	                  |j3                  ||      |g       | j	                  |j3                  ||      |g       | j	                  |j3                  ||      |g       | j	                  t        |j5                  dg            ddg       | j	                  t        |j5                  dg            dg       | j	                  t        |j5                  ddg            ddg       | j	                  |j7                         |g       | j	                  |j7                  |      |g       | j	                  |j7                  |      |g       | j	                  |j7                  |      |g       | j	                  |j7                  |g	      ||g       | j	                  |j7                  |g	      ||g       | j	                  |j7                  ||g	      ||g       | j                  t         j"                        5  |j7                  dg	       d d d        | j	                  |j9                  |      |g       | j	                  |j9                  |      |g       | j	                  |j9                  |      g        y # 1 sw Y   
xY w# 1 sw Y   	jxY w# 1 sw Y   xY w# 1 sw Y   fxY w# 1 sw Y   xY w# 1 sw Y   ExY w# 1 sw Y   xY w)N   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx   y   zr   rG      r   rG   r   r   rH   rJ   r   r   r$   )r%   rM   rN   r/   r&   r'   r(   r)   r,   r*   r+   r0   r1   r2   r   r6   r   r3   r7   r5   r8   r   r9   r-   r:   r;   r=   r>   r?   )
r@   	fulltext0	fulltext1	fulltext2rA   rP   node0node1node2rB   s
             r   testmultiplerevisionsz%ifileindextests.testmultiplerevisions   s   	$	9$t+	$$& 	C"EE)T2q!((AHHEEEE)T2q%BEEE)T2q%BE	C
 	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)E188+<=5)E188+<=a7G*<=a1g,7a1g,7uq)uq)uq)u001 	 EE,	  	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	 	//qxx@"E//u=wG//u=wG//u=wG//u=wG//u=wGammQC01Aq6:ammQC01A37ammQF34q!f=UG,%1%1%1
 	ug.?ug.?uen5u~Fu001 	)GG,G(	) 	E*UG4E*UG4E*B/O	C 	C	 	8	  	 	 	"	 		 	4	) 	)sT   A+j3k k$kk'k41l3j= k
kk$'k14k>l
c           	      f   | j                         }| j                         5 }|j                  dd |d|j                  |j                        }|j                  dd |d||j                        }|j                  dd |d||j                        }|j                  dd |d||j                        }|j                  d	d |d
||j                        }|j                  dd |d||j                        }d d d        | j	                  t        |      d       | j	                  t        |j                  dg            g d       | j	                  t        |j                  dg            dg       | j	                  t        |j                  dg            g        | j	                  t        |j                  dg            d
g       | j	                  t        |j                  ddg            g d       | j	                  t        |j                  ddg            dd
g       | j	                  |j                         g       | j	                  |j                        |||g       | j	                  |j                        |g       | j	                  |j                  |      |g       | j	                  |j                        |g       | j	                  |j                  |      |g       | j	                  |j                  |      |g       | j	                  |j                  |g      ||||g       | j	                  |j                  |g      ||||g       | j	                  |j                  |      |||g       | j	                  |j                  |      |g       | j	                  |j                  |      g        | j	                  |j                  |      |g       | j	                  |j                  |      g        | j	                  |j                  |      g        y # 1 sw Y   <xY w)Nr   r   r$   rG      2r      3rV      4      5r       )rG   r   rV   rc   r    rH   )
r%   rM   rN   r/   r&   r'   r(   r=   r>   r?   )	r@   rA   rP   r[   r\   r]   node3node4node5s	            r   testmultipleheadsz!ifileindextests.testmultipleheadsh  so   $$& 	>"EE$b!QXXqxx@EEE$b!UAHH=EEE$b!UAHH=EEE$b!UAHH=EEE$b!UAHH=EEE$b!UAHH=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.ue0LMug.ue0LME*UE5,ABE*UG4E*B/E*UG4E*B/E*B/E	> 	>s   CP&&P0N)r   r   r   __doc__rD   rQ   r^   ri   r   r   r   r   r      s!    t%lZ/xm0^%0r   r   c                   R    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zy)ifiledatatestszGeneric 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                    | j                         }| j                  |j                         i        | j                  |j                  dd      ddd       | j                  |j                  t              d       t        dd      D ];  }|t        k(  r| j                  t              5  |j                  |       d d d        = | j                  |j                  |j                        d       | j                  |j                  |j                        d       | j                  t        j                        5  |j                  d       d d d        | j                  |j                  |j                        d       | j                  t        j                        5  |j                  d       d d d        | j                  |j                  |j                               | j                  t        j                        5  |j                  d       d d d        | j!                  |j#                  |j                  d             | j!                  |j#                  |j                  d	             | j                  t        j                        5  |j#                  dd
       d d d        |j%                  g       }| j                  t&              5  t)        |       d d d        |j%                  |j                  g      }| j                  t&              5  t)        |       d d d        | j                  t        j                        5  t+        |j%                  dg             d d d        y # 1 sw Y   xY w# 1 sw Y   1xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)NTrevisionscounttrackedsizer   s   revisionscounts   trackedsizer   r    r   r      foo
   irrelevant)r%   r&   storageinfosizer   r4   r*   r5   revisionr/   rawdatar   r3   readr-   renamedrO   cmpemitrevisionsr+   r,   r(   )r@   rA   rC   rB   s       r   rD   zifiledatatests.testempty  s   "-MM4M@ !15	

 	!,r1 	AG|"":. q	 		 	AHH-s3188,c2u001 	%JJ|$	% 	)3/u001 	!FF< 	! 	188,-u001 	!FF< 	! 	ahh,-ahh/0u001 	/EE,.	/ oob!}- 	I	 ooqxxj)}- 	I	 u001 	2,01	2 	2I 	% 	%
	! 	!
	! 	!	/ 	/
	 	
	 		2 	2s`   *M/;M<N	NN#N0N<
O/M9	<N	NN #N-0N9<OOc           	      	   d}| j                         }| j                         5 }|j                  |d |d|j                  |j                        }d d d        | j	                  |j                         i        | j	                  |j                  dd      dt        |      d       | j	                  |j                  d      t        |             | j                  t              5  |j                  d       d d d        | j	                  |j                        |       | j	                  |j                  |      |       | j	                  |j                  |      |       | j                  |j                  |             | j                  |j                  ||             | j!                  |j                  ||dz                |j#                  |g      }t%        |      }| j	                  |j&                  |       | j	                  |j(                  |j                         | j	                  |j*                  |j                         | j-                  |j.                         | j	                  |j0                  |j                         | j-                  |j2                         | j-                  |j                         | j-                  |j4                         | j                  t6              5  t%        |       d d d        |j#                  |gd      }t%        |      }| j	                  |j&                  |       | j	                  |j(                  |j                         | j	                  |j*                  |j                         | j-                  |j.                         | j	                  |j0                  |j                         | j-                  |j2                         | j	                  |j                  |       | j-                  |j4                         | j                  t6              5  t%        |       d d d        | j                  t8        j:                        5  t=        |j#                  |d	g             d d d        y # 1 sw Y   BxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   uxY w# 1 sw Y   y xY w)
NrF   r   Trn   rG   rq   s   extrarevisiondatar   )r%   rM   rN   r/   r&   rt   r'   ru   r*   r5   rv   rw   rx   r-   ry   rz   rO   r{   r,   r7   p1nodep2nodeassertIsNonelinknodebasenodebaserevisionsizedeltar+   r   r3   r(   )r@   fulltextrA   rP   r7   rB   r6   s          r   rQ   z!ifiledatatests.testsinglerevision  s   $$& 	D"554Q!((CD	D 	"-MM4M@ !3x=A	

 	CM2z* 	FF1I	 	D)844(3x04)tX./dHx$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 	8$!567	8 	8s	D 	D	 	4	 	 	 		8 	8s;   +R$R2R(5R5(SRR%(R25R>S
c           	      '   d}|dz   }d|z   dz   }| j                         }| j                         5 }|j                  |d |d|j                  |j                        }|j                  |d |d||j                        }|j                  |d |d||j                        }d d d        | j	                  |j                         i        | j	                  |j                  dd      dt        |      t        |      z   t        |      z   d	       | j	                  |j                  d      t        |             | j	                  |j                  d      t        |             | j	                  |j                  d
      t        |             | j                  t              5  |j                  d       d d d        | j	                  |j                        |       | j	                  |j                  |      |       | j	                  |j                        |       | j	                  |j                  |      |       | j	                  |j                        |       | j	                  |j                  |      |       | j                  t        j                        5  |j                  d       d d d        | j	                  |j                  |      |       | j	                  |j                  |      |       | j	                  |j                  |      |       | j                  t        j                        5  |j                  d       d d d        | j                  |j!                  |             | j                  |j!                  |             | j                  |j!                  |             | j                  t        j                        5  |j!                  d       d d d        | j                  |j#                  ||             | j                  |j#                  ||             | j                  |j#                  ||             | j%                  |j#                  ||             | j%                  |j#                  ||             | j                  t        j                        5  |j#                  dd       d d d        |j'                  |||gd      }	t)        |	      }
| j	                  |
j*                  |       | j	                  |
j,                  |j                         | j	                  |
j.                  |j                         | j1                  |
j2                         | j	                  |
j4                  |j                         | j1                  |
j6                         | j	                  |
j                  |       | j1                  |
j8                         t)        |	      }
| j	                  |
j*                  |       | j	                  |
j,                  |       | j	                  |
j.                  |j                         | j1                  |
j2                         | j	                  |
j4                  |       | j1                  |
j6                         | j1                  |
j                         | j	                  |
j8                  d|z          t)        |	      }
| j	                  |
j*                  |       | j	                  |
j,                  |       | j	                  |
j.                  |j                         | j1                  |
j2                         | j	                  |
j4                  |       | j1                  |
j6                         | j1                  |
j                         | j	                  |
j8                  d|z          | j                  t:              5  t)        |	       d d d        |j'                  |||gd      }	t)        |	      }
| j	                  |
j*                  |       | j	                  |
j,                  |j                         | j	                  |
j.                  |j                         | j1                  |
j2                         | j	                  |
j4                  |j                         | j1                  |
j6                         | j	                  |
j                  |       | j1                  |
j8                         t)        |	      }
| j	                  |
j*                  |       | j	                  |
j,                  |       | j	                  |
j.                  |j                         | j1                  |
j2                         | j	                  |
j4                  |       | j1                  |
j6                         | j1                  |
j                         | j	                  |
j8                  d|z          t)        |	      }
| j	                  |
j*                  |       | j	                  |
j,                  |       | j	                  |
j.                  |j                         | j1                  |
j2                         | j	                  |
j4                  |       | j1                  |
j6                         | j1                  |
j                         | j	                  |
j8                  d|z          | j                  t:              5  t)        |	       d d d        | j                  t        j<                        5  t?        |j'                  g d             d d d        t?        |j'                  |||gd            }| j	                  t        |      d       | j	                  |D ch c]  }|j*                   c}|||h       |j'                  ||gdd      }	t)        |	      }
| j	                  |
j*                  |       | j	                  |
j,                  |       | j	                  |
j.                  |j                         | j	                  |
j4                  |j                         | j1                  |
j6                         | j	                  |
j                  |       | j1                  |
j8                         t)        |	      }
| j	                  |
j*                  |       | j	                  |
j,                  |j                         | j	                  |
j.                  |j                         | j                  t:              5  t)        |	       d d d        |j'                  ||hd      }	t)        |	      }
| j	                  |
j*                  |       | j	                  |
j,                  |       | j	                  |
j.                  |j                         | j	                  |
j4                  |j                         | j1                  |
j6                         | j	                  |
j                  |       | j1                  |
j8                         t)        |	      }
| j	                  |
j*                  |       | j	                  |
j,                  |       | j	                  |
j.                  |j                         | j	                  |
j4                  |       | j1                  |
j6                         | j1                  |
j                         | j	                  |
j8                  d|z          | j                  t:              5  t)        |	       d d d        |j'                  ||gdd      }	t)        |	      }
| j	                  |
j*                  |       | j	                  |
j,                  |       | j	                  |
j.                  |j                         | j	                  |
j4                  |       | j1                  |
j6                         | j1                  |
j                         | j	                  |
j8                  d|z          |j'                  |gdt@        jB                        }	t)        |	      }
| j	                  |
j*                  |       | j	                  |
j,                  |j                         | j	                  |
j.                  |j                         | j	                  |
j4                  |j                         | j1                  |
j6                         | j1                  |
j                         | j	                  |
j8                  d|z          | j                  t:              5  t)        |	       d d d        |j'                  ||gdt@        jB                        }	t)        |	      }
| j	                  |
j*                  |       | j	                  |
j,                  |j                         | j	                  |
j.                  |j                         | j	                  |
j4                  |j                         | j1                  |
j6                         | j1                  |
j                         | j	                  |
j8                  d|z          t)        |	      }
| j	                  |
j*                  |       | j	                  |
j,                  |       | j	                  |
j.                  |j                         | j	                  |
j4                  |       | j                  t:              5  t)        |	       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   )xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   PxY wc c}w # 1 sw Y   hxY w# 1 sw Y   |xY w# 1 sw Y   _xY w# 1 sw Y   y xY w)NrS   rT   rU   r   rG   rV   Trn   rq   r   r   rs   r}   s            s           s   bad)
nodesorders   storages   nodes)r   r~   )r~   assumehaveparentrevisions)r~   	deltamodes              )"r%   rM   rN   r/   r&   rt   r'   ru   r*   r5   rv   rw   r   r3   rx   r-   ry   rz   rO   r{   r,   r7   r   r   r   r   r   r   r   r+   ProgrammingErrorr(   r   CG_DELTAMODE_PREV)r@   rX   rY   rZ   rA   rP   r[   r\   r]   rB   r6   resos                r   r^   z$ifiledatatests.testmultiplerevisions  s<   	$	9$t+	$$& 	C"EE)T2q!((AHHEEEE)T2q%BEEE)T2q%BE	C
 	"-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u001 	!FF< 	! 	5)*5)*5)*u001 	$IIl#	$ 	ui01ui01ui01eY/0eY/0u001 	/EE,.	/ ooueU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	 ooueU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 	978	9
 OOUE51jOI
 	S1%#.Q!&&.u0EF ooENxd  
 3i5)U+QXX.qxx0#../y1#))$3i5)QXX.QXX. }- 	I	
 oouen4o@3i5)U+QXX.qxx0#../y1#))$3i5)U+QXX.u-#../#,,'II?)K	

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

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

 3i5)U+QXX.u-}- 	I	 	a	C 	C(	 		% 	%	! 	!	$ 	$	/ 	/Z	 	Z	 		9 	9 /,	 	8	 	L	 	6	 	s   A+AM
AMAM$8AM1AM>/AN%ANAN%AN25AN?AOAOE5AOL5AO+M
AMMAM!M$AM.M1AM;M>ANNANNAN"N%AN/N2AN<OAOOAOOAO(O+AO4c           	         d}d}d}ddd}ddd}d	j                  d
d|g      }d	j                  dd|g      }| j                         }| j                         5 }	|j                  |d |	d|j                  |j                        }
|j                  |||	d|
|j                        }|j                  |||	d|j                  |j                        }d d d        | j                  |j                  d      t        |             | j                  |j                  d      t        |             | j                  |j                        |       | j                  |j                  |      |       | j                  |j                        |       | j                  |j                  |      |       | j                  |j                  |      |       | j                  |j                  |      |       | j                  |j                  |             | j                  |j                  |      d       | j                  |j                  ||             | j                  |j                  ||             | j                  |j                  ||             | j                  |j                  ||             y # 1 sw Y   xY w)Nrr      bars   baz   source0s(   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas   copys   copyrev   source1(   bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbr      
copy: source0
s4   copyrev: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

s   
copy: source1
s4   copyrev: bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb

r   rG   r   )r      )joinr%   rM   rN   r/   r&   ru   r'   rv   rw   rx   r-   ry   rO   rz   )r@   rX   rY   rZ   meta1meta2stored1stored2rA   rP   r[   r\   r]   s                r   testrenamedzifiledatatests.testrenamed(  s]   			  !
  !

 (((L
 (((L
 $$& 	G"EE)T2q!((AHHEEEE)UB5!((CEEE)UB188QXXFE	G 	CL1C	N3E*G45)73E*G45)73	2	2 	5)*5)+EFeY/0eW-.ui01eW-.1	G 	Gs   A5J66K c           	         d}d}d}ddd}dj                  dd	dz  d
g      }| j                         }| j                         5 }|j                  |i |d|j                  |j                        }|j                  |||d|j                  |j                        }	d d d        | j                  |j                  d      t        |      dz          | j                  |j                  d      t        |             | j                  |j                        |       | j                  |j                  |      |       | j                  |j                  	      |       | j                  |j                  |	      |       | j                  |j                  |      |       | j                  |j                  |	      |       | j                  |j                  ||             | j                  |j                  ||             | j                  |j                  |	|             | j                  |j                  |	|             y # 1 sw Y   xY w)Ns   
foos	   


foos   
barr   r   r   r   r   s   copyrev: %s
s   

barr   rG   rc   )r   r%   rM   rN   r/   r&   ru   r'   rv   rw   rx   r-   rz   rO   )
r@   rX   stored0rY   r   r   rA   rP   r[   r\   s
             r   testmetadataprefixz!ifiledatatests.testmetadataprefixb  s    	* 	!
 ((( I."
 $$& 	G"EE)RQ!((CEEE)UB188QXXFE	G
 	C	NQ$67C	N3E*G45)73E*G45)73	2	2ui01eW-.ui01eW-.-	G 	Gs   AIIc           
      F   | j                         }d}|dz   }| j                         5 }|j                  |d |d|j                  |j                        }d}| j	                  |||||j                  d|       d d d        | j                  t        |      d       | j                  |j                        |j                  f       | j                  t        j                        5  |j                  |       d d d        | j                  t        j                        5  |j                  |       d d d        | j                  t        j                        5  |j                  |       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   [xY w# 1 sw Y   y xY w)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      rG   rawtextr   )r%   rM   rN   r/   _addrawrevisionfnr&   r'   r1   r*   r   StorageErrorrv   rw   rx   r@   rA   rX   rY   rP   r[   r\   s          r   testbadnodereadzifiledatatests.testbadnoderead  sn   !	(	$$& 	"EE)T2q!((AHHEE E""2ueQXXq) # 		 	Q#5)E188+<= u112 	JJu	
 u112 	IIe	 u112 	FF5M	 	+	 		 	
	 		 	s0   AE3&E?FF3E<?FFF c           
      ,   | j                         }d}|dz   }| j                         5 }|j                  |d |d|j                  |j                        }d}| j	                  |||||j                  d|       d d d        | j                  t        j                        5  |j                         d d d        | j                  t        j                        5  |j                         d d d        y # 1 sw Y   |xY w# 1 sw Y   OxY w# 1 sw Y   y xY wNr   r   r   r   rG   r   )	r%   rM   rN   r/   r   r*   r   r   rw   r   s          r   testbadnoderevisionrawz%ifiledatatests.testbadnoderevisionraw  s    !	(	$$& 	"EE)T2q!((AHHEE E""2ueQXXq) # 		 u112 	IIe	 u112 	IIe	 		 		 		 	$   AC2C>D
2C;>D
Dc           
      ,   | j                         }d}|dz   }| j                         5 }|j                  |d |d|j                  |j                        }d}| j	                  |||||j                  d|       d d d        | j                  t        j                        5  |j                         d d d        | j                  t        j                        5  |j                         d d d        y # 1 sw Y   |xY w# 1 sw Y   OxY w# 1 sw Y   y xY wr   )	r%   rM   rN   r/   r   r*   r   r   rx   r   s          r   testbadnoderevisionz"ifiledatatests.testbadnoderevision  s     !	(	$$& 	"EE)T2q!((AHHEE E""2ueQXXq) # 		 u112 	FF5M	 u112 	FF5M	 		 		 		 	r   c                 $   | j                         }d}|dz   }|dz   }| j                         5 }|j                  |d |d|j                  |j                        }d}| j	                  |||||j                  d|       d d d        | j                  t        j                        5  |j                         d d d        t        j                  ||j                        }| j                         5 }t        j                  ||      }	| j	                  |||||j                  dd|	f	       d d d        | j                  t        |      d
       | j                  |j                  |      |       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ^xY w)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   rG   r   r   )r   rV   )r%   rM   rN   r/   r   r*   r   r   rx   r	   hashrevisionsha1r   textdiffr&   r'   )
r@   rA   rX   rY   rZ   rP   r[   r\   r]   r   s
             r   testbadnodedeltazifiledatatests.testbadnodedelta  st   !	(	(	$$& 	"EE)T2q!((AHHEE E""2ueQXXq) # 		 u112 	FF5M	 ,,YqxxH$$& 	"NN9i8E""2ueQXXqE
 # 	 	Q# 		2/	 		 	
	 	s$   AE.#E:.;F.E7:FFc                    | j                         }t        j                  ddid      }| j                         5 }|j	                  dd |d|j
                  |j
                        }d}| j                  |||||j
                  d|d	       d d d        | j                  |j                  d             | j                  t        j                        5  |j                  d       d d d        | j                  t        j                        5  |j                  d       d d d        | j                  t        j                        5  |j                  d       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   [xY w# 1 sw Y   y xY w
N   censored	   tombstoner   rr   r   r   rG   Tcensored)r%   r	   packmetarM   rN   r/   r   rO   r:   r*   r   CensoredNodeErrorrv   rw   rx   r@   rA   r   rP   r[   r\   s         r   testcensoredzifiledatatests.testcensored  s^   &&\ 	
 $$& 	"EE&$AqxxBE !E""2ueQXXq'D # 	 	Q(u667 	JJqM	 u667 	IIaL	 u667 	FF1I	 	%	 		 		 		 	s0   AEE)	E5FE&)E25E>F
c                    | j                         }t        j                  ddid      }| j                         5 }|j	                  dd |d|j
                  |j
                        }d}| j                  |||||j
                  d|d	       d d d        | j                  t        j                        5  |j                  d       d d d        y # 1 sw Y   CxY w# 1 sw Y   y xY wr   )r%   r	   r   rM   rN   r/   r   r*   r   r   rw   r   s         r   testcensoredrawrevisionz&ifiledatatests.testcensoredrawrevision  s     &&\ 	
 $$& 	"EE&$AqxxBE !E""2ueQXXq'D # 	 u667 	IIaL	 		 		 	s   AC0CCC N)r   r   r   rj   rD   rQ   r^   r   r   r   r   r   r   r   r   r   r   r   rl   rl     sF    42l>8@Wr8/t)/VB,,3@>r   rl   c                   d    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zy)ifilemutationtestszGeneric 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           	         | j                         }| j                         5 }|j                  dd |d|j                  |j                        }|j                  dd |d|j                  |j                        }|j                  dd |d|j                  |j                        }d d d        | j	                         | j	                  |       | j	                  t        |      d       y # 1 sw Y   IxY w)Nrr   r   rG   )r%   rM   rN   r/   r&   r'   r@   rA   rP   r[   r\   r]   s         r   testaddnoopzifilemutationtests.testaddnoop=  s    $$& 	C"EE&$AqxxBEEE&$AqxxBEEE&$AqxxBE		C 	&&Q#	C 	Cs   A?C((C1c           
      ,   | j                         }| j                         5 }| j                  t        j                        5  |j                  d|d|j                  |j                  d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nrr   r   r   r7   )r%   rM   r*   r   r   addrevisionr/   r@   rA   rP   s      r   testaddrevisionbadnodez)ifilemutationtests.testaddrevisionbadnodeI  s    $$& 	"""5#5#56 B188QXXL  	 	 	 	s#    B
,A>-B
>B	B

Bc           
         | j                         }| j                         5 }t        ddd      D ]   }d|z  t        j                   z  sd|z  } n | j                  t        j                        5  |j                  d|d|j                  |j                         d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)N   r   rK   rG   rr   )flags)
r%   rM   r4   r   REVISION_FLAGS_KNOWNr*   r   r   r   r/   )r@   rA   rP   rC   r   s        r   testaddrevisionunknownflagz-ifilemutationtests.testaddrevisionunknownflagR  s    $$& 	N"2q"% Fz>>>>FE
 ""5#5#56 Nfb!QXXqxxuMN	N 	NN N	N 	Ns)   (B:
'B:1,B.B:.B7	3B::Cc           	        
 | j                         }g 

fdd }| j                         5 }g fd}fd}|j                  g d |||       d d d        | j                  g        | j                  
g        | j                  t	        |      d       d}t        j                  t	        |            |z   }| j                         5 }|j                  |d |d|j                  |j                        }d d d        | j                         }|j                  |j                  |j                  |j                  |di fg}	| j                         5 }g fd}fd	}|j                  |	||||       d d d        | j                  d
g       | j                  t	        
      d       | j                  
d   d   d   d          | j                  t        |j                               dg       | j                  |j                  d         d       | j                  |j                  d      d          y # 1 sw Y   xY w# 1 sw Y   UxY w# 1 sw Y   xY w)Nc                  ,    j                  | |f       y N)append)argskwargscallbackargss     r   cbz1ifilemutationtests.testaddgroupsimple.<locals>.cbb  s    v/r   c                      yNr   r   r   s    r   
linkmapperz9ifilemutationtests.testaddgroupsimple.<locals>.linkmappere  s    r   c                 \    | j                  |      }j                  |        | |       y r   r7   r   clr6   r7   r   nodess      r   onchangesetz:ifilemutationtests.testaddgroupsimple.<locals>.onchangesetk  %    wws|T"2tr   c                 F    j                  | j                  |             y r   r   r7   r   r6   r   s     r   ondupchangesetz=ifilemutationtests.testaddgroupsimple.<locals>.ondupchangesetp      RWWS\*r   addrevisioncbduplicaterevisioncbr   rr   c                 \    | j                  |      }j                  |        | |       y r   r   r   s      r   r   z:ifilemutationtests.testaddgroupsimple.<locals>.onchangeset  r   r   c                 F    j                  | j                  |             y r   r   r   s     r   r   z=ifilemutationtests.testaddgroupsimple.<locals>.ondupchangeset  r   r   s   I˱\WG kFzyrG   )r%   rM   addgroupr&   r'   r   trivialdiffheaderrN   r/   r(   r0   r6   r7   )r@   rA   r   rP   r   r   rX   delta0r[   deltasr   r   r   s             @@@r   testaddgroupsimplez%ifilemutationtests.testaddgroupsimple]  sO   	0	 $$& 	"E
+ JJ)$2  	& 	#r*Q#	((Y89D$$& 	F"EE)T2q!((AHHEE	F  AHHahh!((FArJ
 $$& 	"E
+ JJ)$2  	& 	<	
 	\*A.a+A.a9affh!-uQx!,E!H-G	 	4	F 	F	 	s#   $H=+I
$I=I
II c                   
 | j                         }g d}g }| j                         5 }|D ];  }|j                  |j                  |d |d|j                  |j                               = 	 d d d        | j                         }g }t        |      D ]j  \  }}t        j                  t        |            |z   }|j                  ||   |j                  |j                  |j                  |j                  |di f       l | j                         5 }g 

fd}	|j                  |d ||	|	       | j                  
|       d d d        | j                  t        |      t        |             | j                  t        |j                               g d       | j                  |j                  |d         d       | j                  |j                  |d         d       | j                  |j                  |d         d       | j                  |j                  d      |d          | j                  |j                  d      |d          | j                  |j                  d      |d          y # 1 sw Y   xY w# 1 sw Y   ?xY w)	N)rr   r   rS   r   c                 F    j                  | j                  |             y r   r   )r   r6   newnodess     r   r   z<ifilemutationtests.testaddgroupmultiple.<locals>.onchangeset  s    -r   c                      yr   r   xs    r   <lambda>z9ifilemutationtests.testaddgroupmultiple.<locals>.<lambda>      r   r   rW   rG   r   )r%   rM   r   rN   r/   	enumerater   r   r'   r   r&   r(   r0   r6   r7   )r@   rA   	fulltextsr   rP   r   r   rC   r   r   r   s             @r   testaddgroupmultiplez'ifilemutationtests.testaddgroupmultiple  s8   
	 $$& 	O"% OQUU8T2q!((AHHMNO	O $Y/ 	KAx++CM:XEEMMq188QXXqxx5!RP	 $$& 	."H. JJ)$/   Xu-	. 	QV-affh3uQx!,uQx!,uQx!,E!H-E!H-E!H-G	O 	O	. 	.s   AI-1I:-I7:Jc                 l   | j                         }t        j                  ddid      }| j                         5 }|j	                  dd |d|j
                  |j
                        }d}| j                  |||||j
                  d|d	       d d d        t        j                  d
d      }d|j
                  d||di fg}| j                         5 }| j                  t        j                        5  |j                  |d |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r   r   r   r   r   rG   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                      yr   r   r   s    r   r   z=ifilemutationtests.testdeltaagainstcensored.<locals>.<lambda>  r   r   )r%   r	   r   rM   rN   r/   r   r   r   r*   r   CensoredBaseErrorr   )r@   rA   r   rP   r[   r\   r   r   s           r   testdeltaagainstcensoredz+ifilemutationtests.testdeltaagainstcensored  s8   &&\ 	
 $$& 	"EE-r1ahhIE !E""2ueQXXq'D # 	 }.HI5!((L%2N
 $$& 	4"""5#:#:; 4

6;34	4 	4	 	 4 4	4 	4s0   AD D*,DD*DD'	#D**D3c           	      L   | j                         }| j                         5 }|j                  dd |d|j                  |j                        }|j                  dd |d||j                        }|j                  dd |d||j                        }d d d        | j                         5 }|j	                  |g       d d d        | j                  t        |      d       | j                  t        |j                               g d       | j                  |j                        d       | j                  |j                        d       | j                  t        j                        5  |j                         d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)	Nr   r   r   rG   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   rV   rW   )r%   rM   rN   r/   censorrevisionr&   r'   r(   r0   rx   r*   r   r   r   s         r   testcensorrevisionbasicz*ifilemutationtests.testcensorrevisionbasic  s_   $$& 	G"EE-r1ahhIEEE-r1eQXXFEEE-r1eQXXFE	G
 $$& 	*"R%)	* 	Q#affh366u667 	FF5M	 		G 	G
	* 	*	 	s$   A+F$F'FFFF#c           
      `   | j                         }| j                         5 }t        d      D ]/  }|j                  d|z  d |||j                  |j                         1 	 d d d        t        d      D ]-  }| j                  |j                  |      |t               f       / y # 1 sw Y   ExY wN
   r!   )r%   rM   r4   rN   r/   r&   getstrippointset)r@   rA   rP   r6   s       r   testgetstrippointnoparentsz-ifilemutationtests.testgetstrippointnoparents  s    $$& 	F"Ry Feck4S!((AHHEF	F 9 	ACQ__S1C<@	A		F 	Fs   >B$$B-c           
      d   | j                         }| j                         5 }|j                  }t        d      D ]%  }|j	                  d|z  d ||||j                         ' 	 d d d        t        d      D ]-  }| j                  |j                  |      |t               f       / y # 1 sw Y   ExY wr  )r%   rM   r/   r4   rN   r&   r  r  r@   rA   rP   p1r6   s        r   testgetstrippointlinearz*ifilemutationtests.testgetstrippointlinear  s    $$& 	@"BRy @eck4S"ahh?@	@ 9 	ACQ__S1C<@	A	@ 	@s   A B&&B/c           	      8   | j                         }| j                         5 }|j                  dd |d|j                  |j                        }|j                  dd |d||j                        }|j                  dd |d||j                         |j                  dd |d||j                         |j                  d	d |d
||j                         d d d        t	        d      D ]-  }| j                  |j                  |      |t               f       / y # 1 sw Y   ExY w)Nr   r   r$   rG   r`   r   ra   rV   rb   rc   r    )r%   rM   rN   r/   r4   r&   r  r  )r@   rA   rP   r[   r\   r6   s         r   testgetstrippointmultipleheadsz1ifilemutationtests.testgetstrippointmultipleheads&  s    $$& 	6"EE$b!QXXqxx@EEE$b!UAHH=EEE$b!UAHH5EE$b!UAHH5EE$b!UAHH5	6 8 	ACQ__S1C<@	A	6 	6s   B+DDc           	         | j                         }| j                         5 }|j                  dd |d|j                  |j                        }|j                  dd |d||j                         |j                  dd |d||j                         d d d        | j	                  |j                  d      dt               f       | j	                  |j                  d      dt               f       | j	                  |j                  d      dt               f       | j	                  |j                  d	      dt               f       | j	                  |j                  d
      dt               f       | j	                  |j                  d      dt               f       | j	                  |j                  d      ddhf       | j	                  |j                  d      ddhf       | j	                  |j                  d      ddhf       | j	                  |j                  d      ddhf       | j	                  |j                  d      ddhf       | j	                  |j                  d      d	t               f       y # 1 sw Y   xY w)Nr   r   r$   r  r`   r    rG   r   rV   rc   re         	      )r%   rM   rN   r/   r&   r  r  )r@   rA   rP   r[   s       r    testgetstrippointearlierlinkrevsz3ifilemutationtests.testgetstrippointearlierlinkrevs3  s   $$& 	6"EE$b!QXXqxx@EEE$b"eQXX6EE$b!UAHH5	6
 	+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!	6 	6s   A+I66J c                     | j                         }| j                         5 }|j                  d|       d d d        | j                  t	        |      d       y # 1 sw Y   %xY wr   )r%   rM   stripr&   r'   r   s      r   teststripemptyz!ifilemutationtests.teststripemptyH  sV    $$& 	"GGArN	 	Q#	 	s   AA!c           
         | j                         }| j                         5 }|j                  }t        d      D ]%  }|j	                  d|z  d ||||j                        }' 	 d d d        | j                  t        |      d       | j                         5 }|j                  d|       d d d        | j                  t        |      d       y # 1 sw Y   kxY w# 1 sw Y   1xY w)Nr  r!   r   )r%   rM   r/   r4   rN   r&   r'   r  r
  s        r   teststripallzifilemutationtests.teststripallP  s    $$& 	E"BRy EUU53;b#r188DE	E
 	Q$$$& 	"GGArN	 	Q#	E 	E	 	s   A CCCC!c           	      J   | j                         }| j                         5 }|j                  dd |d|j                  |j                         |j                  dd |d|j                  |j                        }|j                  dd |d|j                  |j                        }d d d        | j	                  t        |      d       | j                         5 }|j                  d|       d d d        | j	                  t        |      d       | j                         5 }|j                  d|       d d d        | j	                  t        |      d	       | j                  t        j                        5  |j                         d d d        | j                         5 }|j                  d
|       d d d        | j	                  t        |      d	       | j                         5 }|j                  d|       d d d        | j	                  t        |      d       | j                  t        j                        5  |j                         d d d        y # 1 sw Y   xY w# 1 sw Y   wxY w# 1 sw Y   >xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r   r$   r    r`   r  rV   r  r   re   rG   )r%   rM   rN   r/   r&   r'   r  r*   r   r3   r6   )r@   rA   rP   r\   r]   s        r   teststrippartialz#ifilemutationtests.teststrippartial_  s2   $$& 	B"EE$b!QXXqxx8EE$b!QXXqxx@EEE$b"ahhAE	B
 	Q#$$& 	"GGBO	 	Q#$$& 	"GGBO	 	Q#u001 	EE%L	 $$& 	"GGArN	 	Q#$$& 	"GGArN	 	Q#u001 	EE%L	 	=	B 	B	 	
	 	
	 		 	
	 	
	 	sT   A?III(.I5JJ3JII%(I25I>J
JJ"N)r   r   r   rj   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r   r   r   r   r   4  sT    
$	NN.`-.^4<(	AAA:*$$"r   r   c                 2    | ||d}t        dt        f|      S )a9  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%   rM   r   r   )typer   
makefilefnmaketransactionfnaddrawrevisionfnds       r   makeifileindextestsr$    s)    & "/-	A
 !O#5q99r   c                 2    | ||d}t        dt        f|      S )Nr  rl   )r  rl   r  s       r   makeifiledatatestsr&    s'    !/-	A
  >"3Q77r   c                 2    | ||d}t        dt        f|      S )Nr  r   )r  r   r  s       r   makeifilemutationtestsr(    s(    !/-	A
 $'9&;Q??r   )r   r7   r   r    r   r   
interfacesr   utilsr	   r   r   r   rl   r   r$  r&  r(  r   r   r   <module>r,     sk     $ 
8$$ 
o0l o0da
\ a
HM M`
:48@r   