ó
`¾Tc           @  sG  d  Z  d d l m Z d d l Z d d l Z d d l Z d d l Z d 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 m Z d „  Z d	 „  Z d
 „  Z e d „  ƒ Z e d „  ƒ Z d „  Z d e j f d „  ƒ  YZ d e f d „  ƒ  YZ d e j f d „  ƒ  YZ d „  Z d „  Z d „  Z  d S(   sâ   
    flask.testsuite
    ~~~~~~~~~~~~~~~

    Tests Flask itself.  The majority of Flask is already tested
    as part of Werkzeug.

    :copyright: (c) 2011 by Armin Ronacher.
    :license: BSD, see LICENSE for more details.
iÿÿÿÿ(   t   print_functionN(   t   update_wrapper(   t   contextmanager(   t   import_stringt   find_modules(   t   reraiset   StringIOc         C  sp   t  j j |  ƒ s! t d ƒ ‚ n  d „  } g  t j D] } | |  | ƒ s4 | ^ q4 t j (t j j d |  ƒ d S(   s™   Adds an entry to sys.path if it's not already there.  This does
    not append it but moves it to the front so that we can be sure it
    is loaded.
    s   Tried to add nonexisting pathc         S  sI   |  | k r t  Sy t j j |  | ƒ SWn t t t f k
 rD t SXd  S(   N(   t   Truet   ost   patht   samefilet   IOErrort   OSErrort   AttributeErrort   False(   t   xt   y(    (    s^   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/flask/testsuite/__init__.pyt	   _samefile"   s    i    N(   R   R	   t   isdirt   RuntimeErrort   syst   insert(   R	   R   R   (    (    s^   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/flask/testsuite/__init__.pyt   add_to_path   s
    	/c          c  sD   x= t  t ƒ D]/ }  t |  ƒ } t | d ƒ r | j ƒ  Vq q Wd S(   s   Yields all testsuites.t   suiteN(   R   t   __name__R   t   hasattrR   (   t   modulet   mod(    (    s^   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/flask/testsuite/__init__.pyt   iter_suites.   s    c         c  sr   |  g } xb | rm | j  ƒ  } y | j | ƒ Wq t k
 ri | d | j j | j j | j f f Vq Xq Wd S(   s8   Yields all the tests and their names from a given suite.s   %s.%s.%sN(   t   popt   extendt	   TypeErrort	   __class__t
   __module__R   t   _testMethodName(   R   t   suitest   s(    (    s^   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/flask/testsuite/__init__.pyt   find_all_tests6   s    				c          #  sv   t  j d d t ƒt  j }  |  t  _ t  j } g  ‰  d d ‡  f d † } z | t  _ ˆ  VWd |  t  _ | t  _ Xd S(   s(   Catch warnings in a with block in a listt   defaultt   categoryc           s   ˆ  j  t ƒ  ƒ d  S(   N(   t   appendt   locals(   t   messageR'   t   filenamet   linenot   filet   line(   t   log(    s^   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/flask/testsuite/__init__.pyt   showwarningO   s    N(   t   warningst   simplefiltert   DeprecationWarningt   filtersR0   t   None(   R4   t   old_showwarningR0   (    (   R/   s^   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/flask/testsuite/__init__.pyt   catch_warningsE   s    	
				c          c  s3   t  j }  t ƒ  t  _ } z	 | VWd |  t  _ Xd S(   s   Catch stderr in a StringION(   R   t   stderrR   (   t
   old_stderrt   rv(    (    s^   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/flask/testsuite/__init__.pyt   catch_stderrY   s
    		c           s   ‡  f d †  } t  | ˆ  ƒ S(   Nc      
     sa   t  ƒ  R } ˆ  |  | | Ž |  j | d ƒ x( | D]  } |  j d t | d ƒ ƒ q3 WWd  QXd  S(   Ns   expected deprecation warnings   Modules are deprecatedR*   (   R7   t   assert_truet	   assert_int   str(   t   selft   argst   kwargsR/   t   entry(   t   f(    s^   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/flask/testsuite/__init__.pyt   new_fe   s
    (   R   (   RC   RD   (    (   RC   s^   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/flask/testsuite/__init__.pyt    emits_module_deprecation_warningd   s    t   FlaskTestCasec           B  s¢   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d d „ Z
 d d „ Z d d	 „ Z d
 „  Z d „  Z e j d  d k r  d „  Z d „  Z n  RS(   s™   Baseclass for all the tests that Flask uses.  Use these methods
    for testing instead of the camelcased ones in the baseclass for
    consistency.
    c         C  sI   g  } x, t  j j d  k	 r4 | j t  j j ƒ  ƒ q	 W|  j | g  ƒ d  S(   N(   t   flaskt   _request_ctx_stackt   topR5   R(   R   t   assert_equal(   R?   t   leaks(    (    s^   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/flask/testsuite/__init__.pyt   ensure_clean_request_contextt   s    c         C  s   d  S(   N(    (   R?   (    (    s^   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/flask/testsuite/__init__.pyt   setup|   s    c         C  s   d  S(   N(    (   R?   (    (    s^   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/flask/testsuite/__init__.pyt   teardown   s    c         C  s   |  j  ƒ  d  S(   N(   RM   (   R?   (    (    s^   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/flask/testsuite/__init__.pyt   setUp‚   s    c         C  s(   t  j j |  ƒ |  j ƒ  |  j ƒ  d  S(   N(   t   unittestt   TestCaset   tearDownRL   RN   (   R?   (    (    s^   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/flask/testsuite/__init__.pyRR   …   s    
c         C  s   |  j  | | ƒ S(   N(   t   assertEqual(   R?   R   R   (    (    s^   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/flask/testsuite/__init__.pyRJ   Š   s    c         O  s=   t  |  | ƒ } | d  k r | S|  | | | Ž  Wd  QXd  S(   N(   t   _ExceptionCatcherR5   (   R?   t   exc_typet   callableR@   RA   t   catcher(    (    s^   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/flask/testsuite/__init__.pyt   assert_raises   s
    c         C  s   |  j  | | ƒ d  S(   N(   t
   assertTrue(   R?   R   t   msg(    (    s^   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/flask/testsuite/__init__.pyR<   ”   s    c         C  s   |  j  | | ƒ d  S(   N(   t   assertFalse(   R?   R   RZ   (    (    s^   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/flask/testsuite/__init__.pyt   assert_false—   s    c         C  s   |  j  | | ƒ d  S(   N(   t   assertIn(   R?   R   R   (    (    s^   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/flask/testsuite/__init__.pyR=   š   s    c         C  s   |  j  | | ƒ d  S(   N(   t   assertNotIn(   R?   R   R   (    (    s^   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/flask/testsuite/__init__.pyt   assert_not_in   s    i   i   c         C  s&   | | k s" t  d | | f ƒ ‚ d  S(   Ns   %r unexpectedly not in %r(   t   AssertionError(   R?   R   R   (    (    s^   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/flask/testsuite/__init__.pyR]   ¡   s    c         C  s&   | | k s" t  d | | f ƒ ‚ d  S(   Ns   %r unexpectedly in %r(   R`   (   R?   R   R   (    (    s^   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/flask/testsuite/__init__.pyR^   ¤   s    N(   i   i   (   R   R!   t   __doc__RL   RM   RN   RO   RR   RJ   R5   RX   R<   R\   R=   R_   R   t   version_infoR]   R^   (    (    (    s^   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/flask/testsuite/__init__.pyRF   n   s   									RT   c           B  s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C  s   | |  _  | |  _ d  S(   N(   t	   test_caseRU   (   R?   Rc   RU   (    (    s^   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/flask/testsuite/__init__.pyt   __init__ª   s    	c         C  s   |  S(   N(    (   R?   (    (    s^   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/flask/testsuite/__init__.pyt	   __enter__®   s    c         C  sX   |  j  j } | d  k r/ |  j j d | ƒ n% t | |  j  ƒ sT t | | | ƒ n  t S(   Ns   Expected exception of type %r(   RU   R   R5   Rc   t   failt
   issubclassR   R   (   R?   RU   t	   exc_valuet   tbt   exception_name(    (    s^   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/flask/testsuite/__init__.pyt   __exit__±   s    (   R   R!   Rd   Re   Rk   (    (    (    s^   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/flask/testsuite/__init__.pyRT   ¨   s   		t   BetterLoaderc           B  s#   e  Z d  Z d „  Z d d „ Z RS(   s~  A nicer loader that solves two problems.  First of all we are setting
    up tests from different sources and we're doing this programmatically
    which breaks the default loading logic so this is required anyways.
    Secondly this loader has a nicer interpolation for test names than the
    default one so you can just do ``run-tests.py ViewTestCase`` and it
    will work.
    c         C  s   t  ƒ  S(   N(   R   (   R?   (    (    s^   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/flask/testsuite/__init__.pyt   getRootSuiteÄ   s    c   	      C  sö   |  j  ƒ  } | d k r | Sg  } xp t | ƒ D]b \ } } | | k s | j d | ƒ s d | d | k s | j | d ƒ r/ | j | ƒ q/ q/ W| s® t d | ƒ ‚ n  t | ƒ d k rÈ | d St j ƒ  } x | D] } | j	 | ƒ qÛ W| S(   NR   t   .s!   could not find test case for "%s"i   i    (
   Rm   R%   t   endswitht
   startswithR(   t   LookupErrort   lenRP   t	   TestSuitet   addTest(	   R?   t   nameR   t   roott	   all_testst   testcaset   testnameR:   t   test(    (    s^   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/flask/testsuite/__init__.pyt   loadTestsFromNameÇ   s$    N(   R   R!   Ra   Rm   R5   R{   (    (    (    s^   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/flask/testsuite/__init__.pyRl   »   s   	c           C  s5   t  t j j t j j t j j t ƒ d ƒ ƒ ƒ d  S(   Nt	   test_apps(   R   R   R	   t   abspatht   joint   dirnamet   __file__(    (    (    s^   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/flask/testsuite/__init__.pyt
   setup_pathß   s    c          C  s8   t  ƒ  t j ƒ  }  x t ƒ  D] } |  j | ƒ q W|  S(   sÐ   A testsuite that has all the Flask tests.  You can use this
    function to integrate the Flask tests into your own testsuite
    in case you want to test that monkeypatches to Flask do not
    break it.
    (   R   RP   Rs   R   Rt   (   R   t   other_suite(    (    s^   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/flask/testsuite/__init__.pyR   ä   s
    c          C  sE   y t  j d t ƒ  d d ƒ Wn! t k
 r@ }  t d |  ƒ n Xd S(   s/   Runs the testsuite as command line application.t
   testLoadert   defaultTestR   s	   Error: %sN(   RP   t   mainRl   t	   Exceptiont   print(   t   e(    (    s^   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/flask/testsuite/__init__.pyR…   ñ   s    (!   Ra   t
   __future__R    R   R   RG   R1   RP   t	   functoolsR   t
   contextlibR   t   werkzeug.utilsR   R   t   flask._compatR   R   R   R   R%   R7   R;   RE   RQ   RF   t   objectRT   t
   TestLoaderRl   R   R   R…   (    (    (    s^   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/flask/testsuite/__init__.pyt   <module>   s,   				
:$		