ϪfdZddlZddlmZddlmZddlmZddlm Z ddl m Z Gdd e jZ Gd d e Ze egZy) z Test cases for dirdbm module. N) b64decode)dirdbm)rebuild)FilePath)unittestcLeZdZd dZd dZd dZd dZd dZd dZd dZ d d Z y) DirDbmTestsNct|j|_tj|jj|_d|_y)N)sabcsfoos/lalalss sbaz)rmktemppathropendbmitemsselfs :/usr/lib/python3/dist-packages/twisted/test/test_dirdbm.pysetUpzDirDbmTests.setUps6T[[]+ ;;tyy~~.X  ctd}d|j|<d|j|<|j|j|dy)Nz//==a)rr assertEqual)rks rtest_allzDirDbmTests.test_alls> f    !d+rcjtjd}d|d<tjty)Nzdirdbm.rebuild.testvalueskey)rShelfr)rss rtest_rebuildInteractionz#DirDbmTests.test_rebuildInteraction!s& LL. /& rc n|j}g}t}|jD],\}}|||<|j||j |.|j |jD],\}}|j |||j|||. |dJd#t$rYnwxYw|j}t|j}t|j}|j t|j} |j||dt|dt||j||djt|t||j| |dt| dt||j} |j| } |j} t|j} t|j}| j |j|| djt|t| |j|| d t|dt| |j||d t|dt|| j|j!t#| jt#| jcxk(xr5t#| jcxk(xrt#| cxk(xrdk(ncd |j%t#|t#| t'j(| |jD]\}}||=|j+||d |jt#|jdd |jt#|jdd|jt#|jdd|jt#|ddy)NsXXXrz)didn't raise KeyError on non-existent keyz.keys() output didn't match: z != z'.values() output didn't match: {} != {}zitems() 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 itzdatabase has keyszdatabase has valueszdatabase has items)rsetrappendaddsortassertInrKeyErrorkeysvaluesreprformatrcopyToclear assertTruelenassertNotEqualshutilrmtree assertNotIn)rdr)r*rvdbkeysdbvaluesdbitemsrcopyPathd2copykeys copyvalues copyitemss rtest_dbmzDirDbmTests.test_dbm&s~ HHJJ DAqAaD KKN JJqM  JJ &DAq MM!Q    QqT1 % &  B fI BA A1    qxxz?aggi. DJJ   +DJ J    5 < <V d8n     $T%[Md7m_ E ;;= XXh 668_  N      5 < <V d8n     H~tJ/ 1   F|T)_ .      Nc"))+. Q#bhhj/ QSW QPQ Q   CFCG, hJJ DAq!   1K   QVVX+>? QXXZ!-BC QWWY,@A Q$89s B,, B87B8cddl}d|jd<|jt|j|jj dz dk|j t |jjdy)Nrvksnokey)timerr/absgetModificationTime assertRaisesr()rrDs rtest_modificationTimez!DirDbmTests.test_modificationTimesa DIIK$((*F*Ft*LLMQRRS (DHH$@$@(KrcX|jjd}|jj|dzj d5}|j dddd|jjd}|jj|j d5}|j dddd|jj|dzj d5}|j d ddd|jjd j d5}|j d dddt j|jj}|j|dd|j|dd|j|jjd |j|jjd y#1swYxYw#1swYLxYw#1swYxYw#1swYxYw)zJ DirDBM: test recovery from directory after a faked crash skey1s.rplw)moderNskey2scorrectswrongzaa.newsdeletedz*.newz*.rpl) r_encoderchildrwriterDirDBMr assertFalse globChildren)rrfk2rs r test_recoveryzDirDbmTests.test_recoverys HH  W % YY__Q[ ) . .C . 8 A GGH  XX  g & YY__R % %3 % / 1 GGJ  YY__R'\ * / /S / 9 Q GGH  YY__X & + + + 5  GGJ  mmDIINN+ Wx0 Wz2 //89 //89!        s0 G9*H2H7H 9HHH H)c|jt|jjdd |jt|jjdd|jt|jjd|jt|jjd|jt|jjd|jt|jjd|jt|jjdy#tj $r.|j |jtjYwxYw)zx L{dirdbm.DirDBM} operations only support string keys: other types should raise a L{TypeError}. 32rCN)rG TypeErrorr __setitem__rFailTestassertIsInstancerr __getitem__ __delitem__has_key __contains__rFrs rtest_nonStringKeyszDirDbmTests.test_nonStringKeyss )TXX%9%91cB :   i)=)=sA F )TXX%9%91= )TXX%9%91= )TXX%5%5q9 )TXX%:%:A> )TXX%A%A1E   :  ! !$((FLL 9 :s,D22=E32E3cdttdtddfd}d|jd<|j |jd||j t |jjdd y) z4 Failure path when setting an item. rdatareturnNc:|j|td)Nz fail to write) setContentOSError)rrcs r _writeFailz,DirDbmTests.test_failSet.._writeFails OOD !/* *rstestsfailkey _writeFilestest2)rstrbytesrpatchrGIOErrorrZ)rrhs r test_failSetzDirDbmTests.test_failSetsb  +Xc] +% +D + ' 488\:6 '488#7#7XNrrdN) __name__ __module__ __qualname__rrr!r?rHrTrarnrrr r s/ ,  ^:@L :.F" Orr ceZdZddZy) ShelfTestsNct|j|_tj|jj|_d|_y)N)r r r )sint )sfloatg(@)stuple)Nrw)rrrrrrrrs rrzShelfTests.setUps5T[[]+ << /  rro)rprqrrrrsrrrurus  rru)__doc__r2base64rtwisted.persistedrtwisted.pythonrtwisted.python.filepathr twisted.trialrTestCaser ru testCasesrsrrrsM$","xO(##xOv    * % r