§
    Ètºf–  ã                   ó˜   — d Z ddlZddlmZ ddlmZ ddlmZ ddlm	Z	 ddl
mZ  G d„ d	ej        ¦  «        Z G d
„ de¦  «        ZeegZdS )z
Test cases for dirdbm module.
é    N)Ú	b64decode)Údirdbm)Úrebuild)ÚFilePath)Úunittestc                   óN   — e Zd Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd	„Z	dd
„Z
dS )ÚDirDbmTestsÚreturnNc                 ó¦   — t          |                      ¦   «         ¦  «        | _        t          j        | j        j        ¦  «        | _        d| _        d S )N)©s   abcs   foo©s   /lalals    ©s    
s   baz)r   ÚmktempÚpathr   ÚopenÚdbmÚitems©Úselfs    úW/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/test/test_dirdbm.pyÚsetUpzDirDbmTests.setUp   s<   € Ý˜TŸ[š[™]œ]Ñ+Ô+ˆŒ	Ý”;˜tœyœ~Ñ.Ô.ˆŒðX
ˆŒ
ˆ
ˆ
ó    c                 óŽ   — t          d¦  «        }d| j        |<   d| j        |<   |                      | j        |         d¦  «         d S )Nz//==ó   a)r   r   ÚassertEqual)r   Úks     r   Útest_allzDirDbmTests.test_all   sG   € Ý�fÑÔˆØˆŒ�‰ØˆŒ�‰Ø×Ò˜œ !œ dÑ+Ô+Ð+Ð+Ð+r   c                 ój   — t          j        d¦  «        }d|d<   t          j        t           ¦  «         d S )Nzdirdbm.rebuild.testó   values   key)r   ÚShelfr   )r   Úss     r   Útest_rebuildInteractionz#DirDbmTests.test_rebuildInteraction!   s1   € ÝŒLÐ.Ñ/Ô/ˆØˆˆ&‰	ÝŒ�ÑÔÐÐÐr   c           
      óH
  — | j         }g }t          ¦   «         }| j        D ]4\  }}|||<   |                     |¦  «         |                     |¦  «         Œ5|                     ¦   «          | j        D ]7\  }}|                      ||¦  «         |                      ||         |¦  «         Œ8	 |d          J d¦   «         ‚# t          $ r Y nw xY w| 	                    ¦   «         }t          | 
                    ¦   «         ¦  «        }t          |                     ¦   «         ¦  «        }|                     ¦   «          t          | j        ¦  «        }	|                      ||dt          |¦  «        › dt          |¦  «        › �¦  «         |                      ||d                     t          |¦  «        t          |¦  «        ¦  «        ¦  «         |                      |	|dt          |	¦  «        › dt          |¦  «        › �¦  «         |                      ¦   «         }
|                     |
¦  «        }| 	                    ¦   «         }t          | 
                    ¦   «         ¦  «        }t          |                     ¦   «         ¦  «        }|                     ¦   «          |                      ||d                     t          |¦  «        t          |¦  «        ¦  «        ¦  «         |                      ||d	t          |¦  «        ›dt          |¦  «        ›�¦  «         |                      ||d
t          |¦  «        ›dt          |¦  «        ›�¦  «         |                     ¦   «          |                      t#          | 	                    ¦   «         ¦  «        t#          | 
                    ¦   «         ¦  «        cxk    o?t#          |                     ¦   «         ¦  «        cxk    ot#          |¦  «        cxk    odk    nc d¦  «         |                      t#          |¦  «        t#          |¦  «        ¦  «         t'          j        |
¦  «         | j        D ]\  }}||= |                      ||d¦  «         Œ |                      t#          | 	                    ¦   «         ¦  «        dd¦  «         |                      t#          | 
                    ¦   «         ¦  «        dd¦  «         |                      t#          |                     ¦   «         ¦  «        dd¦  «         |                      t#          |¦  «        dd¦  «         d S )Ns   XXXr   z)didn't raise KeyError on non-existent keyz.keys() output didn't match: z != z'.values() output didn't match: {} != {}zitems() didn't match: z'.copyTo().keys() didn't match: {} != {}z!.copyTo().values() didn't match: z .copyTo().items() didn't match: z.clear() failedz3key is still in database, even though we deleted itzdatabase has keyszdatabase has valueszdatabase has items)r   Úsetr   ÚappendÚaddÚsortÚassertInr   ÚKeyErrorÚkeysÚvaluesÚreprÚformatr   ÚcopyToÚclearÚ
