
    ڏDj                     v    d dl Z d dlZd dlZd dlZd dlZ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  G d de      Zy)    N)
CythonTestc                   ~    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d Zd Zd Zd Zd Zd Zd Zd Zy)TestCyCachec                 @   t        j                  |        t        j                  dt        j
                  j                  d      rdnd       | _        t        j                  d| j                        | _        t        j                  d| j                        | _	        y )Nzcycache-testTEST_TMP)prefixdirsrccache)
r   setUptempfilemkdtempospathisdirtemp_dirsrc_dir	cache_dirselfs    bC:\Crop_Prediction\Backend\crop-ai-system\venv\Lib\site-packages\Cython/Build/Tests/TestCyCache.pyr   zTestCyCache.setUp   sl     ((! ggmmJ7
TC  ''u$--H!))dmmL    c                 |    t        j                   t        j                  j                  | j                  |            S N)globr   r   joinr   )r   	file_globs     r   cache_fileszTestCyCache.cache_files   s$    yydnni@AAr   c                     t         j                  j                          d t         j                  j                  _        t        j                  j                  j                  |i | y r   )CythonUtilsclear_function_cachesBuildDependencies	_dep_tree	cythonizer   argskwargss      r   fresh_cythonizezTestCyCache.fresh_cythonize   sA    **,.2!!+!!++T<V<r   c                     t         j                  j                          t        j                  j                  j
                  |i | y r   )r    r!   r"   CompilerMaincompiler'   s      r   fresh_compilezTestCyCache.fresh_compile!   s/    **,$$d5f5r   c                    d}d}t         j                  j                  | j                  d      }|d d dz   }t	        |d      5 }|j                  |       d d d         ||| j                          ||| j                         | j                  dt        | j                  d	                   t	        |      5 }|j                         }d d d        t        j                  |       t	        |d      5 }|j                  |       d d d         ||| j                         t	        |      5 }|j                         }d d d        t        j                  |       | j                  d
       | j                  dt        | j                  d	                   t	        |d      5 }|j                  |       d d d         ||| j                         | j                  dt        | j                  d	                   t	        |      5 }|j                         }	d d d        | j                  	|dj                  t        t        j                  |	j!                  d      |j!                  d                  d d              y # 1 sw Y   /xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   mxY w# 1 sw Y   xY w# 1 sw Y   xY w)Nz
value = 1
z
value = 2
a.pyx.cwr      za.c*zC file not changed!   

   )msg)r   r   r   r   openwriter   assertEquallenr   readunlinkassertNotEquallistdifflibunified_diffsplit)
r   compilation_methodcontent1content2a_pyxa_cfa_contents1a_contents2
a_contentss
             r   _test_cycache_switchz TestCyCache._test_cycache_switch&   s_     T\\73CRj4% 	GGH	 	5757C 0 0 89:#Y 	#!&&(K	#
		#% 	GGH	 	57#Y 	#!&&(K	#
		#K6KLC 0 0 89:% 	GGH	 	57C 0 0 89:#Y 	"!J	"		$w33  &(9(9$(? A BBE2G H 	 	I?	 		# 	#	 	
	# 	#	 		" 	"sH   J:J4J-J)$J6KJJJ&)J36K Kc                 :    | j                  | j                         y r   )rO   r*   r   s    r   test_cycache_switch_cythonizez)TestCyCache.test_cycache_switch_cythonizeP   s    !!$"6"67r   c                 :    | j                  | j                         y r   )rO   r/   r   s    r   test_cycache_switch_compilez'TestCyCache.test_cycache_switch_compileS   s    !!$"4"45r   c                    t         j                  j                  | j                  d      }|d d dz   }t	        |d      5 }|j                  d       d d d         ||| j                         t         j                  j                  | j                  t        j                  | j                        d         }t        j                  |d      5 }|j                  d	       d d d        t        j                  |        ||| j                         t	        |      5 }|j                         }d d d        | j                  d
d|d d z         y # 1 sw Y   xY w# 1 sw Y   |xY w# 1 sw Y   ;xY w)Nr1   r2   r3   r4   passr5   r   wbs
   fake stuffz
fake stuffzUnexpected contents: %s...d   )r   r   r   r   r;   r<   r   listdirgzipGzipFiler@   r?   r=   )r   rF   rI   rJ   rK   a_cachegzipfilerN   s           r   _test_cycache_uses_cachez$TestCyCache._test_cycache_uses_cacheV   s%   T\\73CRj4% 	GGFO	 	57'',,t~~rzz$../I!/LM]]7D) 	*XNN=)	*
		#57#Y 	"!J	"\5
