ó
ú2¢\c           @   s)  d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l m Z d  d l Z d  d l m Z d  d l	 Z	 d  d l
 m Z d  d l m Z m Z m Z d d l m Z e j j Z d „  Z e j d	 d
 ƒ d „  ƒ Z d „  Z e j d	 d
 ƒ d „  ƒ Z e j d	 d ƒ d „  ƒ Z e j d „  ƒ Z d S(   iÿÿÿÿN(   t   Popen(   t   TemporaryDirectory(   t   urljoin(   t   Firefoxt   Remotet   Chromei   (   t   Notebookc         C   s§   x‘ t  d ƒ D]ƒ } |  j ƒ  d k	 r4 t d ƒ ‚ n  t j j | ƒ rƒ y& t | ƒ  } t j	 | ƒ SWd QXWqƒ t
 k
 r qƒ Xn  t j d ƒ q Wt d | ƒ ‚ d S(   s0   Wait 30 seconds for the notebook server to starti,  s   Notebook server failed to startNgš™™™™™¹?s   Didn't find %s in 30 seconds(   t   ranget   pollt   Nonet   RuntimeErrort   ost   patht   existst   opent   jsont   loadt
   ValueErrort   timet   sleep(   t   proct   info_file_patht   it   f(    (    s?   lib/python2.7/site-packages/notebook/tests/selenium/conftest.pyt   _wait_for_server   s    t   scopet   sessionc          c   sv  i  }  t  ƒ  2} t | d ƒ } |  d <t j t | d d ƒ ƒ t j t | d d ƒ ƒ i t | d ƒ d 6t | d	 ƒ d
 6t | d ƒ d 6|  d <t j j ƒ  } | j |  d ƒ t j d d d d | d g } d | f GHt	 | d | d | ƒ} |  d <t | d	 d | j
 ƒ } |  j t | | ƒ ƒ d |  f GH|  VWd  QXt j t |  d d ƒ d i d |  d d 6ƒd  S(   Nt	   notebookst   nbdiru   sub Ã¢ÂˆÂ‚ir1u   sub Ã¢ÂˆÂ‚ir 1au   sub Ã¢ÂˆÂ‚ir2u   sub Ã¢ÂˆÂ‚ir 1bt   jupyter_configt   JUPYTER_CONFIG_DIRt   jupyter_runtimet   JUPYTER_RUNTIME_DIRt   ipythont
   IPYTHONDIRt	   extra_envs   -mt   notebooks   --no-browsers   --notebook-dirs   --NotebookApp.base_url=/a@b/s   command=t   cwdt   envt   popens   nbserver-%i.jsons   Notebook server info:t   urls   api/shutdownt   headerss   token t   tokent   Authorization(   R   t   pjoinR   t   makedirst   environt   copyt   updatet   syst
   executableR    t   pidR   t   requestst   postR   (   t   infot   tdR   R&   t   commandR   R   (    (    s?   lib/python2.7/site-packages/notebook/tests/selenium/conftest.pyt   notebook_server"   s0    	 	c          C   s»   t  j d }  t  j d } i t  j d d 6t  j d d 6t  j d d g d	 6d
 d 6t  j d d 6d d 6} | d d k r‰ d | d <n  d |  | f } d GHt d | d d | ƒ } | S(   s¡   This function helps travis create a driver on Sauce Labs.

    This function will err if used without specifying the variables expected
    in that context.
    t   SAUCE_USERNAMEt   SAUCE_ACCESS_KEYt   TRAVIS_JOB_NUMBERs   tunnel-identifiert   TRAVIS_BUILD_NUMBERt   buildt   TRAVIS_PYTHON_VERSIONt   CIt   tagss
   Windows 10t   platformt   JUPYTER_TEST_BROWSERt   browserNamet   latestt   versiont   firefoxs   57.0s   %s:%s@localhost:4445s&   Connecting remote driver on Sauce Labst   desired_capabilitiest   command_executors   http://%s/wd/hub(   R   R.   R   (   t   usernamet
   access_keyt   capabilitiest   hub_urlt   driver(    (    s?   lib/python2.7/site-packages/notebook/tests/selenium/conftest.pyt   make_sauce_driverG   s     
c          c   s^   t  j j d ƒ r t ƒ  }  n- t  j j d ƒ d k rB t ƒ  }  n	 t ƒ  }  |  V|  j ƒ  d  S(   NR:   RC   t   chrome(   R   R.   t   getRO   R   R   t   quit(   RN   (    (    s?   lib/python2.7/site-packages/notebook/tests/selenium/conftest.pyt   selenium_driverb   s    	t   modulec         C   s#   | |  _  |  j d j |   ƒ |  S(   Ns   {url}?token={token}(   t   jupyter_server_infoRQ   t   format(   RS   R9   (    (    s?   lib/python2.7/site-packages/notebook/tests/selenium/conftest.pyt   authenticated_browserq   s    	c         C   s   t  j |  ƒ S(   N(   R   t   new_notebook(   RW   (    (    s?   lib/python2.7/site-packages/notebook/tests/selenium/conftest.pyR$   w   s    (   R   R   t   pytestR4   t
   subprocessR    R1   t   testpath.tempdirR   R   t   urllib.parseR   t   selenium.webdriverR   R   R   t   utilsR   R   t   joinR,   R   t   fixtureR9   RO   RS   RW   R$   (    (    (    s?   lib/python2.7/site-packages/notebook/tests/selenium/conftest.pyt   <module>   s"   	%	