
^Yc           @   s0  d  d l  Z  d  d l Z d  d l m Z d  d l m Z m Z m Z d  d l	 m
 Z d  d l m
 Z d  d l m
 Z d  d l m Z m Z y e  j e Z Wn e k
 r e Z n Xd e f d     YZ d e f d	     YZ
 d
 e e f d     YZ d e e f d     YZ d e e f d     YZ d S(   iN(   t   messages(   t   DoctestScopet   FunctionScopet   ModuleScope(   t   Test(   t   TestCaset   skipt   _DoctestMixinc           B   s    e  Z e Z d    Z d   Z RS(   c         C   s   g  } x t  j |  j   D] } | j   d k r7 nq | j d  s | j d  s | j d  s | j d  s | j d  s | j d  r d | } n
 d	 | } | j |  q Wt  j d
  } | d j |  S(   Nt    t    s   except:s   except s   finally:s   else:s   elif s   ... %ss   >>> %sso               def doctest_something():
                """
                   %s
                """
            s   
       (   t   textwrapt   dedentt
   splitlinest   stript
   startswitht   appendt   join(   t   selft   inputt   linest   linet   doctestificator(    (    s=   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/test/test_doctests.pyt
   doctestify   s     
	c         O   s%   t  t |   j |  j |  | |  S(   N(   t   superR   t   flakesR   (   R   R   t   argst   kw(    (    s=   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/test/test_doctests.pyR   1   s    (   t   __name__t
   __module__t   Truet   withDoctestR   R   (    (    (    s=   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/test/test_doctests.pyR      s   	R   c           B   s   e  Z e Z d    Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d   Z e d  d	    Z d
   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   c   	      C   sn  |  j  d  } | j } g  | D] } | j t k r | ^ q } g  | D] } | j t k rG | ^ qG } g  | D] } | j t k ro | ^ qo } |  j t |  d  |  j t |  d  | d } | d } |  j | t  |  j | t  |  j	 | t  |  j	 | t  |  j
 d |  |  j
 d |  |  j
 d |  |  j t |  d  |  j
 d | d  d S(	   s-   Check that a doctest is given a DoctestScope.s   
        m = None

        def doctest_stuff():
            '''
                >>> d = doctest_stuff()
            '''
            f = m
            return f
        i   i    t   mt   doctest_stufft   dt   fN(   R   t
   deadScopest	   __class__R   R   R   t   assertEqualt   lent   assertIsInstancet   assertNotIsInstancet   assertIn(	   R   t   checkert   scopest   scopet   module_scopest   doctest_scopest   function_scopest   module_scopet   doctest_scope(    (    s=   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/test/test_doctests.pyt   test_scope_class9   s&    			(((

c   	      C   sB  |  j  d  } | j } g  | D] } | j t k r | ^ q } g  | D] } | j t k rG | ^ qG } g  | D] } | j t k ro | ^ qo } |  j t |  d  |  j t |  d  | d } | d } |  j d |  |  j d |  |  j d |  |  j t |  d  |  j d | d  |  j d	 | d  d
 S(   s'   Check that nested doctests are ignored.s  
        m = None

        def doctest_stuff():
            '''
                >>> def function_in_doctest():
                ...     """
                ...     >>> ignored_undefined_name
                ...     """
                ...     df = m
                ...     return df
                ...
                >>> function_in_doctest()
            '''
            f = m
            return f
        i   i    R   R    t   function_in_doctesti   R"   t   dfN(	   R   R#   R$   R   R   R   R%   R&   R)   (	   R   R*   R+   R,   R-   R.   R/   R0   R1   (    (    s=   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/test/test_doctests.pyt   test_nested_doctest_ignoreda   s     		(((

c   	      C   sV  |  j  d  } | j } g  | D] } | j t k r | ^ q } g  | D] } | j t k rG | ^ qG } g  | D] } | j t k ro | ^ qo } |  j t |  d  |  j t |  d  | d } | d } |  j d |  |  j d |  |  j t |  d  |  j d | d  |  j d | d  |  j d	 | d  |  j	 d	 |  d
 S(   s;   Check that global in doctest does not pollute module scope.s[  
        def doctest_stuff():
            '''
                >>> def function_in_doctest():
                ...     global m
                ...     m = 50
                ...     df = 10
                ...     m = df
                ...
                >>> function_in_doctest()
            '''
            f = 10
            return f

        i   i    R    R3   i   R"   R4   R   N(
   R   R#   R$   R   R   R   R%   R&   R)   t   assertNotIn(	   R   R*   R+   R,   R-   R.   R/   R0   R1   (    (    s=   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/test/test_doctests.pyt"   test_global_module_scope_pollution   s"    		(((

c         C   s   |  j  d t j  d  S(   Nsn   
        global m

        def doctest_stuff():
            '''
                >>> m
            '''
        (   R   R   t   UndefinedName(   R   (    (    s=   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/test/test_doctests.pyt   test_global_undefined   s    c         C   s   |  j  d t j t j  d S(   s*   Doctest within nested class are processed.s  
        class C:
            class D:
                '''
                    >>> m
                '''
                def doctest_stuff(self):
                    '''
                        >>> m
                    '''
                    return 1
        N(   R   R   R8   (   R   (    (    s=   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/test/test_doctests.pyt   test_nested_class   s    c         C   s   |  j  d  d S(   s<   Doctest module does not process doctest in nested functions.s=  
        def doctest_stuff():
            def inner_function():
                '''
                    >>> syntax error
                    >>> inner_function()
                    1
                    >>> m
                '''
                return 1
            m = inner_function()
            return m
        N(   R   (   R   (    (    s=   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/test/test_doctests.pyt   test_ignore_nested_function   s    c         C   s   |  j  d t j  d S(   s#   Doctest may not access class scope.s   
        class C:
            def doctest_stuff(self):
                '''
                    >>> m
                '''
                return 1
            m = 1
        N(   R   R   R8   (   R   (    (    s=   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/test/test_doctests.pyt   test_inaccessible_scope_class   s    c         C   s   |  j  d  d  S(   Nsr   
        import foo

        def doctest_stuff():
            '''
                >>> foo
            '''
        (   R   (   R   (    (    s=   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/test/test_doctests.pyt   test_importBeforeDoctest   s    t   todoc         C   s   |  j  d t j  d  S(   Ns   
        import foo

        def doctest_stuff():
            """
                >>> import foo
                >>> foo
            """

        foo
        (   R   R   t   RedefinedWhileUnused(   R   (    (    s=   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/test/test_doctests.pyt   test_importBeforeAndInDoctest   s    
c         C   s   |  j  d  d  S(   Ns   
        def doctest_stuff():
            """
                >>> import foo
                >>> foo
            """

        import foo
        foo()
        (   R   (   R   (    (    s=   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/test/test_doctests.pyt   test_importInDoctestAndAfter	  s    	c         C   sF   |  j  d t j  j d } |  j | j d  |  j | j d  d  S(   Nsg   

        def doctest_stuff():
            """
                >>> x # line 5
            """

        i    i   i   (   R   R   R8   R    R%   t   linenot   col(   R   t   exc(    (    s=   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/test/test_doctests.pyt   test_offsetInDoctests  s    c         C   sF   |  j  d t j  j d } |  j | j d  |  j | j d  d  S(   Nso   

        def doctest_stuff():
            """
                >>> lambda: x # line 5
            """

        i    i   i   (   R   R   R8   R    R%   RB   RC   (   R   RD   (    (    s=   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/test/test_doctests.pyt   test_offsetInLambdasInDoctests!  s    c         C   sF   |  j  d t j  j d } |  j | j d  |  j | j d  d  S(   Nsm   

        def doctest_stuff():
            """
                >>> x = 5
            """

        x

        i    i   (   R   R   R8   R    R%   RB   RC   (   R   RD   (    (    s=   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/test/test_doctests.pyt   test_offsetAfterDoctests-  s    	c         C   s   |  j  d t j t j t j  j } | d } |  j | j d  |  j | j d  | d } |  j | j d  t r |  j | j d  n |  j | j d  | d	 } |  j | j d
  t r |  j | j d  n |  j | j d  d  S(   Ns   
            def doctest_stuff():
                """
                    >>> from # line 4
                    >>>     fortytwo = 42
                    >>> except Exception:
                """
            i    i   i   i   i   i   i   i   i   i   (   R   R   t   DoctestSyntaxErrorR    R%   RB   RC   t   PYPY(   R   t
   exceptionsRD   (    (    s=   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/test/test_doctests.pyt   test_syntaxErrorInDoctest;  s$    


c         C   sb   |  j  d t j  j d } |  j | j d  t rK |  j | j d  n |  j | j d  d  S(   Ns|   
        def doctest_stuff():
            """
                >>> if True:
                ... pass
            """
        i    i   i   i   (   R   R   RH   R    R%   RB   RI   RC   (   R   RD   (    (    s=   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/test/test_doctests.pyt   test_indentationErrorInDoctest\  s    c         C   st   |  j  d t j t j  j \ } } |  j | j d  |  j | j d  |  j | j d  |  j | j d  d  S(   Ns   
            def doctest_stuff(arg1,
                              arg2,
                              arg3):
                """
                    >>> assert
                    >>> this
                """
            i   i   i   i   (   R   R   RH   R8   R    R%   RB   RC   (   R   t   exc1t   exc2(    (    s=   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/test/test_doctests.pyt   test_offsetWithMultiLineArgsj  s    	c         C   s   |  j  d  d  S(   NsT   
        def foo():
            '''
                >>> foo
            '''
        (   R   (   R   (    (    s=   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/test/test_doctests.pyt   test_doctestCanReferToFunction|  s    c         C   s   |  j  d  d  S(   Ns   
        class Foo():
            '''
                >>> Foo
            '''
            def bar(self):
                '''
                    >>> Foo
                '''
        (   R   (   R   (    (    s=   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/test/test_doctests.pyt   test_doctestCanReferToClass  s    	c         C   s\   |  j  d t j t j  j } | d } |  j | j d  | d } |  j | j d  d  S(   NsF  
            def buildurl(base, *args, **kwargs):
                """
                >>> buildurl('/blah.php', ('a', '&'), ('b', '=')
                '/blah.php?a=%26&b=%3D'
                >>> buildurl('/blah.php', a='&', 'b'='=')
                '/blah.php?b=%3D&a=%26'
                """
                pass
            i    i   i   i   (   R   R   RH   R    R%   RB   (   R   RJ   RD   (    (    s=   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/test/test_doctests.pyt!   test_noOffsetSyntaxErrorInDoctest  s    


c         C   s   |  j  d  d  S(   Ns   
        def func():
            """A docstring

            >>> func()
            1
            >>> _
            1
            """
            return 1
        (   R   (   R   (    (    s=   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/test/test_doctests.pyt   test_singleUnderscoreInDoctest  s    
(   R   R   R   R   R2   R5   R7   R9   R:   R;   R<   R=   R   R@   RA   RE   RF   RG   RK   RL   RO   RP   RQ   RR   RS   (    (    (    s=   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/test/test_doctests.pyR   5   s*   	(	+	+	
				
					!					t	   TestOtherc           B   s   e  Z d  Z RS(   s2   Run TestOther with each test wrapped in a doctest.(   R   R   t   __doc__(    (    (    s=   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/test/test_doctests.pyRT     s   t   TestImportsc           B   s   e  Z d  Z RS(   s4   Run TestImports with each test wrapped in a doctest.(   R   R   RU   (    (    (    s=   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/test/test_doctests.pyRV     s   t   TestUndefinedNamesc           B   s   e  Z d  Z RS(   s;   Run TestUndefinedNames with each test wrapped in a doctest.(   R   R   RU   (    (    (    s=   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/test/test_doctests.pyRW     s   (   t   sysR
   t   pyflakesR    R   t   pyflakes.checkerR   R   R   t   pyflakes.test.test_otherR   RT   t   pyflakes.test.test_importsRV   t"   pyflakes.test.test_undefined_namesRW   t   pyflakes.test.harnessR   R   t   pypy_version_infoR   RI   t   AttributeErrort   Falset   objectR   (    (    (    s=   /tmp/pip-build-EndXZ2/pyflakes/pyflakes/test/test_doctests.pyt   <module>   s$   

 }