asda?‰PNG  IHDR ? f ??C1 sRGB ??é gAMA ±? üa pHYs ? ??o¨d GIDATx^íüL”÷e÷Y?a?("Bh?_ò???¢§?q5k?*:t0A-o??¥]VkJ¢M??f?±8\k2íll£1]q?ù???T a bYhb#@sddlZddlmZddlZddlZddlZddlZddlZdZdZ Gdddej Z ddd Z Gd d d ej ZGd d d ej ZGdddej ZedkredS)N)supports7The symbols on top of your keyboard are !@#$%^&*()_+|~ sOM5&AE('-Y;6)O;',@;VX@=&]P(&]F('EO=7(@:V5Y8F]At|}| || ddS)N)encodingerrorsnewliner) superr__init__ioBytesIO _encoding_errors isinstancestrwriteseek)selfZ initial_valuerr r  __class__(/usr/local/lib/python3.9/test/test_uu.pyr s  zFakeIO.__init__cCs||j|j|jSN)flushbuffergetvaluedecoderrrrrrr,szFakeIO.getvalue)rrrr)__name__ __module__ __qualname__r r __classcell__rrrrrsrFcCsF|r(td||fdtddd}ntd||fdtd}|S)Nzbegin %03o %s ascii `s ` end s end )bytes encodedtextreplace)modefilenamebacktickresrrrencodedtextwrapped1s r.c@sDeZdZddZddZddZddZd d Zd d Zd dZ dS)UUTestcCstt}t}t||d||tddtt}t}t||dd||tddtt}t}tj||ddd||tddd|t "t||dddWdn1s0YdS)Nt1Tr,) r r plaintextuuencode assertEqualrr. assertRaises TypeError)rinpoutrrr test_encode<s    zUUTest.test_encodec CsdD]x}ttdd|d}t}t||||ttdtdd|d}t}t||||tqdS)N)TFr1r0r3sMUUencoded files may contain many lines, even some that have 'begin' in them. )r rr.r5rr7rr4)rr,r:r;rrr test_decodeLs   zUUTest.test_decodec Csltdt}t}zt|||dWn6tjyf}z|t|dWYd}~n d}~00dS)Ns begin 644 t1 No exception raisedzTruncated input file) r rr(r5rfailErrorr7rrr:r;errrtest_truncatedinput[s zUUTest.test_truncatedinputc Cshtd}t}zt|||dWn6tjyb}z|t|dWYd}~n d}~00dS)Nr>z'No valid begin line found in input file)r rr5rr?r@r7rrArrrtest_missingbeginds  zUUTest.test_missingbeginc Csd}d}d}||fD]}|dBt|}t}tj||dd|||Wdn1sj0Y|d0ddl}||d}|||Wdq1s0YqdS) Nsbegin 644 file !,___ end sbegin 644 file !,___ ` end 3z uu.decode()T)quietuu_codecr)ZsubTestr rr5rr7rcodecs) rZ encodedtext1Z encodedtext2r4r(r:r;rIZdecodedrrrtest_garbage_paddingms   .  zUUTest.test_garbage_paddingcCs<tt}t}d}d}t||||||dS)Nztest.txt overflow.txtstest.txt\n\roverflow.txt)r rr4r5r6ZassertInr)rr:r;r+Z safefilenamerrrtest_newlines_escapeds  zUUTest.test_newlines_escapedcCs,d}|tjd tt|Wdn1s80Ytjr|dd}|tjd tt|Wdn1s0Yd}|tjd tt|Wdn1s0Ytjr(|dd}|tjd tt|Wdn1s0YdS)Ns<begin 644 ../../../../../../../../tmp/test1 $86)C"@`` ` end Z directory/\s%begin 644 /tmp/test2 $86)C"@`` ` end ) ZassertRaisesRegexr5r@rr rosaltsepr))rZ relative_badZrelative_bad_bsZ absolute_badZabsolute_bad_bsrrrtest_no_directory_traversals. .. z"UUTest.test_no_directory_traversalN) r r!r"r<r=rCrErJrKrPrrrrr/:s   r/c@s,eZdZddZddZddZddZd S) UUStdIOTestcCstj|_tj|_dSr)sysstdinstdoutrrrrsetUpszUUStdIOTest.setUpcCs|jt_|jt_dSr)rSrRrTrrrrtearDownszUUStdIOTest.tearDowncCsJttdt_tt_tdddd|tj t ddddS)Nr$-r0r1) rr4rrRrSrTr5r6r7rr.rrrrr<s  zUUStdIOTest.test_encodecCsZttdddt_tt_tddtj}|jt_|jt_||t ddS)Nr1r0r$rW) rr.rrRrSrTr5r7rr4)rrTrrrr=s zUUStdIOTest.test_decodeN)r r!r"rUrVr<r=rrrrrQsrQc@s<eZdZddZddZddZddZd d Zd d Zd S) UUFileTestcCs<tjd|_tjd|_|tj|j|tj|jdS)Nio)rZ TESTFN_ASCIItmpintmpout addCleanupunlinkrrrrrUs  zUUFileTest.setUpc CsPt|jd}|tWdn1s,0Yt|jdP}t|jd$}tj|||jddWdn1sz0YWdn1s0Yt|jd}|}Wdn1s0Y||t d|jtj|j|j|jddt|jd}|}Wdn1s.0Y||t d|jdS)Nwbrbr2)r*) openr[rr4r\r5r6readr7r.)rZfinZfoutsrrrr<s(P&(zUUFileTest.test_encodecCst|jd"}|td|jWdn1s40Yt|jd}t|Wdn1sj0Yt|jd}|}Wdn1s0Y||t dSNr_r2r` rar[rr.r\r5rrbr7r4rfrcrrrr=s0(&zUUFileTest.test_decodecCst|jd"}|td|jWdn1s40Yt|jt|jd}|}Wdn1st0Y||t dSrdrerfrrrtest_decode_filenames 0 &zUUFileTest.test_decode_filenamecCst|jd"}|td|jWdn1s40Yt|jd}t|Wdn1sj0Yt|jd"}|tjtj|Wdn1s0YdSrd) rar[rr.r\r5rr8r@)rrgrrrtest_decodetwices 0(zUUFileTest.test_decodetwicecCsd}t|jd"}|t||jWdn1s80Y|tj|j|tj Bt|jd}t |Wdn1s0Y| t t|jj|dS)Ni$r_r`)rar[rr.r\r]rNchmodstatS_IWRITEr5rr7S_IMODEst_mode)rZ expected_modergrrrtest_decode_modes0(zUUFileTest.test_decode_modeN) r r!r"rUr<r=rhrirorrrrrXs    rX__main__)F)ZunittesttestrrNrkrRr5r r4r( TextIOWrapperrr.ZTestCaser/rQrXr mainrrrrs  vL