a ze'@s4ddlZddlZddlZddlZddlZddlZddlZddlmZm Z m Z m Z ddlm Z ddlm Z ddlZddlZdZedZGdddZGd d d eZd d ZGd ddeejZeeed dGdddeejZddZGdddeejZGdddeejZddZedkr0e dS)N)TESTFNrequiresunlink bigmemtest) SHORT_TIMEOUT) socket_helperly*2c@s eZdZddZeddZdS) LargeFileTestcCstjtrd}nd}|t|}t|tj}|t dkrTWddS|dkrf| d| d| t | d| | t|tjt dWdn1s0YdS)Nr+bzw+brza)ospathexistsropenfstatfilenostatST_SIZEsizewriteseekflush assertEqual)selfmodefZ current_sizerG/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_largefile.pysetUps      zLargeFileTest.setUpcCsV|tdWdn1s"0YtttjdksJ|dttdS)Nwbrz0File was not truncated by opening with mode "wb")rrrrrZfailureExceptionrTESTFN2)clsrrr tearDownClass,s  zLargeFileTest.tearDownClassN)__name__ __module__ __qualname__r classmethodr$rrrrr sr c@sJeZdZeedddddZddZdd Zd d Zd d Z ddZ dS)TestFileMethodsF)rZmemusedry_runcCs\|td<}|t|td||tdWdn1sN0YdS)Nrbr )rrrlenreadrtell)r_sizerrrrtest_large_read=szTestFileMethods.test_large_readcCs |tttjtddS)Nr )rrrrrrrrrr test_osstatDszTestFileMethods.test_osstatcCs|td}||d||dd||d|d||d|dd||d|d||d|dd||d|dd||d|dd||d|dd||tdd|dd||tdd |t dd||d|t||t||dd |t dd||dd||dWdn1s0YdS) Nr,rr r *Tr* r )rrrr/r.rrrrrrrtest_seek_readGs8         zTestFileMethods.test_seek_readcCs,|td}|t|ddd|t|ddd|t|ddd|t|ddd|t|ddtdd|t|ddtdd|t|t ddd|t|tdt||dd Wdn1s0YdS) Nr,rr4r r5r*r6r7r )rrrrlseekrrr.r8rrr test_lseekfs"" zTestFileMethods.test_lseekcCs8|td}t|ds$td|dd||tdtd}||| ||||dd||||d8}|d| |||d|dd||||d| d||d|d|t | dWdn1s*0YdS) Nr truncatez.open().truncate() not available on this systemrr*r r7r4) rrhasattrunittestSkipTestrrr/rr<r-r.)rrZnewsizerrr test_truncatess,           zTestFileMethods.test_truncatec CsRdD]H}|td(}||||Wdq1sB0YqdS)N)ilr,)rrrZ assertTrueseekable)rposrrrr test_seekables zTestFileMethods.test_seekableN) r%r&r'rrr1r3r9r;r@rDrrrrr)6s   r)csfdd}|S)Ncsfdd}|S)NcsHttjjkr:tdd}td|d|i|S)Niz required z MiB of free disk space) shutil disk_usagerrrealpathfreeintr>r?)argskwargsZhsize)funrrequiredrrwrappers  z6skip_no_disk_space..decorator..wrapperr)rLrNrrM)rLr decoratorsz%skip_no_disk_space..decoratorr)rrMrPrrOrskip_no_disk_spacesrQc@s,eZdZeejZeeedddZ dS) TestCopyfile@cCstjt}ttt|tjt|ttd@}|| dd| |d|| dWdn1s|0YdS)Nr,za) rrgetsizerrEcopyfiler"rrr.r)rrrrrrtest_its   zTestCopyfile.test_itN) r%r&r' staticmethodiorrQrrrYrrrrrRs  rRsendfilezsendfile not supportedcsTeZdZeejZeZfddZfddZ ddZ e e e ddd ZZS) TestSocketSendfilecstd|_dSN)superr threadr2 __class__rrr s zTestSocketSendfile.setUpcs,t|jdur(|j|jd|_dSr^)r_tearDownr`jointimeoutr2rarrrcs  zTestSocketSendfile.tearDowncsJfdd}t|jtj||fd_jdS)Nc s||\}}|j|ttd^}j|d}|srWdWdWddS||q.run)targetrJ) threadingEventrgreThreadr`startset)rrjrprrnr tcp_servers    zTestSocketSendfile.tcp_serverrSc Cs*t}td|f|}||td|fD}ttd}||Wdn1s\0YWdn1sz0YWdn1s0Y| t j t}| t j t|ttd@}| |dd||d| |dWdn1s0YdS)Nz 127.0.0.1r,rTrUrV)rZfind_unused_portsocket create_serverrwcreate_connectionrrr\rcrrrWrr"r.r)rportrjclientrrrrrrYs  d  zTestSocketSendfile.test_it)r%r&r'rZr[rrrer rcrwrQrrrY __classcell__rrrarr]s    r]c Cszddl}||j|jWnttfy2Yn0tjdddksPtjdkrdtddtt nxt t ddd}zVz | d | d |Wn ttfytd Yn0W|tt n|tt 0dS) NrwindarwinZ largefilez-test requires %s bytes and a long time to runr!) bufferingrAxz*filesystem does not have largefile support)signalSIGXFSZSIG_IGN ImportErrorAttributeErrorsysplatformrstrrrrrrrOSError OverflowErrorr>r?closer)rrrrr setUpModules(     rc@seZdZeejZdS)CLargeFileTestN)r%r&r'rZr[rrrrrrsrc@seZdZeejZdS)PyLargeFileTestN)r%r&r'rZpyiorrrrrrsrcCsttttdSr^)rrr"rrrrtearDownModulesr__main__)!rrrr>ryrErrZ test.supportrrrrrrr[Z_pyiorrr"r r)rQZTestCaserRZskipIfr=r]rrrrr%mainrrrrs2   e 5$