ó
ÓnùWc           @   s¨   d  Z  d d l Z d d l Z d d l Z d d l m Z d d l m Z m Z m Z m	 Z	 d e f d „  ƒ  YZ
 d e f d „  ƒ  YZ d	 e e j f d
 „  ƒ  YZ d S(   s?   Basic http server for tests to simulate PyPI or custom indexes
iÿÿÿÿN(   t   BaseHTTPRequestHandler(   t   urllib2t   URLErrort
   HTTPServert   SimpleHTTPRequestHandlert   IndexServerc           B   sA   e  Z d  Z d e d „ Z d „  Z d „  Z d „  Z d „  Z RS(	   sY  Basic single-threaded http server simulating a package index

    You can use this server in unittest like this::
        s = IndexServer()
        s.start()
        index_url = s.base_url() + 'mytestindex'
        # do some test requests to the index
        # The index files should be located in setuptools/tests/indexes
        s.stop()
    t    i    c         C   s    t  j |  | | ƒ t |  _ d  S(   N(   R   t   __init__t   Truet   _run(   t   selft   server_addresst   RequestHandlerClass(    (    s>   /var/www/html/venv/build/setuptools/setuptools/tests/server.pyR      s    c         C   s   x |  j  r |  j ƒ  q Wd  S(   N(   R	   t   handle_request(   R
   (    (    s>   /var/www/html/venv/build/setuptools/setuptools/tests/server.pyt   serve   s    c         C   s)   t  j d |  j ƒ |  _ |  j j ƒ  d  S(   Nt   target(   t	   threadingt   ThreadR   t   threadt   start(   R
   (    (    s>   /var/www/html/venv/build/setuptools/setuptools/tests/server.pyR      s    c         C   sŽ   t  j d ƒ t |  _ d t |  ƒ } y6 t j d k rN t j | d d ƒn t j | ƒ Wn t	 k
 ro n X|  j
 j ƒ  |  j j ƒ  d S(	   s   Stop the servergš™™™™™¹?s!   http://127.0.0.1:%(server_port)s/i   i   t   timeouti   N(   i   i   (   t   timet   sleept   FalseR	   t   varst   syst   version_infoR   t   urlopenR   R   t   joint   sockett   close(   R
   t   url(    (    s>   /var/www/html/venv/build/setuptools/setuptools/tests/server.pyt   stop"   s    	c         C   s   |  j  } d | S(   Ns-   http://127.0.0.1:%s/setuptools/tests/indexes/(   t   server_port(   R
   t   port(    (    s>   /var/www/html/venv/build/setuptools/setuptools/tests/server.pyt   base_url8   s    	(   R   i    (	   t   __name__t
   __module__t   __doc__R   R   R   R   R    R#   (    (    (    s>   /var/www/html/venv/build/setuptools/setuptools/tests/server.pyR   
   s   
			t   RequestRecorderc           B   s   e  Z d  „  Z RS(   c         C   s<   t  |  j ƒ j d g  ƒ } | j |  ƒ |  j d d ƒ d  S(   Nt   requestsiÈ   t   OK(   R   t   servert
   setdefaultt   appendt   send_response(   R
   R(   (    (    s>   /var/www/html/venv/build/setuptools/setuptools/tests/server.pyt   do_GET=   s    (   R$   R%   R.   (    (    (    s>   /var/www/html/venv/build/setuptools/setuptools/tests/server.pyR'   <   s   t
   MockServerc           B   s;   e  Z d  Z d e d „ Z d „  Z d „  Z e e ƒ Z RS(   sD   
    A simple HTTP Server that records the requests made to it.
    R   i    c         C   s=   t  j |  | | ƒ t j j |  ƒ |  j t ƒ g  |  _ d  S(   N(   R   R   R   R   t	   setDaemonR   R(   (   R
   R   R   (    (    s>   /var/www/html/venv/build/setuptools/setuptools/tests/server.pyR   F   s    c         C   s   |  j  ƒ  d  S(   N(   t   serve_forever(   R
   (    (    s>   /var/www/html/venv/build/setuptools/setuptools/tests/server.pyt   runM   s    c         C   s   d t  |  ƒ S(   Ns!   http://localhost:%(server_port)s/(   R   (   R
   (    (    s>   /var/www/html/venv/build/setuptools/setuptools/tests/server.pyR   P   s    (   R   i    (   R$   R%   R&   R'   R   R2   R   t   property(    (    (    s>   /var/www/html/venv/build/setuptools/setuptools/tests/server.pyR/   B   s   		(   R&   R   R   R   t   setuptools.compatR    R   R   R   R   R   R'   R   R/   (    (    (    s>   /var/www/html/venv/build/setuptools/setuptools/tests/server.pyt   <module>   s   "2