assertTrueÚlenÚassertNotEqualÚshutilÚrmtreeÚassertNotIn)r   Údr*   r+   r   ÚvÚdbkeysÚdbvaluesÚdbitemsr   ÚcopyPathÚd2ÚcopykeysÚ
copyvaluesÚ	copyitemss                  r   Útest_dbmzDirDbmTests.test_dbm&   sÈ  € ØŒHˆð ˆÝ‘”ˆØ”Jð 	ð 	‰DˆAˆqØˆAˆa‰DØ�KŠK˜‰NŒNˆNØ�JŠJ�q‰MŒMˆMˆMØ�	Š	‰Œˆð ”Jð 	&ð 	&‰DˆAˆqØ�MŠM˜!˜QÑÔÐØ×Ò˜Q˜qœT 1Ñ%Ô%Ð%Ð%ð	BØˆfŒIˆIð BÐAÑAÔAÐAøõ ð 	ð 	ð 	ØˆDð	øøøð —’‘”ˆÝ�q—x’x‘z”z‘?”?ˆÝ�a—g’g‘i”i‘.”.ˆØ�Š‰ŒˆÝ�D”J‘”ˆØ×ÒØØØJ­D°©J¬JÐJÐJ½DÀ¹L¼LÐJÐJñ	
ô 	
ð 	
ð
 	×ÒØØØ5×<Ò<Ý�V‘”�d 8™nœnñô ñ	
