ó
‹²,]c           @   s`  d  Z  d d l Z d d l j Z d d l Z d d l m Z d d l Z d d l m	 Z	 m
 Z
 m Z m Z m Z m Z m Z m Z m Z e j d k re j j d d ƒ rº e j d n d Z e j j e d	 ƒ Z e j j e d
 ƒ Z e j j e d d ƒ Z nˆ e j j d ƒ r'e j d Z n e j j d d ƒ Z e j j e d d d ƒ Z e j j e d d d ƒ Z e j j e d d d ƒ Z e j d „  ƒ Z e j  j! e j j d ƒ pÒe j j d d ƒ d k d d ƒd „  ƒ Z" e d d ƒ e j  j! e j j d d ƒ d k p#e j d k d d ƒd „  ƒ ƒ Z# e d d ƒ e j  j! e j j d d ƒ d k pwe j d k d d ƒd „  ƒ ƒ Z$ e j  j! e j j d d ƒ d k d d  ƒd! „  ƒ Z% e j  j! e j j d d ƒ d k d d  ƒd" „  ƒ Z& d# „  Z' d$ „  Z( d% „  Z) d& „  Z* d' „  Z+ d( „  Z, d) „  Z- d* „  Z. e/ d+ k r\e j0 ƒ  n  d S(,   s   Tests for programs.pyiÿÿÿÿN(   t   flaky(	   t   run_python_script_in_terminalt   is_python_interpretert    is_python_interpreter_valid_namet   find_programt   shell_splitt   check_versiont   is_module_installedt   get_temp_dirt   is_stable_versiont   ntt   CIt   PYTHONt    s
   python.exes   pythonw.exet   Scriptss   ipython.exet   linuxt   HOMEs   /usrt   localt	   minicondat   bint   pythont   pythonwt   ipythonc         C   s&   d } |  j  d ƒ } | j | ƒ | S(   s%   Save a basic Python script in a file.s4   with open('out.txt', 'w') as f:
    f.write('done')
s   write-done.py(   t   joint   write(   t   tmpdirt   scriptt
   scriptpath(    (    s?   lib/python2.7/site-packages/spyder/utils/tests/test_programs.pyR   *   s    t   reasonsH   It only runs in CI services and Linux does not have pythonw executables.c           C   s   t  t ƒ s t ‚ d  S(   N(   R   t   VALID_W_INTERPRETERt   AssertionError(    (    (    s?   lib/python2.7/site-packages/spyder/utils/tests/test_programs.pyt   test_is_valid_w_interpreter7   s    t   max_runsi   t   darwins$   fails in macOS and sometimes locallyc            sŠ   t  j |  j d ƒ ‰  t |  j |  j d t t d ƒ | j ‡  f d †  d d ƒt ˆ  d ƒ  } | j ƒ  } Wd QX| d k s† t	 ‚ d S(	   su   
    Test running a Python script in an external terminal when specifying
    explicitely the working directory.
    s   out.txtR   c              s   t  j ˆ  ƒ S(   N(   t   ospt   exists(    (   t   outfilepath(    s?   lib/python2.7/site-packages/spyder/utils/tests/test_programs.pyt   <lambda>L   R   t   timeoutiè  t   rNt   done(
   R"   R   t   dirnameR   t   strpatht   Falset	   waitUntilt   opent   readR   (   R   t   qtbott   txtfilet   res(    (   R$   s?   lib/python2.7/site-packages/spyder/utils/tests/test_programs.pyt"   test_run_python_script_in_terminal?   s    
c            sŠ   t  j t j ƒ  d ƒ ‰  t |  j d d t t d ƒ | j ‡  f d †  d d ƒt ˆ  d ƒ  } | j	 ƒ  } Wd QX| d k s† t
 ‚ d S(	   sl   
    Test running a Python script in an external terminal without specifying
    the working directory.
    s   out.txtR   c              s   t  j ˆ  ƒ S(   N(   R"   R#   (    (   R$   (    s?   lib/python2.7/site-packages/spyder/utils/tests/test_programs.pyR%   `   R   R&   iè  R'   NR(   (   R"   R   t   ost   getcwdR   R*   R+   R,   R-   R.   R   (   R   R/   R0   R1   (    (   R$   s?   lib/python2.7/site-packages/spyder/utils/tests/test_programs.pyt2   test_run_python_script_in_terminal_with_wdir_emptyT   s    