4C8HH	J	 		* 	*	" 	"s#   EEE&EE#&E/c                 :    | j                  | j                         y r   )r]   r*   r   s    r   !test_cycache_uses_cache_cythonizez-TestCyCache.test_cycache_uses_cache_cythonizek       %%d&:&:;r   c                 :    | j                  | j                         y r   )r]   r/   r   s    r   test_cycache_uses_cache_compilez+TestCyCache.test_cycache_uses_cache_compilen       %%d&8&89r   c                 @   t         j                  j                  | j                  d      }|d d dz   }|d d dz   }t	        |d      5 }|j                  d       d d d         ||| j                  d       | j                  t         j                  j                  |      |       t        j                  |       t        j                  |        ||| j                  d       | j                  t         j                  j                  |      |       y # 1 sw Y   xY w)	Nr1   r2   r3   z.htmlr4   rU   default)r   annotate)
r   r   r   r   r;   r<   r   
assertTrueexistsr@   )r   rF   rI   rJ   a_htmlrK   s         r   _test_cycache_annotationz$TestCyCache._test_cycache_annotationq   s    T\\73CRj4sg%% 	GGFO	 	5Kv.7
		&
		#5Kv.7	 	s   DDc                 :    | j                  | j                         y r   )rj   r*   r   s    r   !test_cycache_annotation_cythonizez-TestCyCache.test_cycache_annotation_cythonize   r`   r   c                 :    | j                  | j                         y r   )rj   r/   r   s    r   test_cycache_annotation_compilez+TestCyCache.test_cycache_annotation_compile   rc   r   c                    t         j                  j                  | j                  d      }|d d dz   }|d d dz   }|d d dz   }t	        |d      5 }|j                  d       d d d         ||| j                         |||g}|D ]F  }| j                  t         j                  j                  |      |       t        j                  |       H  ||| j                         |D ]`  }| j                  t         j                  j                  |      |       | j                  t         j                  j                  |      |       b y # 1 sw Y   xY w)	Nr1   r2   r3   z.hz_api.hr4   z)cdef public api int foo(int x): return x
r5   )r   r   r   r   r;   r<   r   rg   rh   r@   isfile)	r   rF   rI   rJ   a_ha_api_hrK   expectedoutputs	            r   _test_multi_file_outputz#TestCyCache._test_multi_file_output   s#   T\\73CRj4CRj4*x'% 	BGG@A	B 	57g& 	FOOBGGNN62F;IIf	 	57 	<FOOBGGNN62F;OOBGGNN62F;	<	B 	Bs   EEc                 :    | j                  | j                         y r   )ru   r*   r   s    r    test_multi_file_output_cythonizez,TestCyCache.test_multi_file_output_cythonize   s    $$T%9%9:r   c                 :    | j                  | j                         y r   )ru   r/   r   s    r   test_multi_file_output_compilez*TestCyCache.test_multi_file_output_compile   s    $$T%7%78r   c                    t         j                  j                  | j                  d      }|d t	        d        dz   }|d t	        d        dz   }t        |d      5 }|j                  d       d d d         ||| j                  d       | j                  d	t	        | j                  d
                   t        j                  |        ||| j                  d       | j                  dt	        | j                  d
                   	 t        j                  |        ||| j                  dd       | j                  dt	        | j                  d
                   t        j                  |        ||| j                  dd       | j                  dt	        | j                  d
                   y # 1 sw Y   IxY w# t        $ r t        j                  |       Y w xY w)Nzoptions.pyxz.pyxr3   z.cppr4   rU   F)r   cplusr6   z
options.c*Tr7   )r   r{   show_version)r   r   r   r   r>   r;   r<   r   r=   r   r@   FileNotFoundError)r   rF   hash_pyxhash_chash_cpprK   s         r   _test_options_invalidationz&TestCyCache._test_options_invalidation   s   77<<m<-CK<(4/Mc&k\*V3(C  	AGGFO	84>>GC 0 0 >?@
		&84>>FC 0 0 >?@	 IIf
 	84>>UZ[C 0 0 >?@
		&84>>UYZC 0 0 >?@3	 	 ! 	 IIh	 s   F4	G 4F>G"!G"c                 :    | j                  | j                         y r   )r   r*   r   s    r   #test_options_invalidation_cythonizez/TestCyCache.test_options_invalidation_cythonize   s    ''(<(<=r   c                 :    | j                  | j                         y r   )r   r/   r   s    r   !test_options_invalidation_compilez-TestCyCache.test_options_invalidation_compile   s    ''(:(:;r   N)__name__
__module____qualname__r   r   r*   r/   rO   rQ   rS   r]   r_   rb   rj   rl   rn   ru   rw   ry   r   r   r    r   r   r   r      sg    MB=
6
(IT86J*<:8<:<*;9A>><r   r   )rC   r   rY   r   sysr   unittestCython.Build.Dependenciesr    Cython.Compiler.MainCython.UtilsCython.TestUtilsr   r   r   r   r   <module>r      s4       	 
       't<* t<r   