Ñò
ÍDÀLc           @   s  d  d k  Z  d  d k Z d  d k Z d  d k Z d  d k l Z d  d k l Z l Z d  d k l	 Z	 d  d k
 l Z d  d k l Z d  d k l Z d  d k Z d  d k l Z e a d	 e i e i e i f d
 „  ƒ  YZ d „  Z e d j o e i e ƒ  ƒ n d S(   iÿÿÿÿN(   t   StringIO(   t	   Extensiont   Distribution(   t	   build_ext(   t	   sysconfig(   t   support(   t   DistutilsSetupError(   t   test_supportt   BuildExtTestCasec           B   s†   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 RS(   c         C   sz   t  t |  ƒ i ƒ  t i d d ƒ |  _ t i |  _ t i i	 |  i ƒ t
 i i t i d d ƒ } t i | |  i ƒ d  S(   Nt   prefixt   pythontest_t   Moduless
   xxmodule.c(   t   superR   t   setUpt   tempfilet   mkdtempt   tmp_dirt   syst   patht   sys_patht   appendt   ost   joinR   t   project_baset   shutilt   copy(   t   selft   xx_c(    (    s4   scripts/common/Lib/distutils/tests/test_build_ext.pyR      s    c   	   
   C   sÜ  t  i i |  i d ƒ } t d | g ƒ } t h d d 6| g d 6ƒ } |  i | _ t | ƒ } t  i d j o t	 i
 i d ƒ | _ n |  i | _ |  i | _ t	 i } t i p t ƒ  t	 _ n z | i ƒ  | i ƒ  Wd  | t	 _ Xt o d  St a d d  k } x$ d D] } |  i t | | ƒ ƒ qW|  i | i d d ƒ d ƒ |  i | i d d ƒ d ƒ |  i | i ƒ  i ƒ  d  ƒ d } |  i | i | ƒ |  i t  | i! ƒ  | i! ƒ ƒ |  i t  | i" ƒ  | i" ƒ ƒ d  S(   Ns
   xxmodule.ct   xxt   namet   ext_modulest   nts   _d.exeiÿÿÿÿt   errort   foot   newt   roji   i   i   i   i   i   s/   This is a template module just for instruction.(   s   errors   foos   newR#   (#   R   R   R   R   R   R   t   package_dirR   R   R   t
   executablet   endswitht   debugt	   build_libt
   build_tempt   stdoutR   t   verboseR    t   ensure_finalizedt   runt   ALREADY_TESTEDt   TrueR   t   assert_t   hasattrt   assertEqualsR!   R"   t   demot   Nonet   __doc__t
   isinstancet   Nullt   Str(	   R   R   t   xx_extt   distt   cmdt
   old_stdoutR   t   attrt   doc(    (    s4   scripts/common/Lib/distutils/tests/test_build_ext.pyt   test_build_ext#   s<    	


 c         C   s\   t  i d ƒ |  i t _ t i |  i t i	 d j p t i
 d j ƒ t t |  ƒ i ƒ  d  S(   NR   R   t   cygwin(   R   t   unloadR   R   R   R   t   rmtreeR   R   R   t   platformR   R   t   tearDown(   R   (    (    s4   scripts/common/Lib/distutils/tests/test_build_ext.pyRD   M   s    ,c         C   s·   t  h d d 6ƒ } t | ƒ } t i } d t _ d d k l } | i d ƒ } d | d <z | i ƒ  Wd  | t _ | d  j o | d =n | | d <X|  i	 t
 | i ƒ d j ƒ d  S(	   NR   R   t   sunosiÿÿÿÿ(   t   _config_varst   Py_ENABLE_SHAREDi   i    (   R   R   R   RC   t   distutils.sysconfigRF   t   getR,   R4   R0   t   lent   library_dirs(   R   R:   R;   t   oldRF   t   old_var(    (    s4   scripts/common/Lib/distutils/tests/test_build_ext.pyt   test_solaris_enable_sharedU   s    		
	c         C   s1  t  d d g ƒ g } t h d d 6| d 6ƒ } t | ƒ } | i ƒ  d d k l } | i ƒ  } |  i | | i j ƒ | i d d	 ƒ } |  i | | i j ƒ t | ƒ } d
 | _	 | i ƒ  |  i
 | i	 d
 g ƒ t | ƒ } d | _ | i ƒ  |  i d | i j ƒ t | ƒ } t i i d d g ƒ | _ | i ƒ  |  i
 | i d d g ƒ t | ƒ } d | _ | i ƒ  |  i
 | i d d g ƒ t | ƒ } d | _ | i ƒ  |  i
 | i d d g ƒ t | ƒ } d  | _ | i ƒ  |  i
 | i g  ƒ t | ƒ } d | _ | i ƒ  |  i
 | i d d g ƒ d  S(   NR!   t   xxxR   R   R   iÿÿÿÿ(   R   t   plat_specifici   t   my_libt
   my_lib_dirt   onet   twos   one,twot   1s   1 2t   2(   RS   RU   (   RT   RU   (   R   R   R   t   finalize_optionst	   distutilsR   t   get_python_incR0   t   include_dirst	   librariesR2   RK   R   t   pathsepR   t   rpatht   definet   undefR4   t	   swig_opts(   R   t   modulesR:   R;   R   t
   py_includet   plat_py_include(    (    s4   scripts/common/Lib/distutils/tests/test_build_ext.pyt   test_finalize_optionsj   sJ    
	
	

	
	
	
	
c         C   sº  t  ƒ  } t | ƒ } | i ƒ  |  i t | i d ƒ d d g } |  i t | i | ƒ d g } |  i t | i | ƒ d g } |  i t | i | ƒ d h d g d 6d d 6d d 6f g } | i | ƒ | d	 } |  i t | t ƒ ƒ |  i	 | i
 d ƒ |  i t | d ƒ ƒ d h d g d 6d d 6d d 6d d g d 6f g } |  i t | i | ƒ d d g | d	 d d <| i | ƒ |  i	 | d	 i d g ƒ |  i	 | d	 i d g ƒ d  S(   NR!   t   bars   foo-bart    s   foo.bart   sourcesR[   t   somei    RU   RV   t   3t   macrosi   (   Re   s   fooRe   (   s   foo-barRf   (   s   foo.barRf   (   RU   RV   Ri   (   RU   RV   (   Ri   (   RU   RV   (   R   R   RW   t   assertRaisesR   t   check_extensions_listR0   R6   R   R2   R[   R1   t   undef_macrost   define_macros(   R   R:   R;   t   extst   ext(    (    s4   scripts/common/Lib/distutils/tests/test_build_ext.pyt   test_check_extensions_list©   s0    	
		
c         C   sb   t  d d g ƒ g } t h d d 6| d 6ƒ } t | ƒ } | i ƒ  |  i | i ƒ  d g ƒ d  S(   NR!   RO   R   R   R   (   R   R   R   R,   R2   t   get_source_files(   R   Ra   R:   R;   (    (    s4   scripts/common/Lib/distutils/tests/test_build_ext.pyt   test_get_source_filesØ   s
    
c         C   sI   t  ƒ  } t | ƒ } d | _ | i ƒ  | i ƒ  |  i | i d ƒ d  S(   Nt   unix(   R   R   t   compilerR,   R-   R2   (   R   R:   R;   (    (    s4   scripts/common/Lib/distutils/tests/test_build_ext.pyt   test_compiler_optionß   s    		

c      	   C   sF  |  i  ƒ  } t i i | d ƒ } |  i | d ƒ t d | g ƒ } t h d d 6| g d 6ƒ } t | ƒ } | i ƒ  |  i	 t
 | i ƒ  ƒ d ƒ t i d j o t i i d	 ƒ | _ n t i i |  i d
 ƒ | _ t i i |  i d ƒ | _ t i i |  i  ƒ  ƒ } t i ƒ  } t i | ƒ z' d | _ | i ƒ  | i ƒ  d } Wd  t i | ƒ X|  i t i i | ƒ ƒ |  i	 t i i | ƒ d t i d ƒ ƒ t i i | ƒ }	 |  i	 |	 | ƒ d  | _  d | _ | i ƒ  | i ƒ  d } |  i t i i | ƒ ƒ |  i	 t i i | ƒ d t i d ƒ ƒ t i i | ƒ }	 |  i	 |	 | i ƒ | i! d ƒ }
 h d d 6|
 _" | i# d ƒ } t i i$ | ƒ d } |  i	 | | i ƒ d | _ t i i |  i  ƒ  ƒ } t i ƒ  } t i | ƒ z | i# d ƒ } Wd  t i | ƒ Xt i i$ | ƒ d } t i i$ | ƒ d } |  i	 | d ƒ d  S(   Ns   foo.cs   void initfoo(void) {};
R!   R   R   R   i   R   s   _d.exet   buildt   tempti    iÿÿÿÿt   SOt   build_pyRe   Rf   (%   R   R   R   R   t
   write_fileR   R   R   R,   R2   RJ   t   get_outputsR   R   R%   R&   R'   R   R(   R)   t   realpatht   getcwdt   chdirt   inplaceR-   R0   t   existst   splitextR   t   get_config_vart   dirnameR4   Ru   t   get_finalized_commandR$   t   get_ext_fullpatht   split(   R   R   t   c_fileRp   R:   R;   t   other_tmp_dirt   old_wdt   so_filet   so_dirRz   R   t   lastdir(    (    s4   scripts/common/Lib/distutils/tests/test_build_ext.pyt   test_get_outputsê   sd    
	
		
	c         C   s²  t  i ƒ  d } t ƒ  } t | ƒ } d | _ h d d 6| i _ d d g | i _ t i	 ƒ  } t i
 i | d d d | ƒ } | i d ƒ } |  i | | ƒ d	 | _ t i
 i | d
 ƒ | _ t i
 i | d
 d d | ƒ } | i d ƒ } |  i | | ƒ | i d ƒ } h  | _ d d g | i _ | i d ƒ } t i
 i | d
 d d d | ƒ } |  i | | ƒ d | _ | i d ƒ } t i
 i | d d d | ƒ } |  i | | ƒ d  S(   NRy   i   t   srcRf   t   lxmls	   lxml.htmlt   etrees
   lxml.etreei    t   tmpdirRz   t   twisteds   twisted.runner.portmapt   runnert   portmap(   R   t   get_config_varsR   R   R€   t   distributionR$   t   packagesR   R~   R   R   R†   R2   R(   R…   (   R   Rp   R:   R;   t   curdirt   wantedR   Rz   (    (    s4   scripts/common/Lib/distutils/tests/test_build_ext.pyt   test_ext_fullpath+  s4    					c   	      C   sè   t  i i |  i d ƒ } t d | g ƒ } t h d d 6| g d 6ƒ } t | ƒ } | i ƒ  d | _ h d d 6| i	 _
 d d	 g | i	 _ t  i ƒ  } t i d
 ƒ } t  i i | d d d | ƒ } | i d ƒ } |  i | | ƒ d  S(   Ns   lxml.etree.cs
   lxml.etreeR�   R   R   i   R�   Rf   s	   lxml.htmlRy   R‘   (   R   R   R   R   R   R   R   R,   R€   R—   R$   R˜   R~   R   Rƒ   R†   R2   (	   R   t   etree_ct	   etree_extR:   R;   R™   Rp   Rš   R   (    (    s4   scripts/common/Lib/distutils/tests/test_build_ext.pyt   test_build_ext_inplaceM  s    
	c         C   s  d d k  l } d d k l } t i i |  i d ƒ } | d | g ƒ } t h d d 6| g d 6ƒ } | | ƒ } | i	 ƒ  d	 | _
 h d
 d 6| i _ d d g | i _ t i ƒ  } t i d ƒ } t i i | d
 d d | ƒ }	 | i d ƒ }
 |  i |	 |
 ƒ d  S(   Niÿÿÿÿ(   R   (   R   s   lxml.etree.cs
   lxml.etreeR�   R   R   i   R�   Rf   s	   lxml.htmlRy   R‘   (   t   setuptools_build_extR   t   setuptools_extensionR   R   R   R   R   R   R,   R€   R—   R$   R˜   R~   R   Rƒ   R†   R2   (   R   RŸ   R   Rœ   R�   R:   R;   R™   Rp   Rš   R   (    (    s4   scripts/common/Lib/distutils/tests/test_build_ext.pyt   test_setuptools_compat\  s    
	c         C   s�   t  h d d 6ƒ } t | ƒ } | i ƒ  t i d ƒ } t i i d d ƒ } | i | ƒ } t i i | i	 d d | ƒ } |  i
 | | ƒ d  S(   Nt   UpdateManagerR   Ry   t   fdsend(   R   R   R,   R   Rƒ   R   R   R   R†   R(   R2   (   R   R:   R;   Rp   t   ext_namet   ext_pathRš   (    (    s4   scripts/common/Lib/distutils/tests/test_build_ext.pyt   test_build_ext_path_with_os_sepn  s    
c         C   s•   t  i d j o d  St h d d 6ƒ } t | ƒ } | i ƒ  t i d ƒ } d } | i | ƒ } t i	 i
 | i d d | ƒ } |  i | | ƒ d  S(   Nt   win32R¢   R   Ry   s   UpdateManager/fdsendR£   (   R   RC   R   R   R,   R   Rƒ   R†   R   R   R   R(   R2   (   R   R:   R;   Rp   R¤   R¥   Rš   (    (    s4   scripts/common/Lib/distutils/tests/test_build_ext.pyt"   test_build_ext_path_cross_platformx  s    
(   t   __name__t
   __module__R   R?   RD   RN   Rd   Rq   Rs   Rv   RŽ   R›   Rž   R¡   R¦   R¨   (    (    (    s4   scripts/common/Lib/distutils/tests/test_build_ext.pyR      s   		*			?	/			A	"			
c           C   s9   t  i p t i o	 d GHn t i ƒ  St i t ƒ Sd  S(   Ns:   test_build_ext: The test must be run in a python build dir(   R   t   python_buildR   R+   t   unittestt	   TestSuitet	   makeSuiteR   (    (    (    s4   scripts/common/Lib/distutils/tests/test_build_ext.pyt
   test_suite…  s
    

	t   __main__(   R   R   R   R   R    t   distutils.coreR   R   t   distutils.command.build_extR   RX   R   t   distutils.testsR   t   distutils.errorsR   R¬   t   testR   t   FalseR.   t   TempdirManagert   LoggingSilencert   TestCaseR   R¯   R©   t   run_unittest(    (    (    s4   scripts/common/Lib/distutils/tests/test_build_ext.pyt   <module>   s&   	ÿ o	