o
    HXīh&  ć                   @   sR  	 d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlm	Z	 e j
Zed ZdZdZej e
”Zd ” Zej e”ZdZd	Zd
ZG dd dZG dd deZG dd deZG dd deejZG dd deejZG dd deejZG dd deejZG dd deejZ G dd dejZ!G dd dejZ"e#dkr§e $”  dS dS ) é    N)Śsupport)Ś	os_helperz.missingz
!@$)(!@#_1Ś zlinecache abcz3
" Docstring "

def function():
    return result

z%
def f():
    return 1 + 1

a = f()

z
def f():
    return 3c                       s   e Zd Z fddZ  ZS )ŚTempFilec                    s^   t   ”  tjdd}|j| _| | j” W d    n1 s w   Y  |  t	j
| j” d S )NF)Śdelete)ŚsuperŚsetUpŚtempfileŚNamedTemporaryFileŚnameŚ	file_nameŚwriteŚfile_byte_stringŚ
addCleanupr   Śunlink)ŚselfŚfp©Ś	__class__© ś=/opt/python-3.10.19/usr/lib/python3.10/test/test_linecache.pyr   +   s   
žzTempFile.setUp)Ś__name__Ś
__module__Ś__qualname__r   Ś__classcell__r   r   r   r   r   )   s    r   c                       s,   e Zd Z fddZdd Zdd Z  ZS )ŚGetLineTestsGoodDatac                    s"   d  | j” d”| _t  ”  d S )Nr   śutf-8)ŚjoinŚ	file_listŚencoder   r   r   ©r   r   r   r   r   6   s   zGetLineTestsGoodData.setUpc                 C   st   t  | j”*}t|D ]\}}| d”s|d7 }t | j|d ”}|  ||” qW d    d S 1 s3w   Y  d S )NŚ
é   )ŚtokenizeŚopenr   Ś	enumerateŚendswithŚ	linecacheŚgetlineŚassertEqual)r   r   ŚindexŚlineZcached_liner   r   r   Śtest_getline:   s   
ū"’z!GetLineTestsGoodData.test_getlinec                 C   s   t  | j”}|  || j” d S ©N)r'   Śgetlinesr   r)   r   ©r   Ślinesr   r   r   Śtest_getlinesC   s   z"GetLineTestsGoodData.test_getlines)r   r   r   r   r,   r1   r   r   r   r   r   r   3   s    	r   c                   @   s   e Zd Zdd Zdd ZdS )ŚGetLineTestsBadDatac                 C   s   |   t | jd”d” d S )Nr"   r   )r)   r'   r(   r   r    r   r   r   r,   K   s   z GetLineTestsBadData.test_getlinec                 C   s   |   t | j”g ” d S r-   )r)   r'   r.   r   r    r   r   r   r1   N   s   z!GetLineTestsBadData.test_getlinesN)r   r   r   r,   r1   r   r   r   r   r2   H   s    r2   c                   @   s   e Zd Zg ZdS )Ś	EmptyFileN©r   r   r   r   r   r   r   r   r3   R   ó    r3   c                   @   s   e Zd ZdgZdS )ŚSingleEmptyLiner!   Nr4   r   r   r   r   r6   V   s    
r6   c                   @   s   e Zd Zg d¢ZdS )ŚGoodUnicode)u   Ć”
zb
zabcdef
u   Ć”Ć”Ć”Ć”Ć”
Nr4   r   r   r   r   r7   Z   s    r7   c                   @   ó   e Zd ZdZdS )ŚBadUnicode_NoDeclarations   
abcN©r   r   r   r   r   r   r   r   r9   ]   r5   r9   c                   @   r8   )ŚBadUnicode_WithDeclarations   # coding=utf-8
abcNr:   r   r   r   r   r;   `   r5   r;   c                   @   sd   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd ZdS )ŚLineCacheTestsc              
   C   sč   t j}|  |tdt” |  |tdt” |  t|td” |  |tdt” |  |tdt” tD ]5}t	j
 t|”d }t|dd}t|D ]\}}|  ||||d ” qGW d    n1 saw   Y  q1t  d”}|  |g ” d S )	Ni   é’’’’gń?r"   ś.pyr   ©Śencodingza/b/c/__init__.py)r'   r(   r)   ŚFILENAMEŚEMPTYZassertRaisesŚ	TypeErrorŚINVALID_NAMEŚMODULESŚosŚpathr   ŚMODULE_PATHr$   r%   r.   )r   r(   ŚentryŚfilenameŚfiler*   r+   Śemptyr   r   r   r,   f   s    ’’
zLineCacheTests.test_getlinec                 C   sj   |   tjtj” ttjddd}| t” W d    n1 s w   Y  t tj”}|  	|g d¢” d S )NŚwr   r?   )r!   z	def f():
z    return 3
)
r   r   r   ŚTESTFNr$   r   ŚSOURCE_3r'   r.   r)   )r   r   r0   r   r   r   Śtest_no_ending_newline   s   ’z%LineCacheTests.test_no_ending_newlinec                 C   s   g }t D ]}tj t|”d }| |” t |d” q|  |g ” dd |D }|  	|g ” t 
”  dd |D }|  	|g ” d S )Nr>   r"   c                 S   s   g | ]	}|t jvr|qS r   ©r'   Ścache©Ś.0Śfnr   r   r   Ś
<listcomp>   ó    z2LineCacheTests.test_clearcache.<locals>.<listcomp>c                 S   s   g | ]	}|t jv r|qS r   rQ   rS   r   r   r   rV      rW   )rE   rF   rG   r   rH   Śappendr'   r(   ZassertNotEqualr)   Ś
clearcache)r   ŚcachedrI   rJ   Zcached_emptyr   r   r   Śtest_clearcache   s   
zLineCacheTests.test_clearcachec              	   C   s  t j}tjd }|  tj|” t|ddd}| t” W d    n1 s&w   Y  ||d g }t|dd!}t	|D ]\}}|  
||||d ” | |” q=W d    n1 s\w   Y  t|ddd}| t” W d    n1 sxw   Y  t  d” t	|D ]\}}|  
||||d ” qt  |” t|dd"}t	|D ]\}}|  
||||d ” | |” q¦W d    d S 1 sĘw   Y  d S )Nr>   rM   r   r?   r"   Zdummy)r'   r(   r   rN   r   r   r$   r   ŚSOURCE_1r%   r)   rX   ŚSOURCE_2Ś
checkcache)r   r(   Zsource_nameŚsourceZsource_listr*   r+   r   r   r   Śtest_checkcache   s6   
’
ž’’

ž"’zLineCacheTests.test_checkcachec                 C   s<   t  t”}t  ”  |  dt  td ”” |  |t  t”” d S )NF)r'   r.   rA   rY   r)   Ś	lazycacher/   r   r   r   Śtest_lazycache_no_globalsø   s   
z(LineCacheTests.test_lazycache_no_globalsc                 C   sX   t  tt ”}t  ”  |  dt  tt ”” |  dtt jt ” |  |t  t”” d S )NTr"   )	r'   r.   ŚNONEXISTENT_FILENAMEŚglobalsrY   r)   ra   ŚlenrR   r/   r   r   r   Śtest_lazycache_smoke¾   s   ’z#LineCacheTests.test_lazycache_smokec                 C   sL   t  ”  t  tt ”}t  ”  t  t” t  tt ” |  |t  t”” d S r-   )r'   rY   r.   rc   rd   ra   r)   Śupdatecacher/   r   r   r   Ś*test_lazycache_provide_after_failed_lookupČ   s   
z9LineCacheTests.test_lazycache_provide_after_failed_lookupc                 C   s"   t  ”  t  tt ” t  ”  d S r-   )r'   rY   ra   rc   rd   r^   r    r   r   r   Śtest_lazycache_checkŠ   s   z#LineCacheTests.test_lazycache_checkc                 C   s8   t  ”  |  dt  dt ”” |  dt  dt ”” d S )NFr   z<foo>)r'   rY   r)   ra   rd   r    r   r   r   Śtest_lazycache_bad_filenameÕ   s   z*LineCacheTests.test_lazycache_bad_filenamec                 C   sF   t  ”  t  tt ”}|  dt  tt ”” |  dtt jt ” d S )NFé   )	r'   rY   r.   rc   rd   r)   ra   re   rR   r/   r   r   r   Śtest_lazycache_already_cachedŚ   s   žz,LineCacheTests.test_lazycache_already_cachedc                 C   sĀ   t  t”}|  |” dd }t t d|” t  t”}W d    n1 s%w   Y  |  ||” t  ”  t t d|” t  t”}W d    n1 sKw   Y  |  |g ” |  t  t”|” d S )Nc                  _   s   t r-   )ŚMemoryError)ŚargsŚkwargsr   r   r   Śraise_memoryerrorå   s   z:LineCacheTests.test_memoryerror.<locals>.raise_memoryerrorrg   )r'   r.   rA   Z
assertTruer   Z	swap_attrr)   rY   )r   r0   rp   Zlines2Zlines3r   r   r   Śtest_memoryerrorā   s   

’’zLineCacheTests.test_memoryerrorN)r   r   r   r,   rP   r[   r`   rb   rf   rh   ri   rj   rl   rq   r   r   r   r   r<   d   s    !
r<   c                       s4   e Zd Z fddZdd Zdd Zdd Z  ZS )	ŚLineCacheInvalidationTestsc              	      s  t   ”  t ”  tjd | _tjd | _tjd | _| j| j| jfD ]<}|  	tj
|” t|ddd}| d| d” W d    n1 sGw   Y  |  |tj” t |” |  |tj” q#t | j” t| jddd}| d	” W d    d S 1 sw   Y  d S )
Nz.1z.2z.3rM   r   r?   zprint("I am z")zprint("was modified"))r   r   r'   rY   r   rN   Śdeleted_fileŚmodified_fileŚunchanged_filer   r   r$   r   ŚassertNotInrR   r.   ŚassertInrF   Śremove)r   Zfnamer_   r   r   r   r   ó   s(   
ž’
"’z LineCacheInvalidationTests.setUpc                 C   s@   t  | j” |  | jt j” |  | jt j” |  | jt j” d S r-   )r'   r^   rs   rv   rR   rw   rt   ru   r    r   r   r   Ś test_checkcache_for_deleted_file	  ó   z;LineCacheInvalidationTests.test_checkcache_for_deleted_filec                 C   s@   t  | j” |  | jt j” |  | jt j” |  | jt j” d S r-   )r'   r^   rt   rw   rs   rR   rv   ru   r    r   r   r   Ś!test_checkcache_for_modified_file  rz   z<LineCacheInvalidationTests.test_checkcache_for_modified_filec                 C   s<   t  ”  |  | jt j” |  | jt j” |  | jt j” d S r-   )r'   r^   rv   rs   rR   rt   rw   ru   r    r   r   r   Ś!test_checkcache_with_no_parameter  s   z<LineCacheInvalidationTests.test_checkcache_with_no_parameter)r   r   r   r   ry   r{   r|   r   r   r   r   r   rr   ņ   s
    rr   Ś__main__)%r'   ZunittestZos.pathrF   r	   r#   Śtestr   Ztest.supportr   Ś__file__rA   rc   rD   rB   rG   ŚdirnameZ	TEST_PATHŚsplitrE   rH   r\   r]   rO   r   r   r2   ZTestCaser3   r6   r7   r9   r;   r<   rr   r   Śmainr   r   r   r   Ś<module>   s@    

 *’