ô 	
ð 	
ð 	×ÒØØØE¥T¨%¡[¤[ÐEÐEµd¸7±m´mÐEÐEñ	
ô 	
ð 	
ð —;’;‘=”=ˆØ�XŠX�hÑÔˆà—6’6‘8”8ˆÝ˜Ÿš™œ‘_”_ˆ
Ý˜Ÿš™	œ	‘N”Nˆ	Ø�Š‰Œˆà×ÒØØØ5×<Ò<Ý�V‘”�d 8™nœnñô ñ	
ô 	
ð 	
ð 	×ÒØØˆJå�H‰~Œ~ˆ~ˆ~�t JÑ/Ô/Ð/ð1ñ	
ô 	
ð 	
ð 	×ÒØØˆIå�F‰|Œ|ˆ|ˆ|�T )™_œ_˜_ð.ñ	
ô 	
ð 	
ð 	�Š‰
Œ
ˆ
Ø�ŠÝ�—’‘	”	‰NŒN�c "§)¢)¡+¤+Ñ.Ô.ÐQÐQÒQÐQµ#°b·h²h±j´j±/´/ÐQÐQÒQÐQÅSÈÁWÄWÐQÐQÒQÐQÐPQÒQÐQÐQÐQØñ	
ô 	
ð 	
ð 	×Ò�C ™FœF¥C¨¡G¤GÑ,Ô,Ð,ÝŒ�hÑÔÐð ”Jð 	ð 	‰DˆAˆqØ�!�Ø×ÒØ�1ÐKñô ð ð ð 	×Ò�˜QŸVšV™XœX™œ¨Ð+>Ñ?Ô?Ð?Ø×Ò�˜QŸXšX™ZœZ™œ¨!Ð-BÑCÔCÐCØ×Ò�˜QŸWšW™YœY™œ¨Ð,@ÑAÔAÐAØ×Ò�˜Q™œ Ð$8Ñ9Ô9Ð9Ð9Ð9s   Â(B: Â:
CÃCc                 ó  — dd l }d| j        d<   |                      t          |                      ¦   «         | j                             d¦  «        z
  ¦  «        dk    ¦  «         |                      t          | j        j        d¦  «         d S )Nr   ó   vó   ké   s   nokey)Útimer   r0   ÚabsÚgetModificationTimeÚassertRaisesr)   )r   rE   s     r   Útest_modificationTimez!DirDbmTests.test_modificationTime†   sx   € Øˆˆˆð ˆŒ�‰Ø�Š�˜DŸIšI™KœK¨$¬(×*FÒ*FÀtÑ*LÔ*LÑLÑMÔMÐQRÒRÑSÔSÐSØ×Ò�( D¤HÔ$@À(ÑKÔKÐKÐKÐKr   c                 ó²  — | j                              d¦  «        }| j                             |dz   ¦  «                             d¬¦  «        5 }|                     d¦  «         ddd¦  «         n# 1 swxY w Y   | j                              d¦  «        }| j                             |¦  «                             d¬¦  «        5 }|                     d¦  «         ddd¦  «         n# 1 swxY w Y   | j                             |dz   ¦  «                             d¬¦  «        5 }|                     d	¦  «         ddd¦  «         n# 1 swxY w Y   | j                             d
¦  «                             d¬¦  «        5 }|                     d¦  «         ddd¦  «         n# 1 swxY w Y   t          j        | j        j        ¦  «        }|                      |d         d¦  «         |                      |d         d¦  «         |  	                    | j         
                    d¦  «        ¦  «         |  	                    | j         
                    d¦  «        ¦  «         dS )zJ
        DirDBM: test recovery from directory after a faked crash
        s   key1s   .rplÚw)Úmoder   Ns   key2s   corrects   wrongzaa.news   deletedz*.newz*.rpl)r   Ú_encoder   Úchildr   Úwriter   ÚDirDBMr   ÚassertFalseÚglobChildren)r   r   ÚfÚk2r   s        r   Útest_recoveryzDirDbmTests.test_recovery–   sõ  € ð ŒH×Ò˜WÑ%Ô%ˆØŒY�_Š_˜Q ™[Ñ)Ô)×.Ò.°CÐ.Ñ8Ô8ð 	¸AØ�GŠG�HÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð ŒX×Ò˜gÑ&Ô&ˆØŒY�_Š_˜RÑ Ô ×%Ò%¨3Ð%Ñ/Ô/ð 	 °1Ø�GŠG�JÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 àŒY�_Š_˜R '™\Ñ*Ô*×/Ò/°SÐ/Ñ9Ô9ð 	¸QØ�GŠG�HÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð ŒY�_Š_˜XÑ&Ô&×+Ò+°Ð+Ñ5Ô5ð 	 ¸Ø�GŠG�JÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 õ Œm˜DœIœNÑ+Ô+ˆØ×Ò˜˜Wœ xÑ0Ô0Ð0Ø×Ò˜˜Wœ zÑ2Ô2Ð2Ø×Ò˜œ×/Ò/°Ñ8Ô8Ñ9Ô9Ð9Ø×Ò˜œ×/Ò/°Ñ8Ô8Ñ9Ô9Ð9Ð9Ð9sH   ÁA.Á.A2Á5A2ÃC#Ã#C'Ã*C'ÄEÅEÅEÅ:FÆF Æ#F c                 ó–  — |                       t          | j        j        dd¦  «         	 |                       t          | j        j        dd¦  «         n:# t          j        $ r( |                      | j        t          j        ¦  «         Y nw xY w|                       t          | j        j	        d¦  «         |                       t          | j        j
        d¦  «         |                       t          | j        j        d¦  «         |                       t          | j        j        d¦  «         |                       t          | j        j        d¦  «         dS )zx
        L{dirdbm.DirDBM} operations only support string keys: other types
        should raise a L{TypeError}.
        é   Ú3Ú2rD   N)rH   Ú	TypeErrorr   Ú__setitem__r   ÚFailTestÚassertIsInstancer   r    Ú__getitem__Ú__delitem__Úhas_keyÚ__contains__rG   r   s    r   Útest_nonStringKeyszDirDbmTests.test_nonStringKeys­   s!  € ð
 	×Ò�) T¤XÔ%9¸1¸cÑBÔBÐBð	:Ø×Ò�i¨¬Ô)=¸sÀAÑFÔFÐFÐFøÝÔ ð 	:ð 	:ð 	:à×!Ò! $¤(­F¬LÑ9Ô9Ð9Ð9Ð9ð	:øøøð 	×Ò�) T¤XÔ%9¸1Ñ=Ô=Ð=Ø×Ò�) T¤XÔ%9¸1Ñ=Ô=Ð=Ø×Ò�) T¤XÔ%5°qÑ9Ô9Ð9Ø×Ò�) T¤XÔ%:¸AÑ>Ô>Ð>Ø×Ò�) T¤XÔ%AÀ1ÑEÔEÐEÐEÐEs   ©'A Á4BÂBc                 óÞ   — dt           t                   dt          ddfd„}d| j        d<   |                      | j        d|¦  «         |                      t          | j        j        dd	¦  «         dS )
