a 5źdg,ć@säddlZddlZddlZddlmZddlmZddlZddlZddl m Z ddl m Z ddl mZGdd„dƒZGd d „d eejƒZGd d „d eejƒZGd d„dƒZGdd„deejƒZGdd„deejƒZedkrąe ”dS)éN)Śarray)Śproxy)ŚTESTFN)Śsupport)ŚUserListc@steZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„ZdS)Ś AutoFileTestscCs| td”|_dS)NŚwb)ŚopenrŚf©Śself©r ś*/usr/local/lib/python3.9/test/test_file.pyŚsetUpszAutoFileTests.setUpcCs|jr|j ”t t”dS©N)r ŚcloserŚunlinkrr r r rŚtearDowns zAutoFileTests.tearDowncCsNt|jƒ}| d”| |j ”| ””|j ”d|_| tt|d”dS)Ns teststringŚtell) rr ŚwriteŚ assertEqualrrŚ assertRaisesŚReferenceErrorŚgetattr)r Śpr r rŚ testWeakRefss    zAutoFileTests.testWeakRefscCs|j}|j|j|jdSr)r ŚnameŚmodeŚclosed©r r r r rŚtestAttributes"szAutoFileTests.testAttributescCsV|j d”|j ”tddƒ}| td”|_|j |”}| d| ”d|…”dS)Nó12Śbó xxxxxxxxxxŚrb) r rrrr rŚreadintorŚtobytes)r ŚaŚnr r rŚ testReadinto)s     zAutoFileTests.testReadintocCsDtddƒ}|j ”| td”|_t|jdƒr@| t|jj|”dS)Nr"r#Śrr%) rr rr rŚhasattrrŚ TypeErrorr%)r r'r r rŚtestReadinto_text2s    zAutoFileTests.testReadinto_textcCsJtddgƒ}|j |”|j ”| td”|_|j ”}| |d”dS)Nó1ó2r$r!)rr Ś writelinesrr rŚreadr)r ŚlŚbufr r rŚtestWritelinesUserList:s     z$AutoFileTests.testWritelinesUserListcCs| t|jjgd¢”dS©N)ééé©rr,r r0r r r rŚtestWritelinesIntegersCsz$AutoFileTests.testWritelinesIntegerscCs"tgd¢ƒ}| t|jj|”dSr5)rrr,r r0)r r2r r rŚtestWritelinesIntegersUserListGs z,AutoFileTests.testWritelinesIntegersUserListcCs,Gdd„dƒ}| t|jj|ƒ|ƒg”dS)Nc@s eZdZdS)z8AutoFileTests.testWritelinesNonString..NonStringN)Ś__name__Ś __module__Ś __qualname__r r r rŚ NonStringNsr?r9)r r?r r rŚtestWritelinesNonStringLs  ’z%AutoFileTests.testWritelinesNonStringcCsd|j}| |jt”| | ””| |j”t|dƒrL| t t f|j d”|  ”|  |j”dS)Nr%Ś)r rrrZ assertFalseŚisattyrr+rŚOSErrorr,r%rŚ assertTruerr r rŚ testErrorsTs  zAutoFileTests.testErrorsc CsČddddddddd d dd gffd g }| d ”|j ddd”| |jj”|D](\}}t|j|ƒ}|jt|g|¢RŽqP| |j ddd”d”z ddWn$| |jjt   ”Žd”Yn0dS)N)Śfilenor )Śflushr )rBr )Ś__next__r ©r1r )r)ó©Śreadliner ©Ś readlinesr )Śseek)r)rr r0)Ś__iter__r )Śtruncater r6r) Śappendr Ś__exit__rDrrrŚ ValueErrorrŚsysŚexc_info)r ŚmethodsŚ methodnameŚargsŚmethodr r rŚ testMethods_s2ō    zAutoFileTests.testMethodscCs| t|jj”dSr)rrCr r1r r r rŚtestReadWhenWritingsz!AutoFileTests.testReadWhenWritingN)r<r=r>rrrr r)r-r4r:r;r@rEr[r\r r r rrs    "rc@seZdZejZdS)ŚCAutoFileTestsN©r<r=r>Śior r r r rr]„sr]c@seZdZeejƒZdS)ŚPyAutoFileTestsN©r<r=r>Ś staticmethodŚpyior r r r rr`‡sr`c@sDeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dS)ŚOtherFileTestscCst t”dSr)rrrr r r rrszOtherFileTests.tearDownc CsX| td” ”dD]>}z| t|”}Wnty:Yq0| ”| d|”qdS)Nr)rAZaUzwU+zU+z+UzrU+z%r is an invalid file mode)r rrrTŚfail)r rr r r rŚtestModeStringss zOtherFileTests.testModeStringsc 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)r rrTrYŚstrrer)r Zbad_moder ŚmsgŚsr r rŚtestBadModeArgumentœs$z"OtherFileTests.testBadModeArgumentc Cs²zf| td|”}| t|ƒ d””| ”| ”| td|”}t| ” d”ƒ}| ”| ”Wn:t y }z"|  d|t|ƒf”WYd}~n d}~00|  ||”dS)NrŚasciir$z error setting buffer size %d: %s) r rrrgŚencoderŚintr1ŚdecoderCrer)r rir Śdrhr r rŚ_checkBufferSize¬s ,zOtherFileTests._checkBufferSizec Cs~dD]>}tj|dtd| |”Wdƒq1s80Yq| td”| d”Wdƒn1sp0YdS)N)é’’’’rizline buffering)ŚmessageŚcategoryr6)rZcheck_no_warningsŚRuntimeWarningrpZassertWarnsRegex)r rir r rŚtestSetBufferSizeŗsž*z OtherFileTests.testSetBufferSizecCsŌ| td”}zø| d”| ”| td”}| d”}|dkrL| d|”| ”dkrj| d| ””| ”| ”dkr| d| ””| ”tj   t”}|dkrŗ| d |”W| ”n | ”0dS) Nrs 12345678901zrb+és12345z(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) r rrrr1rerrQŚosŚpathŚgetsize)r r ŚdataŚsizer r rŚtestTruncateOnWindowsČs$       z$OtherFileTests.testTruncateOnWindowscCs¼d}d}|t|ƒrJdƒ‚|t|ƒ}gd¢}ddddtd d ƒffg}| td ”}| ||”| |”| ”|D]>\}}| td ”} | t| ƒ|”t | |ƒ} | |Ž|  ”qx| td ”} t |ƒD] } t| ƒqĢ|  d ”} z |   ”} Wnt y| d”Yn0| | kr,| d| | f”|  d ”} td dt| ƒƒ}z|  |”Wnt yt| d”Yn0| ”} | | krš| d| | f”|  d ”} z|  t| ƒ”} Wnt yŌ| d”Yn0| | krņ| d| | f”z |  ”}Wnt y| d”Yn0||kr:| d| | f”|  ”| td ”} z^| D]} qTz&|   ”|  |”|  ”|  ”Wnt y | d”Yn0W|  ”n |  ”0dS)Ni@sham z*dataoffset must be multiple of len(filler))sspam, spam and eggs seggs, spam, ham and spam ssaussages, spam, spam and eggs sspam, ham, spam and eggs s(spam, spam, spam, spam, spam, ham, spam swonderful spaaaaaam. rKrIrMr%r"sd rr$rzLreadline() after next() with supposedly empty iteration-buffer failed anywayzEreadline() after next() with empty buffer failed. Got %r, expected %rózLreadinto() after next() with supposedly empty iteration-buffer failed anywayzEreadinto() after next() with empty buffer failed. Got %r, expected %rzHread() after next() with supposedly empty iteration-buffer failed anywayzAread() after next() with empty buffer failed. Got %r, expected %rzMreadlines() after next() with supposedly empty iteration-buffer failed anywayzFreadlines() after next() with empty buffer failed. Got %r, expected %rz'read* failed after next() consumed file)Ślenrr rrr0rrŚnextrŚrangeŚpoprLrTrer%r&r1rN)r Z dataoffsetZfillerZnchunksZ testlinesrWZbagrXrYr ŚmethŚiZtestlineŚliner3Ślinesr r rŚ testIterationäs’’ ’           ’  ’  ’  ’   zOtherFileTests.testIterationN) r<r=r>rrfrjrprur|r†r r r rrd‹s rdc@seZdZejZdS)ŚCOtherFileTestsNr^r r r rr‡Esr‡c@seZdZeejƒZdS)ŚPyOtherFileTestsNrar r r rrˆHsrˆŚ__main__)rUrwZunittestrŚweakrefrr_Z_pyiorcZ test.supportrŚtestrŚ collectionsrrZTestCaser]r`rdr‡rˆr<Śmainr r r rŚs$     v;