
    z%i&                        	 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   ZdZdZej                  j!                  e
      Zdj%                         Zej                  j!                  e      ZdZd	Zd
Z G d d      Z G d de      Z G d de      Z G d deej6                        Z G d deej6                        Z G d deej6                        Z G d deej6                        Z G d deej6                        Z  G d dej6                        Z! G d dej6                        Z"e#dk(  r ejH                          yy)     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                        e Zd Z fdZ xZS )TempFilec                 $   t         |           t        j                  d      5 }|j                  | _        |j                  | j                         d d d        | j                  t        j                  | j
                         y # 1 sw Y   4xY w)NF)delete)supersetUptempfileNamedTemporaryFilename	file_namewritefile_byte_string
addCleanupr   unlink)selffp	__class__s     G/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/test/test_linecache.pyr   zTempFile.setUp+   sh    ((6 	,"WWDNHHT**+	, 		(($..9	, 	,s   -BB)__name__
__module____qualname__r   __classcell__r   s   @r   r   r   )   s    : :    r   c                   *     e Zd Z fdZd Zd Z xZS )GetLineTestsGoodDatac                     dj                  | j                        j                  d      | _        t        |           y )Nr   utf-8)join	file_listencoder   r
   r   )r   r   s    r   r   zGetLineTestsGoodData.setUp6   s,     " 7 > >w Gr   c                 *   t        j                  | j                        5 }t        |      D ]P  \  }}|j	                  d      s|dz  }t        j                  | j                  |dz         }| j                  ||       R 	 d d d        y # 1 sw Y   y xY w)N
   )tokenizeopenr   	enumerateendswith	linecachegetlineassertEqual)r   r   indexlinecached_lines        r   test_getlinez!GetLineTestsGoodData.test_getline:   s    ]]4>>* 	4b(} 4t}}T*DLD'//	J  {34	4 	4 	4s   AB		Bc                 z    t        j                  | j                        }| j                  || j                         y N)r,   getlinesr   r.   r#   r   liness     r   test_getlinesz"GetLineTestsGoodData.test_getlinesC   s*    ""4>>2/r   )r   r   r   r   r2   r8   r   r   s   @r   r   r   3   s    40r   r   c                       e Zd Zd Zd Zy)GetLineTestsBadDatac                 d    | j                  t        j                  | j                  d      d       y )Nr'   r   )r.   r,   r-   r   r   s    r   r2   z GetLineTestsBadData.test_getlineK   s#    **4>>1=rBr   c                 b    | j                  t        j                  | j                        g        y r4   )r.   r,   r5   r   r<   s    r   r8   z!GetLineTestsBadData.test_getlinesN   s!    ++DNN;R@r   N)r   r   r   r2   r8    r   r   r:   r:   H   s    CAr   r:   c                       e Zd Zg Zy)	EmptyFileNr   r   r   r#   r>   r   r   r@   r@   R   s    Ir   r@   c                       e Zd ZdgZy)SingleEmptyLiner&   NrA   r>   r   r   rC   rC   V   s	    Ir   rC   c                       e Zd Zg dZy)GoodUnicode)u   á
