a ze%@s.ddlZddlZddlZddlZddlZddlmZejZ e dZ dZ dZ ej eZdZej e ZdZdZd ZGd d d ZGd d d eZGdddeZGdddeejZGdddeejZGdddeejZGdddeejZGdddejZGdddejZe dkr*e!dS)N)supportz.missingz !@$)(!@#_1z linecache abcz3 " Docstring " def function(): return result z% def f(): return 1 + 1 a = f() z def f(): return 3cseZdZfddZZS)TempFilecs^ttjdd$}|j|_||jWdn1s@0Y|t j |jdS)NF)delete) supersetUptempfileNamedTemporaryFilename file_namewritefile_byte_string addCleanuprunlink)selffp __class__G/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_linecache.pyr*s  *zTempFile.setUp)__name__ __module__ __qualname__r __classcell__rrrrr(srcs,eZdZfddZddZddZZS)GetLineTestsGoodDatacs"d|jd|_tdS)Nrutf-8)join file_listencoder rrrrrrr5szGetLineTestsGoodData.setUpcCsrt|jR}t|D]8\}}|ds0|d7}t|j|d}|||qWdn1sd0YdS)N )tokenizeopenr enumerateendswith linecachegetline assertEqual)rrindexlineZ cached_linerrr test_getline9s  z!GetLineTestsGoodData.test_getlinecCst|j}|||jdSN)r&getlinesr r(rrlinesrrr test_getlinesBs z"GetLineTestsGoodData.test_getlines)rrrrr+r0rrrrrr2s  rc@seZdZddZddZdS)GetLineTestsBadDatacCs|ttftj|jddS)Nr!) assertRaises SyntaxErrorUnicodeDecodeErrorr&r'r rrrrr+Js  z GetLineTestsBadData.test_getlinecCs|ttftj|jdSr,)r2r3r4r&r-r rrrrr0Ns z!GetLineTestsBadData.test_getlinesN)rrrr+r0rrrrr1Gsr1c@seZdZgZdS) EmptyFileNrrrrrrrrr5Ssr5c@seZdZdgZdS)SingleEmptyLiner Nr6rrrrr7Wsr7c@seZdZgdZdS) GoodUnicode)uá zb zabcdef u ááááá Nr6rrrrr8[sr8c@seZdZdZdS) BadUnicodesabcN)rrrr rrrrr9_sr9c@sdeZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ dS)LineCacheTestsc Cstj}||tdt||tdt|t|td||tdt||tdttD]f}t j t |d}t |8}t|D]\}}|||||dqWdqb1s0Yqbtd}||gdS)Nig?r!.pyza/b/c/__init__.py)r&r'r(FILENAMEEMPTYr2 TypeError INVALID_NAMEMODULESospathr MODULE_PATHr#r$r-)rr'entryfilenamefiler)r*emptyrrrr+es 8 zLineCacheTests.test_getlinecCsf|tjtjttjd}|tWdn1s<0Yttj}| |gddS)Nw)r z def f(): z return 3 ) rrrTESTFNr#r SOURCE_3r&r-r()rrr/rrrtest_no_ending_newline~s ( z%LineCacheTests.test_no_ending_newlinecCsg}tD],}tjt|d}||t|dq||gdd|D}| |gt dd|D}| |gdS)Nr<r!cSsg|]}|tjvr|qSrr&cache.0fnrrr z2LineCacheTests.test_clearcache..cSsg|]}|tjvr|qSrrMrOrrrrRrS) rArBrCrrDappendr&r'ZassertNotEqualr( clearcache)rcachedrErFZ cached_emptyrrrtest_clearcaches   zLineCacheTests.test_clearcachec Cstj}tjd}|tj|t|d}|tWdn1sH0Y||dg}t|B}t |D](\}}| ||||d| |qrWdn1s0Yt|d}|t Wdn1s0Yt dt |D] \}}| ||||dqt |t|D}t |D]*\}}| ||||d| |q>Wdn1s0YdS)Nr<rIr!dummy)r&r'rrJrrr#r SOURCE_1r$r(rTSOURCE_2 checkcache)rr'Z source_namesourceZ source_listr)r*rrrtest_checkcaches*  (  * (   zLineCacheTests.test_checkcachecCs<tt}t|dttd||ttdS)NF)r&r-r=rUr( lazycacher.rrrtest_lazycache_no_globalss z(LineCacheTests.test_lazycache_no_globalscCsXttt}t|dttt|dttjt||ttdS)NTr!) r&r-NONEXISTENT_FILENAMEglobalsrUr(r^lenrNr.rrrtest_lazycache_smokesz#LineCacheTests.test_lazycache_smokecCsLtttt}tttttt||ttdSr,)r&rUr-r`rar^r( updatecacher.rrr*test_lazycache_provide_after_failed_lookups  z9LineCacheTests.test_lazycache_provide_after_failed_lookupcCs"tttttdSr,)r&rUr^r`rar[rrrrtest_lazycache_checksz#LineCacheTests.test_lazycache_checkcCs8t|dtdt|dtdtdS)NFrz)r&rUr(r^rarrrrtest_lazycache_bad_filenamesz*LineCacheTests.test_lazycache_bad_filenamecCsFtttt}|dttt|dttjtdS)NF) r&rUr-r`rar(r^rbrNr.rrrtest_lazycache_already_cacheds z,LineCacheTests.test_lazycache_already_cachedcCstt}||dd}ttd|tt}Wdn1sJ0Y|||tttd|tt}Wdn1s0Y||g|tt|dS)Nc_stdSr,) MemoryError)argskwargsrrrraise_memoryerrorsz:LineCacheTests.test_memoryerror..raise_memoryerrorrd)r&r-r=Z assertTruerZ swap_attrr(rU)rr/rmZlines2Zlines3rrrtest_memoryerrors  ( ( zLineCacheTests.test_memoryerrorN)rrrr+rLrWr]r_rcrerfrgrirnrrrrr:cs! r:cs4eZdZfddZddZddZddZZS) LineCacheInvalidationTestsc s tttjd|_tjd|_tjd|_|j|j|jfD]x}| tj |t |ddd"}| d|dWdn1s0Y| |tjt|||tjqFt|jt |jddd}| d Wdn1s0YdS) Nz.1z.2z.3rIr)encodingz print("I am z")zprint("was modified"))rrr&rUrrJ deleted_file modified_fileunchanged_filerrr#r assertNotInrNr-assertInrBremove)rZfnamer\rrrrs$    0  z LineCacheInvalidationTests.setUpcCs@t|j||jtj||jtj||jtjdSr,)r&r[rqrtrNrurrrsrrrr test_checkcache_for_deleted_files z;LineCacheInvalidationTests.test_checkcache_for_deleted_filecCs@t|j||jtj||jtj||jtjdSr,)r&r[rrrurqrNrtrsrrrr!test_checkcache_for_modified_files zrCdirnameZ TEST_PATHsplitrArDrYrZrKrrr1ZTestCaser5r7r8r9r:rormainrrrrs6     *