
ˆ`@_è  ã               @   sì   d  d l  m Z d  d l m Z d  d l Z d  d l m Z d  d l m Z d  d l	 m
 Z
 m Z m Z m Z m Z m Z m Z m Z d  d l m Z d  d l m Z Gd	 d
 „  d
 e ƒ Z Gd d „  d e ƒ Z Gd d „  d e ƒ Z d S)é    )ÚDistutilsOptionError)Ú
TestLoaderN)Úsix)Úmap)Úresource_listdirÚresource_existsÚnormalize_pathÚworking_setÚ_namespace_packagesÚadd_activation_listenerÚrequireÚ
EntryPoint)ÚCommand)Úunittest_mainc               @   s   e  Z d  Z d d d „ Z d S)ÚScanningLoaderNc             C   s  g  } | j  t j |  | ƒ ƒ t | d ƒ rA | j  | j ƒ  ƒ t | d ƒ ré x– t | j d ƒ D]‚ } | j d ƒ r¢ | d k r¢ | j d | d d … } n- t | j | d	 ƒ rc | j d | } n qc | j  |  j	 | ƒ ƒ qc Wt
 | ƒ d
 k r|  j | ƒ S| d Sd S)a  Return a suite of all tests cases contained in the given module

        If the module is a package, load tests from all the modules in it.
        If the module has an ``additional_tests`` function, call it and add
        the return value to the tests.
        Úadditional_testsÚ__path__Ú z.pyz__init__.pyÚ.Né   z/__init__.pyé   r   éýÿÿÿ)Úappendr   ÚloadTestsFromModuleÚhasattrr   r   Ú__name__Úendswithr   ZloadTestsFromNameÚlenZ
suiteClass)ÚselfÚmoduleÚpatternÚtestsÚfileÚ	submodule© r$   ú=/tmp/pip-build-tw3_dw7d/setuptools/setuptools/command/test.pyr      s    z"ScanningLoader.loadTestsFromModule)r   Ú
__module__Ú__qualname__r   r$   r$   r$   r%   r      s   r   c               @   s+   e  Z d  Z d d „  Z d d d „ Z d S)ÚNonDataPropertyc             C   s   | |  _  d  S)N)Úfget)r   r)   r$   r$   r%   Ú__init__0   s    zNonDataProperty.__init__Nc             C   s   | d  k r |  S|  j  | ƒ S)N)r)   )r   ÚobjZobjtyper$   r$   r%   Ú__get__3   s    zNonDataProperty.__get__)r   r&   r'   r*   r,   r$   r$   r$   r%   r(   /   s   r(   c               @   s©   e  Z d  Z d Z d Z d d  d! g Z d d „  Z d d „  Z e d d „  ƒ Z	 d d „  Z
 d d „  Z d d „  Z d d „  Z e d d „  ƒ Z e d d „  ƒ Z d S)"Útestz.Command to run unit tests after in-place buildz#run unit tests after in-place buildútest-module=Úmú$Run 'test_suite' in specified moduleútest-suite=Úsú1Test suite to run (e.g. 'some_module.test_suite')útest-runner=ÚrúTest runner to usec             C   s(   d  |  _  d  |  _ d  |  _ d  |  _ d  S)N)Ú
test_suiteÚtest_moduleÚtest_loaderÚtest_runner)r   r$   r$   r%   Úinitialize_optionsE   s    			ztest.initialize_optionsc             C   sÎ   |  j  r$ |  j r$ d } t | ƒ ‚ |  j  d  k rd |  j d  k rT |  j j  |  _  n |  j d |  _  |  j d  k r‹ t |  j d d  ƒ |  _ |  j d  k r£ d |  _ |  j d  k rÊ t |  j d d  ƒ |  _ d  S)Nz1You may specify a module or a suite, but not bothz.test_suiter9   z&setuptools.command.test:ScanningLoaderr:   )r7   r8   r   Údistributionr9   Úgetattrr:   )r   Úmsgr$   r$   r%   Úfinalize_optionsK   s    	ztest.finalize_optionsc             C   s   t  |  j ƒ  ƒ S)N)ÚlistÚ
_test_args)r   r$   r$   r%   Ú	test_args^   s    ztest.test_argsc             c   s#   |  j  r d V|  j r |  j Vd  S)Nz	--verbose)Úverboser7   )r   r$   r$   r%   rA   b   s    		ztest._test_argsc             C   s   t  j o t |  j d d ƒ } | r¥ |  j d d d ƒ|  j d ƒ |  j d ƒ } t | j ƒ } |  j d d | ƒ|  j d ƒ |  j d d d ƒ|  j d ƒ n- |  j d ƒ |  j d d d	 ƒ|  j d ƒ |  j d ƒ } t	 j
 d  d  … } t	 j j ƒ  } z[ t	 j
 j d t | j ƒ ƒ t j ƒ  t d
 d „  ƒ t d | j | j f ƒ | ƒ  Wd  | t	 j
 d  d  … <t	 j j ƒ  t	 j j | ƒ t j ƒ  Xd  S)NÚuse_2to3FÚbuild_pyZinplacer   Úegg_infoÚegg_baseÚ	build_extr   c             S   s
   |  j  ƒ  S)N)Úactivate)Údistr$   r$   r%   Ú<lambda>Š   s    z/test.with_project_on_sys_path.<locals>.<lambda>z%s==%s)r   ÚPY3r=   r<   Úreinitialize_commandÚrun_commandÚget_finalized_commandr   Ú	build_libÚsysÚpathÚmodulesÚcopyÚinsertrG   r	   r*   r   r   Úegg_nameZegg_versionÚclearÚupdate)r   ÚfuncZ	with_2to3Zbpy_cmdZ
build_pathZei_cmdZold_pathZold_modulesr$   r$   r%   Úwith_project_on_sys_pathh   s4    
ztest.with_project_on_sys_pathc             C   s˜   |  j  j r" |  j  j |  j  j ƒ |  j  j rD |  j  j |  j  j ƒ d j |  j ƒ } |  j rs |  j d | ƒ n! |  j d | ƒ |  j |  j	 ƒ d  S)Nú zskipping "%s" (dry run)zrunning "%s")
r<   Zinstall_requiresZfetch_build_eggsZtests_requireÚjoinÚ_argvÚdry_runÚannouncerZ   Ú	run_tests)r   Úcmdr$   r$   r%   Úrun“   s    		ztest.runc          	   C   sð   t  j rµ t |  j d d ƒ rµ |  j j d ƒ d } | t k rµ g  } | t j k rb | j	 | ƒ | d 7} x- t j D]" } | j
 | ƒ rv | j	 | ƒ qv Wt t t j j | ƒ ƒ t d  d  |  j d |  j |  j ƒ d |  j |  j ƒ ƒd  S)NrD   Fr   r   Z
testLoaderZ
testRunner)r   rL   r=   r<   r7   Úsplitr
   rQ   rS   r   Ú
startswithr@   r   Ú__delitem__r   r]   Ú_resolve_as_epr9   r:   )r   r   Zdel_modulesÚnamer$   r$   r%   r`   ¡   s    
ztest.run_testsc             C   s   d g |  j  S)NÚunittest)rB   )r   r$   r$   r%   r]   ·   s    z
test._argvc             C   s0   |  d k r d St  j d |  ƒ } | j ƒ  ƒ  S)zu
        Load the indicated attribute value, called, as a as if it were
        specified as an entry point.
        Nzx=)r   ÚparseÚresolve)ÚvalÚparsedr$   r$   r%   rf   »   s    ztest._resolve_as_epN)r.   r/   r0   )r1   r2   r3   )r4   r5   r6   )r   r&   r'   Ú__doc__ÚdescriptionÚuser_optionsr;   r?   r(   rB   rA   rZ   rb   r`   Úpropertyr]   Ústaticmethodrf   r$   r$   r$   r%   r-   9   s    	+r-   )Zdistutils.errorsr   rh   r   rQ   Zsetuptools.externr   Zsetuptools.extern.six.movesr   Úpkg_resourcesr   r   r   r	   r
   r   r   r   Ú
setuptoolsr   Zsetuptools.py31compatr   r   Úobjectr(   r-   r$   r$   r$   r%   Ú<module>   s   : 
