a 5źdgÓ%ć@s.ddlZddlZddlZddlZddlZddlmZejZ e dZ dZ dZ ej  e”Zd ”Zej  e ”ZdZdZd ZGd d „d ƒZGd d „d eƒZGdd„deƒZGdd„deejƒZGdd„deejƒZGdd„deejƒZGdd„deejƒZGdd„dejƒZGdd„dejƒZe dkr*e !”dS)éN)Śsupportz.missingz !@$)(!@#_1Śz linecache abcz3 " Docstring " def function(): return result z% def f(): return 1 + 1 a = f() z def f(): return 3cseZdZ‡fdd„Z‡ZS)ŚTempFilecs^tƒ ”tjdd$}|j|_| |j”Wdƒn1s@0Y| t j |j”dS)NF)Śdelete) ŚsuperŚsetUpŚtempfileŚNamedTemporaryFileŚnameŚ file_nameŚwriteŚfile_byte_stringŚ addCleanuprŚunlink)ŚselfŚfp©Ś __class__©ś//usr/local/lib/python3.9/test/test_linecache.pyr*s  *zTempFile.setUp)Ś__name__Ś __module__Ś __qualname__rŚ __classcell__rrrrr(srcs,eZdZ‡fdd„Zdd„Zdd„Z‡ZS)ŚGetLineTestsGoodDatacs"d |j” d”|_tƒ ”dS)Nrśutf-8)ŚjoinŚ file_listŚencoder rr©rrrrr5szGetLineTestsGoodData.setUpcCsrt |j”R}t|ƒD]8\}}| d”s0|d7}t |j|d”}| ||”qWdƒn1sd0YdS)NŚ é)ŚtokenizeŚopenr Ś enumerateŚendswithŚ linecacheŚgetlineŚ assertEqual)rrŚindexŚlineZ cached_linerrrŚ test_getline9s  z!GetLineTestsGoodData.test_getlinecCst |j”}| ||j”dS©N)r&Śgetlinesr r(r©rŚlinesrrrŚ test_getlinesBs z"GetLineTestsGoodData.test_getlines)rrrrr+r0rrrrrr2s  rc@seZdZdd„Zdd„ZdS)ŚGetLineTestsBadDatacCs| ttftj|jd”dS)Nr!)Ś assertRaisesŚ SyntaxErrorŚUnicodeDecodeErrorr&r'r rrrrr+Js  ’z GetLineTestsBadData.test_getlinecCs| ttftj|j”dSr,)r2r3r4r&r-r rrrrr0Ns ’z!GetLineTestsBadData.test_getlinesN)rrrr+r0rrrrr1Gsr1c@seZdZgZdS)Ś EmptyFileN©rrrrrrrrr5Ssr5c@seZdZdgZdS)ŚSingleEmptyLiner Nr6rrrrr7Wsr7c@seZdZgd¢ZdS)Ś GoodUnicode)uĆ” zb zabcdef u ƔƔƔƔƔ Nr6rrrrr8[sr8c@seZdZdZdS)Ś BadUnicodes€abcN)rrrr rrrrr9_sr9c@sdeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dS)ŚLineCacheTestsc Csätj}| |tdƒt”| |tdƒt”| t|td”| |tdƒt”| |tdƒt”tD]f}t j   t |”d}t |ƒ8}t|ƒD]\}}| ||||dƒ”qŠWdƒqb1s¾0Yqbt d”}| |g”dS)Ni€é’’’’gš™™™™™ń?r!ś.pyza/b/c/__init__.py)r&r'r(ŚFILENAMEŚEMPTYr2Ś TypeErrorŚ INVALID_NAMEŚMODULESŚosŚpathrŚ MODULE_PATHr#r$r-)rr'ŚentryŚfilenameŚfiler)r*Śemptyrrrr+es 8 zLineCacheTests.test_getlinecCsf| tjtj”ttjdƒ}| t”Wdƒn1s<0Yt tj”}|  |gd¢”dS)NŚw)r z def f(): z return 3 ) rrrŚTESTFNr#r ŚSOURCE_3r&r-r()rrr/rrrŚtest_no_ending_newline~s ( z%LineCacheTests.test_no_ending_newlinecCs‚g}tD],}tj t|”d}| |”t |d”q| |g”dd„|Dƒ}|  |g”t  ”dd„|Dƒ}|  |g”dS)Nr<r!cSsg|]}|tjvr|‘qSr©r&Ścache©Ś.0ŚfnrrrŚ Žóz2LineCacheTests.test_clearcache..cSsg|]}|tjvr|‘qSrrMrOrrrrR“rS) rArBrCrrDŚappendr&r'ZassertNotEqualr(Ś clearcache)rŚcachedrErFZ cached_emptyrrrŚtest_clearcache…s   zLineCacheTests.test_clearcachec CsŽtj}tjd}| tj|”t|dƒ}| t”Wdƒn1sH0Y||dƒg}t|ƒB}t |ƒD](\}}|  ||||dƒ”|  |”qrWdƒn1s°0Yt|dƒ}| t ”Wdƒn1sä0Yt  d”t |ƒD] \}}|  ||||dƒ”qt  |”t|ƒD}t |ƒD]*\}}|  ||||dƒ”|  |”q>Wdƒn1s€0YdS)Nr<rIr!Śdummy)r&r'rrJrrr#r ŚSOURCE_1r$r(rTŚSOURCE_2Ś checkcache)rr'Z source_nameŚsourceZ source_listr)r*rrrŚtest_checkcache–s*  (  * (   zLineCacheTests.test_checkcachecCs<t t”}t ”| dt td””| |t t””dS)NF)r&r-r=rUr(Ś lazycacher.rrrŚtest_lazycache_no_globals·s z(LineCacheTests.test_lazycache_no_globalscCsXt ttƒ”}t ”| dt ttƒ””| dttjtƒ”| |t t””dS)NTr!) r&r-ŚNONEXISTENT_FILENAMEŚglobalsrUr(r^ŚlenrNr.rrrŚtest_lazycache_smoke½s’z#LineCacheTests.test_lazycache_smokecCsLt ”t ttƒ”}t ”t t”t ttƒ”| |t t””dSr,)r&rUr-r`rar^r(Ś updatecacher.rrrŚ*test_lazycache_provide_after_failed_lookupĒs  z9LineCacheTests.test_lazycache_provide_after_failed_lookupcCs"t ”t ttƒ”t ”dSr,)r&rUr^r`rar[rrrrŚtest_lazycache_checkĻsz#LineCacheTests.test_lazycache_checkcCs8t ”| dt dtƒ””| dt dtƒ””dS)NFrz)r&rUr(r^rarrrrŚtest_lazycache_bad_filenameŌsz*LineCacheTests.test_lazycache_bad_filenamecCsFt ”t ttƒ”}| dt ttƒ””| dttjtƒ”dS)NFé) r&rUr-r`rar(r^rbrNr.rrrŚtest_lazycache_already_cachedŁs žz,LineCacheTests.test_lazycache_already_cachedcCsĀt t”}| |”dd„}t td|”t t”}Wdƒn1sJ0Y| ||”t ”t td|”t t”}Wdƒn1s–0Y| |g”| t t”|”dS)Nc_st‚dSr,)Ś MemoryError)ŚargsŚkwargsrrrŚraise_memoryerroräsz:LineCacheTests.test_memoryerror..raise_memoryerrorrd)r&r-r=Z assertTruerZ swap_attrr(rU)rr/rmZlines2Zlines3rrrŚtest_memoryerrorįs  ( ( zLineCacheTests.test_memoryerrorN)rrrr+rLrWr]r_rcrerfrgrirnrrrrr:cs! r:cs4eZdZ‡fdd„Zdd„Zdd„Zdd„Z‡ZS) ŚLineCacheInvalidationTestsc s tƒ ”t ”tjd|_tjd|_tjd|_|j|j|jfD]x}|  tj |”t |ddd"}|  d|›d”Wdƒn1sŽ0Y|  |tj”t |”| |tj”qFt |j”t |jddd}|  d ”Wdƒn1sü0YdS) Nz.1z.2z.3rIr)Śencodingz print("I am z")zprint("was modified"))rrr&rUrrJŚ deleted_fileŚ modified_fileŚunchanged_filerrr#r Ś assertNotInrNr-ŚassertInrBŚremove)rZfnamer\rrrrņs$    ž0  z LineCacheInvalidationTests.setUpcCs@t |j”| |jtj”| |jtj”| |jtj”dSr,)r&r[rqrtrNrurrrsrrrrŚ test_checkcache_for_deleted_files z;LineCacheInvalidationTests.test_checkcache_for_deleted_filecCs@t |j”| |jtj”| |jtj”| |jtj”dSr,)r&r[rrrurqrNrtrsrrrrŚ!test_checkcache_for_modified_files zrCŚdirnameZ TEST_PATHŚsplitrArDrYrZrKrrr1ZTestCaser5r7r8r9r:rorŚmainrrrrŚs6     *