zb
zabcdef
u   ááááá
NrA   r>   r   r   rE   rE   Z   s    ;Ir   rE   c                       e Zd ZdZy)BadUnicode_NoDeclarations   
abcNr   r   r   r   r>   r   r   rG   rG   ]   s    #r   rG   c                       e Zd ZdZy)BadUnicode_WithDeclarations   # coding=utf-8
abcNrH   r>   r   r   rJ   rJ   `   s    1r   rJ   c                   N    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zy)LineCacheTestsc                    t         j                  }| j                   |t        d      t               | j                   |t        d      t               | j                  t        |t        d       | j                   |t        d      t               | j                   |t        d      t               t        D ]o  }t        j                  j                  t        |      dz   }t        |d      5 }t        |      D ]!  \  }}| j                  | |||dz                # 	 d d d        q t        j                  d      }| j                  |g        y # 1 sw Y   xY w)	Ni   g?r'   .pyr!   encodingza/b/c/__init__.py)r,   r-   r.   FILENAMEEMPTYassertRaises	TypeErrorINVALID_NAMEMODULESospathr"   MODULE_PATHr)   r*   r5   )r   r-   entryfilenamefiler/   r0   emptys           r   r2   zLineCacheTests.test_getlinef   s1   ## 	51592.6 	)Wh< 	*E2q159  	IEww||K7%?Hh1 IT#,T? IKE4$$T78UQY+GHII I	I ""#67#I Is   .0EE	c                 Z   | j                  t        j                  t        j                         t	        t        j                  dd      5 }|j                  t               d d d        t        j                  t        j                        }| j                  |g d       y # 1 sw Y   AxY w)Nwr!   rP   )r&   z	def f():
z    return 3
)
r   r   r   TESTFNr)   r   SOURCE_3r,   r5   r.   )r   r   r7   s      r   test_no_ending_newlinez%LineCacheTests.test_no_ending_newline   sx    	(()*:*:;)""C': 	bHHX	""9#3#34 FG	 	s   B!!B*c                    g }t         D ]P  }t        j                  j                  t        |      dz   }|j                  |       t        j                  |d       R | j                  |g        |D cg c]  }|t        j                  vs| }}| j                  |g        t        j                          |D cg c]  }|t        j                  v s| }}| j                  |g        y c c}w c c}w )NrO   r'   )rW   rX   rY   r"   rZ   appendr,   r-   assertNotEqualcacher.   
clearcache)r   cachedr[   r\   fncached_emptys         r   test_clearcachezLineCacheTests.test_clearcache   s     	+Eww||K7%?HMM(#h*	+ 	FB'%+Irr/HIIr* 	%+ErrY__/DEEr* J
 Fs   2C+
C+:C0C0c           
         t         j                  }t        j                  dz   }| j	                  t        j
                  |       t        |dd      5 }|j                  t               d d d         ||d       g }t        |d      5 }t        |      D ]2  \  }}| j                  | |||dz                |j                  |       4 	 d d d        t        |dd      5 }|j                  t               d d d        t        j                  d       t        |      D ]!  \  }}| j                  | |||dz                # t        j                  |       t        |d      5 }t        |      D ]2  \  }}| j                  | |||dz                |j                  |       4 	 d d d        y # 1 sw Y   IxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)NrO   r`   r!   rP   r'   dummy)r,   r-   r   ra   r   r   r)   r   SOURCE_1r*   r.   re   SOURCE_2
checkcache)r   r-   source_namesourcesource_listr/   r0   s          r   test_checkcachezLineCacheTests.test_checkcache   s   ##&&.	((+6+sW5 	#LL"	#Q +0 	)F(0 )t  w{EAI'FG""4()	)
 +sW5 	#LL"	# 	W% %[1 	DKE4T7;	#BC	D 	[)+0 	)F(0 )t  w{EAI'FG""4()	) 	)/	# 	#	) 	)
	# 	#	) 	)s2   F/AF< G$AG/F9<GGGc                    t        j                  t              }t        j                          | j	                  dt        j
                  t        d              | j	                  |t        j                  t                     y )NF)r,   r5   rR   rh   r.   	lazycacher6   s     r   test_lazycache_no_globalsz(LineCacheTests.test_lazycache_no_globals   sV    ""8,	 3 3Hd CD	 2 28 <=r   c                    t        j                  t        t                     }t        j                          | j                  dt        j                  t        t                            | j                  dt        t         j                  t                        | j                  |t        j                  t                     y )NTr'   )	r,   r5   NONEXISTENT_FILENAMEglobalsrh   r.   rw   lenrg   r6   s     r   test_lazycache_smokez#LineCacheTests.test_lazycache_smoke   s    ""#7C)%%&:GIF	HC	0D EFG 		 2 23G HIr   c                 `   t        j                          t        j                  t        t	                     }t        j                          t        j                  t               t        j
                  t        t	                      | j                  |t        j                  t                     y r4   )r,   rh   r5   rz   r{   rw   r.   updatecacher6   s     r   *test_lazycache_provide_after_failed_lookupz9LineCacheTests.test_lazycache_provide_after_failed_lookup   sm    ""#7C/00')<	 5 56J KLr   c                     t        j                          t        j                  t        t	                      t        j
                          y r4   )r,   rh   rw   rz   r{   rq   r<   s    r   test_lazycache_checkz#LineCacheTests.test_lazycache_check   s-    0')<r   c                     t        j                          | j                  dt        j                  dt	                            | j                  dt        j                  dt	                            y )NFr   z<foo>)r,   rh   r.   rw   r{   r<   s    r   test_lazycache_bad_filenamez*LineCacheTests.test_lazycache_bad_filename   sL    	 3 3B	 BC	 3 3GWY GHr   c                 4   t        j                          t        j                  t        t	                     }| j                  dt        j                  t        t	                            | j                  dt        t         j                  t                        y )NF   )	r,   rh   r5   rz   r{   r.   rw   r|   rg   r6   s     r   test_lazycache_already_cachedz,LineCacheTests.test_lazycache_already_cached   si    ""#7C 4gi@	B 	C	0D EFGr   c                 D   t        j                  t              }| j                  |       d }t	        j
                  t         d|      5  t        j                  t              }d d d        | j                  |       t        j                          t	        j
                  t         d|      5  t        j                  t              }d d d        | j                  g        | j                  t        j                  t              |       y # 1 sw Y   xY w# 1 sw Y   QxY w)Nc                      t         r4   )MemoryError)argskwargss     r   raise_memoryerrorz:LineCacheTests.test_memoryerror.<locals>.raise_memoryerror   s    r   r   )r,   r5   rR   