z4
        Failure path when setting an item.
        r   Údatar
   Nc                 óJ   — |                       |¦  «         t          d¦  «        ‚)Nzfail to write)Ú
setContentÚOSError)r   rd   s     r   Ú
_writeFailz,DirDbmTests.test_failSet.<locals>._writeFailÃ   s"   € Ø�OŠO˜DÑ!Ô!Ð!Ý˜/Ñ*Ô*Ð*r   s   tests   failkeyÚ
_writeFiles   test2)r   ÚstrÚbytesr   ÚpatchrH   ÚIOErrorr[   )r   rh   s     r   Útest_failSetzDirDbmTests.test_failSet¾   sz   € ð
	+�X¥cœ]ð 	+µ%ð 	+¸Dð 	+ð 	+ð 	+ð 	+ð  'ˆŒ�ÑØ�
Š
�4”8˜\¨:Ñ6Ô6Ð6Ø×Ò�' 4¤8Ô#7¸ÀXÑNÔNÐNÐNÐNr   ©r
   N)Ú__name__Ú
__module__Ú__qualname__r   r   r"   r@   rI   rU   rb   rn   © r   r   r	   r	      sÇ   € € € € € ð
ð 
ð 
ð 
ð,ð ,ð ,ð ,ð ð  ð  ð  ð
^:ð ^:ð ^:ð ^:ð@Lð Lð Lð Lð :ð :ð :ð :ð.Fð Fð Fð Fð"Oð Oð Oð Oð Oð Or   r	   c                   ó   — e Zd Zdd„ZdS )Ú
ShelfTestsr
   Nc                 ó¦   — t          |                      ¦   «         ¦  «        | _        t          j        | j        j        ¦  «        | _        d| _        d S )N)r   r   r   )s   inté   )s   floatg      (@)s   tuple)Nrw   )r   r   r   r   r    r   r   r   s    r   r   zShelfTests.setUpÍ   s;   € Ý˜TŸ[š[™]œ]Ñ+Ô+ˆŒ	Ý”< ¤	¤Ñ/Ô/ˆŒð
ˆŒ
ˆ
ˆ
r   ro   )rp   rq   rr   r   rs   r   r   ru   ru   Ì   s(   € € € € € ð

ð 

ð 

ð 

ð 

ð 

r   ru   )Ú__doc__r3   Úbase64r   Útwisted.persistedr   Útwisted.pythonr   Útwisted.python.filepathr   Útwisted.trialr   ÚTestCaser	   ru   Ú	testCasesrs   r   r   ú<module>r€      sì   ððð ð €€€Ø Ð Ð Ð Ð Ð à $Ð $Ð $Ð $Ð $Ð $Ø "Ð "Ð "Ð "Ð "Ð "Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø "Ð "Ð "Ð "Ð "Ð "ðxOð xOð xOð xOð xO�(Ô#ñ xOô xOð xOðv
ð 
ð 
ð 
ð 
�ñ 
ô 
ð 
ð ˜*Ð%€	€	€	r   