a zet*@sdZddlZddlZddlZddlZddlZddlZddlmZ ddl m Z ddl m Z e jZddZGdddejZed kredS) zATest script for the dumbdbm module Original by Roger E. Masse N)support)partialc Cs4dD]*}ztt|Wqty,Yq0qdS)N.dir.dat.bak)osunlink_fnameOSError)extr F/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_dbm_dumb.py _delete_filess  rc@s&eZdZddddddddd d d d d ddddiZddZeee ddddZ ddZ ddZ ddZ ddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zd6d7Zd8d9Zd:d;Zdd?Zd@dAZee j!dBdCdDZ"dEdFZ#dGdHZ$dIS)JDumbDBMTestCase0asPython:bs ProgrammingcsthedswayfsGuidogsintendedüutf-8!cCsntttdH}|t|g|jD]}|j|||<q.| |Wdn1s`0YdS)Nc) contextlibclosingdumbdbmopenr assertEquallistkeys_dict read_helper)selffkeyr r rtest_dumbdbm_creation#s  z%DumbDBMTestCase.test_dumbdbm_creationumaskztest needs os.umask()c Csz.td}ttdd}|Wt|n t|0d}tjdkrNd}ddl}ttd}|| |j |ttd }|| |j |dS) Nriiposixirrr) rr*rr r closenamestatr!S_IMODEst_mode)r&Z old_umaskr'Z expected_moder/str r rtest_dumbdbm_creation_mode*s   z*DumbDBMTestCase.test_dumbdbm_creation_modecCs6tt}d|d<||dd||dS)Nrr)rr r r!r-r&r'r r rtest_close_twice?s  z DumbDBMTestCase.test_close_twicecCs~|tttdP}d|jd<|d<|||| ddd||ddWdn1sp0YdS)Nwsindentedrxxxfoo) init_dbrrrr r r$r%r! setdefaultr4r r rtest_dumbdbm_modificationFs  z)DumbDBMTestCase.test_dumbdbm_modificationc Cs"|tttd}|||tjdd|d<Wdn1sR0Y|tjd|d=Wdn1s0Y| | d|j d| | ddd| | d| t|dWdn1s0YWdn1s0YdS)Nrz'The database is opened for reading onlyxrrr7r8)r9rrrr r r%assertRaisesRegexerrorr!getr$Z assertIsNone assertRaisesKeyErrorr4r r rtest_dumbdbm_readOs  &$ z!DumbDBMTestCase.test_dumbdbm_readcCsF|ttt}||}Wdn1s80YdSN)r9rrrr r keys_helper)r&r'r#r r rtest_dumbdbm_keys`sz!DumbDBMTestCase.test_dumbdbm_keyscCsHttt$}d|d<|d|Wdn1s:0YdS)Nhello1)rrrr r assertInr4r r rtest_write_containsesz#DumbDBMTestCase.test_write_containscCsttt }d|d<d|d<Wdn1s60Yttt }||ddWdn1sv0YdS)NrGrHhello2)rrrr r r!r4r r rtest_write_write_readjs &z%DumbDBMTestCase.test_write_write_readcCsZ|tttd,}||d|jddWdn1sL0YdS)Nr<rr) r9rrrr r r!r$encoder4r r r test_str_readrszDumbDBMTestCase.test_str_readcCs|ttt }d|d<d|d<Wdn1s>0YtttdN}|d|||dd|j dd||ddWdn1s0YdS) Nrra1r<rrHr) r9rrrr r rIr!rMr$r4r r rtest_str_write_containsws& z'DumbDBMTestCase.test_str_write_containscCsttt }d|d<d|d<Wdn1s60Yttdd}|}Wdn1sn0Ytjdkr| dd }n | d d}ttdd }| |Wdn1s0Ytt}| |dd| |dddS) NrGrHrK2rrb  s wb) rrrr r ioreadrlinesepreplacewriter!)r&r'filedatar r rtest_line_endingss&&  ( z!DumbDBMTestCase.test_line_endingscCs0||}|jD]}||j|||qdSrD)rEr$r!)r&r'r#r(r r rr%s  zDumbDBMTestCase.read_helpercCsPtttd*}|jD]}|j|||<qWdn1sB0YdSNn)rrrr r r$r&r'kr r rr9s zDumbDBMTestCase.init_dbcCs*t|}t|j}||||SrD)sortedr#r$r!)r&r'r#Zdkeysr r rrEs  zDumbDBMTestCase.keys_helperc Csddl}i}tdD]}ttt~}tdD]d}|d}|dkrd||vr||=||=q4|d|d}|||<|||<| |||q4Wdn1s0Yttt>}t dd | D}t | }| ||Wdq1s0YqdS) NrdZ abcdefghijklmg?)rrri'css |]\}}|d|fVqdS)zlatin-1N)rM).0rbvr r r rz.DumbDBMTestCase.test_random..) randomrangerrrr r choice randranger!rcitems) r&riddummyr'rbrgZexpectedZgotr r r test_randoms$   0 zDumbDBMTestCase.test_randomcCsttd}d|d<Wdn1s*0Yttd&}|t|dgWdn1sl0Y|tj|Wdn1s0YdS)Nrzcontext managerzdumbdbm context managerr<sdumbdbm context manager)rr r r!r"r#rAr?)r&dbr r rtest_context_managers &4z$DumbDBMTestCase.test_context_managerc Csttd}|ttj|ttj|dttj|ttj |fD]J}| tj }|dWdn1sp0Y| t |jdqBtdtdtdtfD]J}| tj }||Wdn1s0Y| t |jdqdS)Nrbtestz"DBM object has already been closedr#Ziterkeysrm)rr r r-roperatordelitemsetitemgetitemcontainsrAr?r!str exception methodcallerlen)r&r'methcmr r rtest_check_closeds,     & & z!DumbDBMTestCase.test_check_closedcCsttd*}|jD]}|j|||<qWdn1s<0Yttd }||gWdn1sx0YdSr_)rr r r$r!r#rar r rtest_create_news  .zDumbDBMTestCase.test_create_newc Csttdd}|dWdn1s.0Ytt}|t:tt}Wdn1sn0YWdn1s0Y|| dWdn1s0YdS)Nrr6zstr(print('Hacked!')), 0 ) r r r[rZcaptured_stdoutrA ValueErrorrr!getvalue)r&streamstdoutr'r r r test_evals(   <zDumbDBMTestCase.test_evalc CsvdD]l}t|ttt|Wdn1s:0Y|tj td|tj tdqdS)Nr<r6rr) rrAFileNotFoundErrorrr r assertFalserpathexists)r&valuer r rtest_missing_datas  *z!DumbDBMTestCase.test_missing_datac Csttd}Wdn1s"0YttddD]f}|ttt|Wdn1sn0Y|tj td|tj tdq>dS)Nr`rrr) rr r rr rArrrr)r&r'rr r rtest_missing_indexs *z"DumbDBMTestCase.test_missing_indexc CsFdD]<}|tdtt|Wdq1s60YqdS)N)xZrfNz)Flag must be one of 'r', 'w', 'c', or 'n')r>rrr r )r&flagr r rtest_invalid_flags z!DumbDBMTestCase.test_invalid_flagc Cst}tj|d}t|d>}|t| g|j D]}|j |||<q@Wdn1sh0Yt |dt j t |dt j t |t j t jBt|d2}|t| t|j |Wdn1s0YWdn1s0YdS)Nrqr`rrr<)rZtemp_dirrrjoinrr r!r"r#r$chmodr/S_IRUSRS_IXUSRrcr-)r&dirZfnamer'r(r r rtest_readonly_files s  .z#DumbDBMTestCase.test_readonly_filesz*requires OS support of non-ASCII encodingscCstj}dD]}|tj||q t|d}d|d<Wdn1sL0Y|tj |d|tj |dt|dD}| t | dg|d|v| |ddWdn1s0YdS)Nrrsvalueskeyrrr<) rTESTFN_NONASCIIZ addCleanupr rr Z assertTruerrrr!r"r#)r&filenamesuffixrqr r rtest_nonascii_filenames&z&DumbDBMTestCase.test_nonascii_filenamecCs tdSrDrr&r r rtearDown'szDumbDBMTestCase.tearDowncCs tdSrDrrr r rsetUp*szDumbDBMTestCase.setUpN)%__name__ __module__ __qualname__rMr$r)unittestZ skipUnlesshasattrrr3r5r;rCrFrJrLrNrQr^r%r9rErprrrrrrrrrrrrrrr r r rrsN         r__main__)__doc__rrWrurr/rZdbm.dumbZdumbrrtr functoolsrZTESTFNr rZTestCaserrmainr r r rs