a 5êdgÜOã@sddlZddlZddlZddlZddlZddlmZddlmZddlm Z ddl m Z m Z m Z mZmZmZmZddlmZddlZddlZGdd„dƒZGd d „d eejƒZGd d „d eejƒZGd d„dƒZGdd„deejƒZGdd„deejƒZdd„ZedkreƒdS)éN)Úarray)Úproxy©Úwraps)ÚTESTFNÚTESTFN_UNICODEÚcheck_warningsÚ run_unittestÚ make_bad_fdÚ cpython_onlyÚ swap_attr)ÚUserListc@szeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Ze ejd)kd*¡d+d,„ƒZd-d.„Zd/d0„Zed1d2„ƒZed3d4„ƒZed5d6„ƒZ ed7d8„ƒZ!ed9d:„ƒZ"ed;d<„ƒZ#ed=d>„ƒZ$ed?d@„ƒZ%edAdB„ƒZ&edCdD„ƒZ'dEdF„Z(edGdH„ƒZ)edIdJ„ƒZ*edKdL„ƒZ+dMS)NÚ AutoFileTestscCs| td¡|_dS©NÚw)ÚFileIOrÚf©Úself©rú,/usr/local/lib/python3.9/test/test_fileio.pyÚsetUpszAutoFileTests.setUpcCs|jr|j ¡t t¡dS©N)rÚcloseÚosÚremoverrrrrÚtearDowns zAutoFileTests.tearDowncCsVt|jƒ}| ttdƒƒ¡| |j ¡| ¡¡|j ¡d|_| t t |d¡dS)Né Útell) rrÚwriteÚbytesÚrangeÚ assertEqualrrÚ assertRaisesÚReferenceErrorÚgetattr)rÚprrrÚ testWeakRefss   zAutoFileTests.testWeakRefscCsÆ|j ttdƒƒ¡| |j ¡d¡|j d¡| |j ¡d¡|j d¡| |j ¡d¡|j dd¡| |j ¡d¡|j dd¡| |j ¡d¡|j dd¡| |j ¡d¡dS) Nérrééééûÿÿÿé)rrr r!r"rÚseekrrrrÚ testSeekTell(s  zAutoFileTests.testSeekTellcCsF|j}| |jd¡| |jd¡dD]}| ttft||d¡q&dS)NÚwbF)ÚmodeÚclosedZoops)rr"r1r2r#ÚAttributeErrorÚ TypeErrorÚsetattr)rrÚattrrrrÚtestAttributes6s ÿzAutoFileTests.testAttributescCs@tj}ttdƒr,t |j ¡¡}t|d|ƒ}| |jj |¡dS)NÚfstatÚ st_blksize) ÚioÚDEFAULT_BUFFER_SIZEÚhasattrrr8rÚfilenor%r"Ú_blksize)rZblksizeZfstrrrÚ testBlksizeBs   zAutoFileTests.testBlksizecCsx|j tgd¢ƒ¡|j ¡tdƒ}| td¡}| |¡}Wdƒn1sR0Y| |d¡| |d¡dS)N©r*r-réÿóabcdefghÚróÿefghé) rrr rÚ bytearrayrrÚreadintor")rZbarÚnrrrÚtestReadintoByteArrayLs ( z#AutoFileTests.testReadintoByteArraycCsè|j tgd¢ƒ¡|j ¡ttdƒƒ}| td¡}| |¡}Wdƒn1sV0Y|  |d¡|  |d¡ttdƒƒj dddgd}| td¡}| |¡}Wdƒn1s¾0Y|  t|ƒd¡|  |d¡dS) Nr@rBrCrDrEÚHr-)Úshape) rrr rÚ memoryviewrFrrrGr"Úcast)rÚmrrHrrrÚ_testReadintoMemoryviewVs  (  (z%AutoFileTests._testReadintoMemoryviewcCsF|j tgd¢ƒ¡|j ¡tddƒ}| td¡}| |¡}Wdƒn1sT0Y| |tdgd¢ƒ¡| |d¡tddƒ}| td¡}| |¡}Wdƒn1s¶0Y| |tdgd¢ƒ¡| |d¡td dƒ}| td¡}| |¡}Wdƒn1s0Y| |td d ƒ¡| |d¡dS) Nr@ÚBrBrC)r*r-rrAéeéfégéhrEÚb)r*r-réÿÿÿÿrQrRrSrTÚIrD) rrr rrrrrGr")rÚarrHrrrÚ_testReadintoArrayfs"  (  (  *z AutoFileTests._testReadintoArraycCsFddg}|j |¡|j ¡| td¡|_|j ¡}| |d¡dS©Ns123s456Úrbs123456)rÚ writelinesrrrÚreadr"©rÚlÚbufrrrÚtestWritelinesList|s    z AutoFileTests.testWritelinesListcCsJtddgƒ}|j |¡|j ¡| td¡|_|j ¡}| |d¡dSrZ)r rr\rrrr]r"r^rrrÚtestWritelinesUserList„s     z$AutoFileTests.testWritelinesUserListcCs>| t|jjgd¢¡| t|jjd¡| t|jjd¡dS)N)r*r-éÚabc)r#r4rr\rrrrÚtestWritelinesErrorŒsz!AutoFileTests.testWritelinesErrorcCst|j d¡|j ¡| td¡|_| |j d¡d¡|j d¡| |j d¡d¡| |j  d¡ddg¡dS)Ns hi bye abcrCrshi sbye óabc) rrrrrr"r]r.ÚreadlineÚ readlinesrrrrÚtest_none_args‘s   zAutoFileTests.test_none_argscCs| t|jjd¡dS)NzHello!)r#r4rrrrrrÚ test_rejectšszAutoFileTests.test_rejectcCs|| t|jƒd|j|jj|jjf¡|j`| t|jƒd|j|j ¡|jjf¡|j ¡| t|jƒd|jf¡dS)Nz(<%s.FileIO name=%r mode=%r closefd=True>z&<%s.FileIO fd=%r mode=%r closefd=True>z<%s.FileIO [closed]>)r"ÚreprrÚ modulenameÚnamer1r=rrrrrÚtestReprs ÿÿ ÿÿ   ÿzAutoFileTests.testReprc Cs~t ttj¡}z^|j|ddd0}| t|ƒd|j|j|j f¡Wdƒn1sV0YWt  |¡n t  |¡0dS)NrCF)Úclosefdz)<%s.FileIO name=%r mode=%r closefd=False>) rÚopenrÚO_RDONLYrr"rkrlrmr1r)rÚfdrrrrÚtestReprNoCloseFD©s ÿÿ$zAutoFileTests.testReprNoCloseFDc Csht|jd|jƒD| t¡t|jƒWdƒn1s<0YWdƒn1sZ0YdS)Nrm)r rr#Ú RuntimeErrorrkrrrrÚtestRecursiveRepr³s zAutoFileTests.testRecursiveReprcCs„|j}| | ¡¡| |j¡| t|jd¡| ¡| |j¡|  t d¡}| t |j d¡| |j¡| ¡| |j¡dS)NrrCÚ) rZ assertFalseÚisattyr2r#Ú ValueErrorr]rÚ assertTruerrr4rG©rrrrrÚ testErrors¹s    zAutoFileTests.testErrorscCsÒgd¢}|j ¡| |jj¡|D]}t|j|ƒ}| t|¡q$| t|jj¡| t|jjt dƒ¡| t|jj ¡| t|jj d¡| t|jj ¡| t|jj d¡| t|jj ¡| t|jj d¡dS)N) r=rwÚseekableÚreadableÚwritabler]ÚreadallrgrhrÚtruncateÚflushr*ró) rrryr2r%r#rxr4rGrFr.rr\)rÚmethodsZ methodnameÚmethodrrrÚ testMethodsÇs  zAutoFileTests.testMethodsc Cs`z| dd¡Wn@tyP}z(| |jd¡| |jd¡WYd}~nd}~00| d¡dS)NÚ.rCrúShould have raised OSError)rÚOSErrorÚassertNotEqualÚerrnor"ÚfilenameÚfail)rÚerrrÚ testOpendirÝs $zAutoFileTests.testOpendirÚntz&test only works on a POSIX-like systemcCsdt dtj¡}| t¡}| |d¡Wdƒn1s:0Yt |¡| |jj t j ¡dS)Nr†rC) rrprqr#rˆrrr"Ú exceptionrŠZEISDIR)rrrÚcmrrrÚ testOpenDirFDés  * zAutoFileTests.testOpenDirFDcstˆƒ‡fdd„ƒ}|S)Ncsn|j}t | ¡¡z0ˆ||ƒWz|j ¡WqjtyBYqj0n$z|j ¡WntyfYn00dSr)rrrr=rˆrz©ÚfuncrrÚwrapperôs  ý z'AutoFileTests.ClosedFD..wrapperr©r”r•rr“rÚClosedFDós zAutoFileTests.ClosedFDcstˆƒ‡fdd„ƒ}|S)Ncs²|j}t | ¡¡ztzˆ||ƒWn4tyX}z| |jtj¡WYd}~nd}~00| d¡Wz|j ¡Wq®ty†Yq®0n$z|j ¡WntyªYn00dS)Nr‡) rrrr=rˆr"rŠÚEBADFrŒ)rrrr“rrr•s&  ý z-AutoFileTests.ClosedFDRaises..wrapperrr–rr“rÚClosedFDRaisesszAutoFileTests.ClosedFDRaisescCs | ¡dSr)rrzrrrÚtestErrnoOnCloseszAutoFileTests.testErrnoOnClosecCs| d¡dS)Nóa)rrzrrrÚtestErrnoOnClosedWritesz$AutoFileTests.testErrnoOnClosedWritecCs| d¡dS©Nr)r.rzrrrÚtestErrnoOnClosedSeeksz#AutoFileTests.testErrnoOnClosedSeekcCs | ¡dSr)rrzrrrÚtestErrnoOnClosedTell!sz#AutoFileTests.testErrnoOnClosedTellcCs| d¡dSr)r€rzrrrÚtestErrnoOnClosedTruncate%sz'AutoFileTests.testErrnoOnClosedTruncatecCs | ¡dSr)r|rzrrrÚtestErrnoOnClosedSeekable)sz'AutoFileTests.testErrnoOnClosedSeekablecCs | ¡dSr)r}rzrrrÚtestErrnoOnClosedReadable-sz'AutoFileTests.testErrnoOnClosedReadablecCs | ¡dSr)r~rzrrrÚtestErrnoOnClosedWritable1sz'AutoFileTests.testErrnoOnClosedWritablecCs | ¡dSr)r=rzrrrÚtestErrnoOnClosedFileno5sz%AutoFileTests.testErrnoOnClosedFilenocCs| | ¡d¡dS)NF)r"rwrzrrrÚtestErrnoOnClosedIsatty9sz%AutoFileTests.testErrnoOnClosedIsattycCsFz|j ¡Wnty Yn0| td¡|_t |j ¡¡|jS)NrC)rrrˆrrrr=rrrrÚ ReopenForRead=s zAutoFileTests.ReopenForReadcCs| ¡}| d¡dS)Nr*)r¦r]rzrrrÚtestErrnoOnClosedReadFsz#AutoFileTests.testErrnoOnClosedReadcCs| ¡}| ¡dSr)r¦rrzrrrÚtestErrnoOnClosedReadallKsz&AutoFileTests.testErrnoOnClosedReadallcCs | ¡}tddƒ}| |¡dS)NrUs xxxxxxxxxx)r¦rrG)rrrXrrrÚtestErrnoOnClosedReadintoPs z'AutoFileTests.testErrnoOnClosedReadintoN),Ú__name__Ú __module__Ú __qualname__rrr'r/r7r?rIrOrYrarbrerirjrnrsrur{r…rŽÚunittestÚskipIfrrmr’r—r™ršrœržrŸr r¡r¢r£r¤r¥r¦r§r¨r©rrrrrsf                      rc@seZdZejZdZdS)ÚCAutoFileTestsÚ_ioN)rªr«r¬r°rrlrrrrr¯Vsr¯c@seZdZejZdZdS)ÚPyAutoFileTestsÚ_pyioN)rªr«r¬r²rrlrrrrr±Zsr±c@s˜eZdZdd„Zdd„Zdd„Zdd„Zd d „Ze  e   ¡d kd ¡d d„ƒZ dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd „Zd!S)"ÚOtherFileTestsc CsžzŠ| td¡}| | ¡d¡| | ¡d¡| | ¡d¡| ¡| td¡}| | ¡d¡| | ¡d¡| | ¡d¡| ¡| td¡}| | ¡d¡| | ¡d¡| | ¡d¡| | ¡d¡| ¡tj dkr€z| dd¡}Wnt yYnp0| | ¡d¡| | ¡d¡tj d krhd tj vrhtj   d ¡sh| | ¡d¡| | ¡d¡| ¡Wt   t¡n t   t¡0dS) NrFTrCza+Úwin32z/dev/ttyrXÚdarwinZbsd)ZsunosZaix)rrr"r}r~r|rrwÚsysÚplatformrˆÚ startswithrÚunlinkrzrrrÚ testAblesasB     ÿ þ zOtherFileTests.testAblesc CsHdD]>}z| t|¡}Wnty*Yq0| ¡| d|¡qdS)N)rvZaUzwU+ÚrwÚrtz%r is an invalid file mode)rrrxrrŒ)rr1rrrrÚtestInvalidModeStrings‹s z%OtherFileTests.testInvalidModeStringsc Cs„zfdD]F}| t|d¡"}| |j|d¡Wdƒq1sB0YqWtj t¡r€t t¡ntj t¡r~t t¡0dS)N) )rr0)r0r0)zwb+úrb+)zw+br¾)rXÚab)r¿r¿)úab+rÀ)za+brÀ)rCr[)r[r[)r¾r¾)zr+br¾rr*)rrr"r1rÚpathÚexistsr¹)rZmodesrrrrÚtestModeStrings–s4  ÿ zOtherFileTests.testModeStringscCs&| ttƒd¡}| ¡t t¡dSr)rÚstrrrrr¹rzrrrÚtestUnicodeOpen¥szOtherFileTests.testUnicodeOpenc Cs¨zt d¡}Wn ty.| dt¡Yn0| |d¡}zZ| d¡| ¡ttdƒ }| |  ¡d¡Wdƒn1s€0YWt   t¡n t   t¡0dS)NÚasciizcould not encode %r to asciirrfr[) rÚencodeÚUnicodeEncodeErrorÚskipTestrrrrpr"r]rr¹©rÚfnrrrrÚ testBytesOpen«s    0zOtherFileTests.testBytesOpenúutf-8z%test only works for utf-8 filesystemsc Cs¨zt d¡}Wn ty.| dt¡Yn0| |d¡}zZ| d¡| ¡ttdƒ }| |  ¡d¡Wdƒn1s€0YWt   t¡n t   t¡0dS)NrÍzcould not encode %r to utf-8rrfr[) rrÇrÈrÉrrrrpr"r]rr¹rÊrrrÚtestUtf8BytesOpenºs    0z OtherFileTests.testUtf8BytesOpencCs2d}| t|j|d¡| t|jt|dƒd¡dS)NzfoobarrrÆ)r#rxrr )rZ fn_with_NULrrrÚtestConstructorHandlesNULCharsËsz-OtherFileTests.testConstructorHandlesNULCharscCsJ| t|jd¡| t|jtƒ¡tjdkrFddl}| t|jtƒ¡dS)Niöÿÿÿr´r) r#rxrrˆr r¶r·ÚmsvcrtZ get_osfhandle)rrÐrrrÚ testInvalidFdÐs  zOtherFileTests.testInvalidFdc Csˆd}z| t|¡}WnXtyl}z@|jddkrXt|ƒ}t|vsJ||vrX| d|¡WYd}~n d}~00| ¡| d|¡dS)NZqwertyrz&bad error message for invalid mode: %szno error for invalid mode: %s)rrrxÚargsrÄrŒr)rZbad_moderÚmsgÚsrrrÚtestBadModeArgument×s$z"OtherFileTests.testBadModeArgumentcCsž| td¡}| tttdƒƒƒ¡| | ¡d¡| d¡| | ¡d¡| |  dt j ¡d¡| d¡| | ¡d¡| |  dt j ¡d¡|  ¡dS)Nrrr)rr+) rrrr rFr!r"rr€r.r:ÚSEEK_ENDrrzrrrÚ testTruncateçs   zOtherFileTests.testTruncatec s2‡fdd„}z|ƒWt t¡n t t¡0dS)Ncs̈ td¡}| ttdƒƒ¡| ¡ˆ td¡}| d¡}|ttdƒƒkrZˆ d|¡| ¡dkrxˆ d| ¡¡|  ¡| ¡dkržˆ d| ¡¡| ¡t j   t¡}|dkrȈ d|¡dS) Nré zr+r)z(Read on file opened for update failed %rzFile pos after read wrong %dz!File pos after ftruncate wrong %dz"File size after ftruncate wrong %d) rrrr r!rr]rŒrr€rrÁÚgetsize)rÚdataÚsizerrrÚ bug801631ôs       z7OtherFileTests.testTruncateOnWindows..bug801631)rr¹r)rrÜrrrÚtestTruncateOnWindowsós z$OtherFileTests.testTruncateOnWindowsc Cs¢z~ttdƒ}| d¡| ¡ttdƒ}| d¡| ¡ttdƒ}| ¡}| ¡| |d¡Wzt t¡WqžYqž0nzt t¡Wn Yn00dS)Nr0sspamr¿seggsr[sspameggs)rprrrr]r"rr¹)rrÚdrrrÚ testAppends&     ýzOtherFileTests.testAppendcCs| t|jddd¡dS)NÚ1r)r#r4rrrrrÚtestInvalidInit"szOtherFileTests.testInvalidInitcCsztdd\}| |jg¡| t|jg¡| |jg¡| t|jdd¡| |jg¡Wdƒn1sl0YdS)NT©Úquietz/some/invalid/namer¼)rr"Úwarningsr#r4rrx)rrrrrÚ testWarnings%s  zOtherFileTests.testWarningscsRGdd„dtƒ‰G‡‡fdd„d|jƒ‰t ttj¡}| ˆˆ|¡t |¡dS)Nc@s eZdZdS)z=OtherFileTests.testUnclosedFDOnException..MyExceptionN)rªr«r¬rrrrÚ MyException.r‚ræcs eZdZ‡‡‡fdd„Z‡ZS)z:OtherFileTests.testUnclosedFDOnException..MyFileIOcs"|dkrˆdƒ‚tˆ|ƒ ||¡S)Nrmzblocked setting name)ÚsuperÚ __setattr__)rrmÚvalue)ræÚMyFileIOÚ __class__rrrè0szFOtherFileTests.testUnclosedFDOnException..MyFileIO.__setattr__)rªr«r¬rèÚ __classcell__r©rærê)rërrê/srê)Ú ExceptionrrrpÚ__file__rqr#r)rrrrrírÚtestUnclosedFDOnException-s z(OtherFileTests.testUnclosedFDOnExceptionN)rªr«r¬rºr½rÃrÅrÌr­r®r¶ÚgetfilesystemencodingrÎrÏrÑrÕr×rÝrßrárårðrrrrr³_s$* ÿ  r³c@s*eZdZejZdZedd„ƒZdd„ZdS)ÚCOtherFileTestsr°cCs8ddl}| t|j|jd¡| t|j|jd¡dS)Nrr*)Ú _testcapir#r4rZINT_MAXZINT_MIN)rrórrrÚtestInvalidFd_overflow=sz&COtherFileTests.testInvalidFd_overflowcCsv| td¡}| ¡}Wdƒn1s*0Yt t¡}| ¡}Wdƒn1s\0Y| ||¡dS)Nr[)rrïr]r°Ú open_coder")rrÚexpectedÚactualrrrÚtest_open_codeDs & &zCOtherFileTests.test_open_codeN) rªr«r¬r°rrlr rôrørrrrrò9s  ròc@seZdZejZdZdd„ZdS)ÚPyOtherFileTestsr²c Cs®| td¡}| ¡}Wdƒn1s*0Ytdd\}t t¡}| ¡}Wdƒn1sh0Y| ||¡| |jg¡Wdƒn1s 0YdS)Nr[Trâ) rrïr]rr²Z_open_code_with_warningr"r‰rä)rrrörr÷rrrrøRs&  & zPyOtherFileTests.test_open_codeN)rªr«r¬r²rrlrørrrrrùNsrùc CsFz(tttttƒWtj t¡rBt  t¡ntj t¡r@t  t¡0dSr) r r¯r±ròrùrrÁrÂrr¹rrrrÚ test_main_sÿ  ÿ rúÚ__main__)r¶rr:rŠr­rÚweakrefrÚ functoolsrZ test.supportrrrr r r r Ú collectionsr r°r²rZTestCaser¯r±r³ròrùrúrªrrrrÚs.   $ D[