s   It only runs in CI services.c           C   s   t  t ƒ s t ‚ d  S(   N(   R   t   VALID_INTERPRETERR   (    (    (    s?   lib/python2.7/site-packages/spyder/utils/tests/test_programs.pyt   test_is_valid_interpreterh   s    c           C   s   t  t ƒ s t ‚ d  S(   N(   R   t   INVALID_INTERPRETERR   (    (    (    s?   lib/python2.7/site-packages/spyder/utils/tests/test_programs.pyt   test_is_invalid_interpretern   s    c          C   sG   d d d d d d g }  t  g  |  D] } t | ƒ ^ q" ƒ sC t ‚ d  S(   NR   R   s	   python2.7s	   python3.5s
   python.exes   pythonw.exe(   t   allR   R   (   t   namest   n(    (    s?   lib/python2.7/site-packages/spyder/utils/tests/test_programs.pyt   test_is_valid_interpreter_namet   s    c           C   s   t  d ƒ s t ‚ d S(   s   Test if can find the program.t   gitN(   R   R   (    (    (    s?   lib/python2.7/site-packages/spyder/utils/tests/test_programs.pyt   test_find_programx   s    c           C   sI   t  d ƒ d d d g k s! t ‚ t  d ƒ d d d d g k sE t ‚ d S(   s6   Test if the text can be split using shell-like sintax.s   -q -o -as   -qs   -os   -as"   -q "d:\Python de xxxx\t.txt" -o -as   d:\Python de xxxx\t.txtN(   R   R   (    (    (    s?   lib/python2.7/site-packages/spyder/utils/tests/test_programs.pyt   test_shell_split|   s    !	c           C   sL   t  d d d ƒ s t ‚ t  d d d ƒ s0 t ‚ t  d d d	 ƒ sH t ‚ d
 S(   s'   Test the compare function for versions.s   0.9.4-1s   0.9.4s   >=s   3.0.0rc1s   3.0.0t   <s   1.0s   1.0b2t   >N(   R   R   (    (    (    s?   lib/python2.7/site-packages/spyder/utils/tests/test_programs.pyt   test_check_version‚   s    c           C   sD   t  d d ƒ s t ‚ t  d d ƒ s+ t ‚ t  d d ƒ s@ t ‚ d S(   s5   Test if a module with the proper version is installedt	   qtconsoles   >=4.0t   IPythons
   >=1.0;<3.0t   jedis   >=0.7.0N(   R   R   (    (    (    s?   lib/python2.7/site-packages/spyder/utils/tests/test_programs.pyt   test_is_module_installedˆ   s    c          C   s_   t  j }  t d d d |  ƒs$ t ‚ t d d d |  ƒs@ t ‚ t d d d |  ƒs[ t ‚ d S(	   s5   Test if a module with the proper version is installedRD   s   >=4.0t   interpreterRE   s
   >=1.0;<3.0RF   s   >=0.7.0N(   t   syst
   executableR   R   (   t   current(    (    s?   lib/python2.7/site-packages/spyder/utils/tests/test_programs.pyt0   test_is_module_installed_with_custom_interpreter   s    	c          C   sq   t  d d ƒ }  t j j |  ƒ s' t ‚ t j |  ƒ t  d d ƒ } t j j | ƒ s[ t ‚ | |  k sm t ‚ d S(   sN   Test that the call to get_temp_dir creates the dir when it doesn't exists
    t   suffixt   testN(   R   R3   t   pathR#   R   t   rmdir(   t   temp_dirt   another_call(    (    s?   lib/python2.7/site-packages/spyder/utils/tests/test_programs.pyt#   test_get_temp_dir_ensure_dir_exists—   s    c           C   s<   t  d ƒ s t ‚ t  d ƒ s% t ‚ t  d ƒ s8 t ‚ d S(   s   Test for is_stable_version.s   3.3.0s   4.0.0b1s
   3.3.2.dev0N(   R	   R   (    (    (    s?   lib/python2.7/site-packages/spyder/utils/tests/test_programs.pyt   test_is_stable_version¥   s    t   __main__(1   t   __doc__R3   t   os.pathRO   R"   RI   R    t   pytestt   spyder.utils.programsR   R   R   R   R   R   R   R   R	   t   namet   environt   gett   Nonet
   python_dirR   R6   R   R8   t   platformt
   startswitht   home_dirt   fixtureR   t   markt   skipifR   R2   R5   R7   R9   R=   R?   R@   RC   RG   RL   RS   RT   t   __name__t   main(    (    (    s?   lib/python2.7/site-packages/spyder/utils/tests/test_programs.pyt   <module>   sV   @(	*	*$$								