a 5êdgðã@s¬ddlZddlZddlZddlZddlZddlZddlZddlmZm Z m Z m Z z ej Wne yve d¡‚Yn0dd„ZGdd„dejƒZdd „Zed kr¨eƒdS) éN)ÚTESTFNÚ run_unittestÚ reap_threadsÚ cpython_onlyzselect.poll not definedcCs(g}|D]\}}||@r| |¡q|S©N)Úappend)ÚreadyÚflagÚmatchÚfdÚmode©r ú*/usr/local/lib/python3.9/test/test_poll.pyÚfind_ready_matchings   rc@s\eZdZdd„Zdd„Zdd„Zdd„Zed d „ƒZe d d „ƒZ e   e d ¡e dd„ƒƒZdS)Ú PollTestscCsrt ¡}d}d}t|ƒ}g}g}i}i}t|ƒD]Z} t ¡\} } | | ¡| | tj¡| | tj ¡|  | ¡|  | ¡| || <| || <q0g} |r\| ¡} t | tj ƒ}|s¶t dƒ‚t  |¡} t | |¡| ¡} t | tjƒ}|sìt dƒ‚t  |¡} t | |¡}| t|ƒ|¡|   |¡t || ¡t | ¡| || ¡| | ¡| || ¡q| | |g|¡dS)Né s This is a test.zno pipes ready for writingzno pipes ready for reading)ÚselectÚpollÚlenÚrangeÚosÚpipeÚregisterÚmodifyÚPOLLINÚPOLLOUTrrÚ RuntimeErrorÚrandomÚchoiceÚwriteÚreadÚ assertEqualÚcloseÚ unregisterÚremove)ÚselfÚpZ NUM_PIPESZMSGZMSG_LENÚreadersZwritersZr2wZw2rÚiZrdÚwrZbufsrZ ready_writersZ ready_readersÚbufr r rÚ test_poll1sL              zPollTests.test_poll1c Csht ¡\}}t |¡t |¡t ¡}| |¡| ¡}| |d|tjf¡tt dƒF}|  ¡}t ¡}| |¡| ¡}| |dd|¡Wdƒn1s¦0Y| ¡}| |d|tjf¡t  t ¡t ¡}|  t |j|¡|  t |j|¡t ¡}|  t|jd¡t ¡}Gdd„dƒ}Gdd„dƒ} |  t |j|ƒd¡|  t |j| ƒd¡dS)NrÚwéc@s eZdZdS)z,PollTests.test_poll_unit_tests..NopeN)Ú__name__Ú __module__Ú __qualname__r r r rÚNopeksr1c@seZdZdd„ZdS)z.PollTests.test_poll_unit_tests..AlmostcSsdS)NÚfilenor )r%r r rr2osz5PollTests.test_poll_unit_tests..Almost.filenoN)r.r/r0r2r r r rÚAlmostnsr3)rrr"rrrr!ÚPOLLNVALÚopenrr2ÚunlinkÚ assertRaisesÚ TypeErrorr#ÚKeyError) r%ZFDr,r&ÚrÚfr Úpollsterr1r3r r rÚtest_poll_unit_testsLs4      2 zPollTests.test_poll_unit_testsc CsÜd}tj|dtjdd}| ¡| |jddd¡|j}t ¡}|  |tj ¡dD]„}| |¡}|gkrjqR|d\}}|tj @rž|  ¡} | dkrR|  d¡qRqR|tj @rÈ|  ¡} | s¸qØ| | d¡qRqR|  d |¡qRdS) Nz?for i in 0 1 2 3 4 5 6 7 8 9; do echo testing...; sleep 1; doneTr)ÚshellÚstdoutÚbufsize)rièiÐi i@i€>éÿÿÿÿrArArArArArArArArAóz6error: pipe seems to be closed, but still returns datas testing... z,Unexpected return value from select.poll: %s)Ú subprocessÚPopenÚPIPEÚ __enter__Ú addCleanupÚ__exit__r?rrrrÚPOLLHUPÚreadlineÚfailr!) r%ÚcmdÚprocr&r<ZtoutZfdlistr ÚflagsÚliner r rÚ test_poll2xs4 ÿ      zPollTests.test_poll2cCs„t ¡}| d¡| t|jd¡d}|dkr8| d¡| t|jdd¡| t|jdd¡| t|jdd¡| t|jdd¡dS)NélézOverflow must have occurredrrA)rrrr7Ú OverflowErrorrKÚ ValueErrorr)r%r<Úxr r rÚ test_poll3•s  zPollTests.test_poll3cCs~ddlm}m}m}t ¡}| d¡| t|jd|d¡| t|j d|d¡| t|j|d¡| t|j|d¡dS)Nr)Ú USHRT_MAXÚINT_MAXÚUINT_MAXrQ) Z _testcapirWrXrYrrrr7rSr)r%rWrXrYr<r r rÚtest_poll_c_limits¦s zPollTests.test_poll_c_limitsc Cst ¡\}}| tj|¡| tj|¡g}tdƒD]&}t |¡}| tj|¡| |¡q4t ¡}|D]}|  |tj ¡qht j |jd}|  ¡zRt d¡|D]}| |¡q¢|  |tj¡| t|j¡Wt |d¡| ¡nt |d¡| ¡0dS)Né )Útargetgà?óspam)rrrGr"rÚduprrrrrÚ threadingÚThreadÚstartÚtimeÚsleepr#rr7rrÚjoin)r%r:r,Zrfdsr(r r<Útr r rÚtest_threaded_poll²s.        ÿ zPollTests.test_threaded_pollz!Threading required for this test.cCsšdD]}t ¡\}}t ¡}| |tj¡tj|j|fd}| ¡|j dd|  |  ¡¡t  |d¡|  ¡|  |  ¡¡t |¡t |¡qdS)N)NiüÿÿrAgð¿gš™™™™™¹¿g0Žä.ÿ+«)r\Úargsgš™™™™™¹?)Útimeoutr])rrrrrrr_r`rardZ assertTrueÚis_aliverZ assertFalser")r%Z timeout_msr:r,r<Z poll_threadr r rÚ!test_poll_blocks_with_negative_msÎs    z+PollTests.test_poll_blocks_with_negative_msN)r.r/r0r+r=rPrVrrZrrfÚunittestZ skipUnlessr_rjr r r rrs1,   rcCs ttƒdSr)rrr r r rÚ test_mainåsrlÚ__main__)rrCrrr_rbrkZ test.supportrrrrrÚAttributeErrorZSkipTestrZTestCaserrlr.r r r rÚs"  M