assertTruer   	swap_attrr.   rh   )r   r7   r   lines2lines3s        r   test_memoryerrorzLineCacheTests.test_memoryerror   s    ""8,	y-9JK 	2''1F	2'y-9JK 	2''1F	2$++H5u=	2 	2
	2 	2s   	D
,D
DDN)r   r   r   r2   rc   rl   ru   rx   r}   r   r   r   r   r   r>   r   r   rL   rL   d   s?    $2H+")B>JM
I
H>r   rL   c                   0     e Zd Z fdZd Zd Zd Z xZS )LineCacheInvalidationTestsc                 >   t         |           t        j                          t        j
                  dz   | _        t        j
                  dz   | _        t        j
                  dz   | _        | j                  | j                  | j                  fD ]  }| j                  t        j                  |       t        |dd      5 }|j                  d| d       d d d        | j                  |t        j                         t        j                  |       | j!                  |t        j                          t#        j$                  | j                         t        | j                  dd      5 }|j                  d	       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)
Nz.1z.2z.3r`   r!   rP   zprint("I am z")zprint("was modified"))r
   r   r,   rh   r   ra   deleted_filemodified_fileunchanged_filer   r   r)   r   assertNotInrg   r5   assertInrX   remove)r   fnamers   r   s      r   r   z LineCacheInvalidationTests.setUp   sP   %,,t3&--4'..5''(())+ 		2E OOI,,e4eS73 7v|E7"567 UIOO4u%MM%1		2 			$##$$$$cG< 	2LL01	2 	27 7	2 	2s    F,FF	Fc                 >   t        j                  | j                         | j                  | j                  t         j                         | j                  | j                  t         j                         | j                  | j                  t         j                         y r4   )r,   rq   r   r   rg   r   r   r   r<   s    r    test_checkcache_for_deleted_filez;LineCacheInvalidationTests.test_checkcache_for_deleted_file	  s`    T../**IOO<d(()//:d))9??;r   c                 >   t        j                  | j                         | j                  | j                  t         j
                         | j                  | j                  t         j
                         | j                  | j                  t         j
                         y r4   )r,   rq   r   r   r   rg   r   r   r<   s    r   !test_checkcache_for_modified_filez<LineCacheInvalidationTests.test_checkcache_for_modified_file  s`    T//0d''9++Y__=d))9??;r   c                 (   t        j                          | j                  | j                  t         j                         | j                  | j
                  t         j                         | j                  | j                  t         j                         y r4   )r,   rq   r   r   rg   r   r   r   r<   s    r   !test_checkcache_with_no_parameterz<LineCacheInvalidationTests.test_checkcache_with_no_parameter  sZ    **IOO<++Y__=d))9??;r   )r   r   r   r   r   r   r   r   r   s   @r   r   r      s    2,<<<r   r   __main__)%r,   unittestos.pathrX   r   r(   testr   test.supportr   __file__rR   rz   rV   rS   rY   dirname	TEST_PATHsplitrW   rZ   ro   rp   rb   r   r   r:   TestCaser@   rC   rE   rG   rJ   rL   r   r   mainr>   r   r   <module>r      sU   &       " *, 
GGOOH%	



!ggooh'
: :08 0*A( A$h&7&7 *H,=,= <&(9(9 <$2H4E4E $2!4h6G6G 2K>X&& K>\'<!2!2 '<T zHMMO r   