ó
`¾Tc           @   sP  d  Z  d d l Z d d l Z y d d l Z Wn! e k
 rQ d d l m Z n Xy d d l m Z m	 Z	 Wn1 e k
 rŸ d d l
 m Z d d l m	 Z	 n Xd d l Z d d l m Z d d l m Z d d	 l m Z m Z d d
 l m Z d d l m Z d d l m Z e j Z d „  Z d „  Z d e f d „  ƒ  YZ d „  Z  d S(   s·   
    werkzeug.testsuite.serving
    ~~~~~~~~~~~~~~~~~~~~~~~~~~

    Added serving tests.

    :copyright: (c) 2014 by Armin Ronacher.
    :license: BSD, see LICENSE for more details.
iÿÿÿÿN(   t   client(   t   urlopent	   HTTPError(   R   (   R   (   t   update_wrapper(   t   WerkzeugTestCase(   t   __version__t   serving(   t   test_app(   t   StringIO(   t   Threadc            s   ‡  f d †  } t  | ˆ  ƒ S(   Nc             s7   t  j } t ƒ  t  _ z ˆ  |  | Ž  SWd  | t  _ Xd  S(   N(   t   syst   stderrR   (   t   argst   kwargst
   old_stderr(   t   f(    s`   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/serving.pyt   new_func'   s
    	(   R   (   R   R   (    (   R   s`   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/serving.pyt   silencestderr&   s    c            sÍ   g  ‰  ‡  f d †  } | t  _ zI t d t  j d d d |  f ƒ } | j t ƒ | j ƒ  t j d ƒ Wd  t	 t  _ Xˆ  s~ d Sˆ  \ } | j j ƒ  d  \ } } d | k r¹ d	 | } n  | d
 | | f f S(   Nc             s    t  |  | Ž  } ˆ  j | ƒ | S(   N(   t   real_make_servert   append(   R   R   t   srv(   t   servers(    s`   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/serving.pyt   tracking_make_server4   s    t   targetR   t	   localhosti    g      Ð?i   t   :s   [%s]s   %s:%d(   NN(   R   t   make_serverR	   t
   run_simplet	   setDaemont   Truet   startt   timet   sleepR   t   Nonet   sockett   getsockname(   t   applicationR   t   tt   servert   ipt   port(    (   R   s`   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/serving.pyt   run_dev_server1   s"    	

	t   ServingTestCasec           B   s5   e  Z e d  „  ƒ Z e d „  ƒ Z e d „  ƒ Z RS(   c         C   si   t  t ƒ \ } } t d | ƒ j ƒ  } |  j d | ƒ |  j d | ƒ |  j d t j d ƒ | ƒ d  S(   Ns   http://%s/?foo=bar&baz=blahs   WSGI Informations   foo=bar&amp;baz=blahs	   Werkzeug/t   ascii(   R)   R   R   t   readt	   assert_int   versiont   encode(   t   selfR&   t   addrt   rv(    (    s`   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/serving.pyt   test_servingL   s
    c         C   s}   d „  } t  | ƒ \ } } y t d | ƒ j ƒ  Wn1 t k
 rf } | j ƒ  } d | k sy t ‚ n Xt sy t d ƒ ‚ d  S(   Nc         S   s   d d d  S(   Ni   i    (    (   t   environt   start_response(    (    s`   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/serving.pyt
   broken_appV   s    s   http://%s/?foo=bar&baz=blahs   Internal Server Errors   expected internal server error(   R)   R   R,   R   t   AssertionErrort   False(   R0   R6   R&   R1   t   eR2   (    (    s`   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/serving.pyt   test_broken_appT   s    	c            sh   ‡  f d †  } t  | ƒ \ } ‰  t j ˆ  ƒ } | j d d ƒ | j ƒ  } | j ƒ  d k sd t ‚ d  S(   Nc            sf   |  d d k s t  ‚ |  d d k s, t  ‚ |  d ˆ  j d ƒ d k sO t  ‚ | d d g ƒ d g S(   Nt	   HTTP_HOSTs"   surelynotexisting.example.com:1337t	   PATH_INFOs
   /index.htmt   SERVER_PORTR   i   s   200 OKs   Content-Types	   text/htmlt   YES(   s   Content-Types	   text/html(   R7   t   split(   R4   R5   (   R1   (    s`   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/serving.pyt   asserting_appd   s
    #t   GETs3   http://surelynotexisting.example.com:1337/index.htmR>   (   R)   t   httplibt   HTTPConnectiont   requestt   getresponseR,   R7   (   R0   R@   R&   t   connt   res(    (   R1   s`   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/serving.pyt   test_absolute_requestsb   s    (   t   __name__t
   __module__R   R3   R:   RH   (    (    (    s`   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/serving.pyR*   J   s   c          C   s&   t  j ƒ  }  |  j t  j t ƒ ƒ |  S(   N(   t   unittestt	   TestSuitet   addTestt	   makeSuiteR*   (   t   suite(    (    s`   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/serving.pyRO   r   s    (!   t   __doc__R
   R   RB   t   ImportErrort   httpR    t   urllib2R   R   t   urllib.requestt   urllib.errorRK   t	   functoolsR   t   werkzeug.testsuiteR   t   werkzeugR   R.   R   t   werkzeug.testappR   t   werkzeug._compatR   t	   threadingR	   R   R   R   R)   R*   RO   (    (    (    s`   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/serving.pyt   <module>
   s.   			(