
'![c           @  s   d  Z  d d l m Z d d l Z d d l Td d l m Z m Z m Z m	 Z	 d e f d     YZ
 d e f d	     YZ d
 e f d     YZ d S(   u%   Check format checker helper functionsi(   t   unicode_literalsN(   t   *(   t   CheckerTestCaset   Messaget
   set_configt   _tokenize_strt   TestMultiStatementLinec           B  s2   e  Z e Z d    Z d   Z d   Z d   Z RS(   c         C  s   t  j d  } t |  j j _ |  j t d d | j d   |  j	 |  Wd  QXt
 |  j j _ |  j    |  j	 |  Wd  QXt  j d  } |  j t d d | j d   |  j	 |  Wd  QXd  S(   Nu#   
        if True: pass  #@
        u   multiple-statementst   nodei    uB   
        if True: pass  #@
        else:
            pass
        (   t   astroidt   extract_nodet   Falset   checkert   configt   single_line_if_stmtt   assertAddsMessagesR   t   bodyt
   visitFirstt   Truet   assertNoMessages(   t   selft   stmt(    (    sB   lib/python2.7/site-packages/pylint/test/unittest_checker_format.pyt   testSingleLineIfStmts$   s    	#	#c         C  s  t  j d  } t |  j j _ |  j t d d | j d   |  j	 |  Wd  QXt
 |  j j _ |  j    |  j	 |  Wd  QXt  j d  } t |  j j _ |  j t d d | j d   |  j	 |  Wd  QXt
 |  j j _ |  j    |  j	 |  Wd  QXt  j d  } t |  j j _ |  j t d d | j d   |  j	 |  Wd  QXt
 |  j j _ |  j t d d | j d   |  j	 |  Wd  QXd  S(   Nu4   
        class MyError(Exception): pass  #@
        u   multiple-statementsR   i    u5   
        class MyError(Exception): a='a'  #@
        u<   
        class MyError(Exception): a='a'; b='b'  #@
        (   R   R	   R
   R   R   t   single_line_class_stmtR   R   R   R   R   R   (   R   R   (    (    sB   lib/python2.7/site-packages/pylint/test/unittest_checker_format.pyt   testSingleLineClassStmts6   s0    	#	#	##c         C  s3   t  j d  } |  j    |  j |  Wd  QXd  S(   Nue   
        try:  #@
            pass
        except:
            pass
        finally:
            pass(   R   R	   R   R   (   R   t   tree(    (    sB   lib/python2.7/site-packages/pylint/test/unittest_checker_format.pyt'   testTryExceptFinallyNoMultipleStatementU   s    	c         C  s+   |  j  j g   |  j  j | j d  d  S(   Ni    (   R   t   process_tokenst   visit_defaultR   (   R   R   (    (    sB   lib/python2.7/site-packages/pylint/test/unittest_checker_format.pyR   `   s    (   t   __name__t
   __module__t   FormatCheckert   CHECKER_CLASSR   R   R   R   (    (    (    sB   lib/python2.7/site-packages/pylint/test/unittest_checker_format.pyR   !   s
   			t   TestSuperfluousParenthesesc           B  s;   e  Z e Z d    Z d   Z d   Z d   Z d   Z RS(   c         C  sz   t    |  j _ d d d d d d d d d	 d
 d d g } |  j   / x' | D] } |  j j t |  d  qM WWd  QXd  S(   Nu   if foo:u	   if foo():u   if (x and y) or z:u   assert foo()u	   assert ()u   if (1, 2) in (3, 4):u   if (a or b) in c:u   return (x for x in x)u   if (x for x in x):u   for x in (x for x in x):u   not (foo or bar)u   not (foo or bar) and bazi    (   t   setR   t   _keywords_with_parensR   t   _check_keyword_parenthesesR   (   R   t   casest   code(    (    sB   lib/python2.7/site-packages/pylint/test/unittest_checker_format.pyt'   testCheckKeywordParensHandlesValidCasesh   s     	c         C  s  t    |  j _ t d d d d d d d f t d d d d d d d f t d d d d d d	 d f t d d d d d
 d d f t d d d d d d d f t d d d d d d d f t d d d d d d d f t d d d d d d d f t d d d d d d d f t d d d d d d d f g
 } xF | D]> \ } } } |  j |   |  j j t |  |  Wd  QXqHWd  S(   Nu   superfluous-parenst   linei   t   argsu   ifu	   if (foo):i    u   if ((foo, bar)):u   if (foo(bar)):u   returnu   return ((x for x in x))u   notu	   not (foo)u   if not (foo):u   if (not (foo)):i   u   foru   for (x) in (1, 2, 3):u   if (1) in (1, 2, 3):(   R!   R   R"   R   R   R#   R   (   R   R$   t   msgR%   t   offset(    (    sB   lib/python2.7/site-packages/pylint/test/unittest_checker_format.pyt.   testCheckKeywordParensHandlesUnnecessaryParens|   s0    									c         C  sz   t    |  j _ d d g } xX | D]P \ } } |  j j t |  |  |  j j   } t | d j t	  s" t
  q" Wd  S(   Nu	   if (foo):i    u   assert (1 == 1)i(   u	   if (foo):i    (   u   assert (1 == 1)i    (   R!   R   R"   R#   R   t   lintert   release_messagest
   isinstanceR(   t   strt   AssertionError(   R   R$   R%   R*   t   got(    (    sB   lib/python2.7/site-packages/pylint/test/unittest_checker_format.pyt   testCheckIfArgsAreNotUnicode   s    c         C  sR   d } t  j |  } |  j   + |  j j |  |  j j t |   Wd  QXd  S(   Nu<   from __future__ import print_function
print('Hello world!')
(   R   t   parseR   R   t   process_moduleR   R   (   R   R%   R   (    (    sB   lib/python2.7/site-packages/pylint/test/unittest_checker_format.pyt,   testFuturePrintStatementWithoutParensWarning   s
    c         C  sH   t    |  j _ d } |  j   ! |  j j t |  d d Wd  QXd  S(   Nu   if 'bar' in (DICT or {}):t   starti   (   R!   R   R"   R   R#   R   (   R   R%   (    (    sB   lib/python2.7/site-packages/pylint/test/unittest_checker_format.pyt   testKeywordParensFalsePositive   s    (	   R   R   R   R   R&   R+   R2   R5   R7   (    (    (    sB   lib/python2.7/site-packages/pylint/test/unittest_checker_format.pyR    e   s   			
		t   TestCheckSpacec           B  s   e  Z e Z d    Z d   Z d   Z e d g   d    Z d   Z	 d   Z
 d   Z d   Z d	   Z d
   Z d   Z RS(   c         C  sM   d d d g } |  j    , x$ | D] } |  j j t |   q# WWd  QXd  S(   Nu   (a)
u   (a * (b + c))
u
   (#
    a)
(   R   R   R   R   (   R   t
   good_casesR%   (    (    sB   lib/python2.7/site-packages/pylint/test/unittest_checker_format.pyt   testParenthesesGood   s    	c         C  s   |  j  t d d d d d   |  j j t d
   Wd  QX|  j  t d d d d d   |  j j t d   Wd  QX|  j  t d d d d d   |  j j t d   Wd  QX|  j  t d d d d d   |  j j t d   Wd  QXd  S(   Nu   bad-whitespaceR'   i   R(   u   Nou   allowedu   afteru   bracketu   ( a)
^u   ( a)
u   beforeu	   (a )
   ^u   (a )
u   foo (a)
    ^u   foo (a)
u   {1: 2} [1]
       ^u   {1: 2} [1]
(   u   Nou   allowedu   afteru   bracketu   ( a)
^(   u   Nou   allowedu   beforeu   bracketu	   (a )
   ^(   u   Nou   allowedu   beforeu   bracketu   foo (a)
    ^(   u   Nou   allowedu   beforeu   bracketu   {1: 2} [1]
       ^(   R   R   R   R   R   (   R   (    (    sB   lib/python2.7/site-packages/pylint/test/unittest_checker_format.pyt   testParenthesesBad   s     c         C  s{   |  j    1 |  j j t d   |  j j t d   Wd  QXg  |  j j _ |  j     |  j j t d   Wd  QXd  S(   Nu   (a, )
u   (a,)
(   R   R   R   R   R   t   no_space_check(   R   (    (    sB   lib/python2.7/site-packages/pylint/test/unittest_checker_format.pyt   testTrailingCommaGood   s    R<   c         C  sB   |  j  t d d d d d   |  j j t d
   Wd  QXd  S(   Nu   bad-whitespaceR'   i   R(   u   Nou   allowedu   beforeu   bracketu   (a, )
    ^u   (a, )
(   u   Nou   allowedu   beforeu   bracketu   (a, )
    ^(   R   R   R   R   R   (   R   (    (    sB   lib/python2.7/site-packages/pylint/test/unittest_checker_format.pyt   testTrailingCommaBad   s    c         C  sB   |  j  t d d d d d   |  j j t d
   Wd  QXd  S(   Nu   bad-whitespaceR'   i   R(   u   Nou   allowedu   beforeu   commau   (a , b)
   ^u   (a , b)
(   u   Nou   allowedu   beforeu   commau   (a , b)
   ^(   R   R   R   R   R   (   R   (    (    sB   lib/python2.7/site-packages/pylint/test/unittest_checker_format.pyt	   testComma   s    c         C  sV   d d d d d d g } |  j    , x$ | D] } |  j j t |   q, WWd  QXd  S(   Nu   [a:b]
u   [a : b]
u   [a : ]
u   [:a]
u   [:]
u   [::]
(   R   R   R   R   (   R   R9   R%   (    (    sB   lib/python2.7/site-packages/pylint/test/unittest_checker_format.pyt   testSpacesAllowedInsideSlices   s    	c         C  s   |  j     |  j j t d   |  j j t d   |  j j t d   |  j j t d   |  j j t d   |  j j t d   |  j j t d   Wd  QXd  S(   Nu   foo(foo=bar)
u   foo(foo: int = bar)
u!   foo(foo: module.classname = bar)
u   foo(foo: Dict[int, str] = bar)
u   foo(foo: 'int' = bar)
u!   foo(foo: Dict[int, 'str'] = bar)
u   lambda x=1: x
(   R   R   R   R   (   R   (    (    sB   lib/python2.7/site-packages/pylint/test/unittest_checker_format.pyt   testKeywordSpacingGood   s    c         C  s  |  j  t d d d d d   |  j j t d
   Wd  QX|  j  t d d d d d   |  j j t d   Wd  QX|  j  t d d d d d   |  j j t d   Wd  QX|  j  t d d d d d   |  j j t d   Wd  QX|  j  t d d d d d   |  j j t d   Wd  QX|  j  t d d d d d    |  j j t d   Wd  QX|  j  t d d d d d!   |  j j t d   Wd  QXd  S("   Nu   bad-whitespaceR'   i   R(   u   Nou   allowedu   beforeu   keyword argument assignmentu   (foo =bar)
     ^u   (foo =bar)
u   afteru   (foo= bar)
    ^u   (foo= bar)
u   aroundu   (foo = bar)
     ^u   (foo = bar)
u   Exactly oneu   requiredu   (foo: int= bar)
         ^u   (foo: int= bar)
u   (foo: int =bar)
          ^u   (foo: int =bar)
u   (foo: int=bar)
         ^u   (foo: int=bar)
u%   (foo: List[int]=bar)
               ^u   (foo: List[int]=bar)
(   u   Nou   allowedu   beforeu   keyword argument assignmentu   (foo =bar)
     ^(   u   Nou   allowedu   afteru   keyword argument assignmentu   (foo= bar)
    ^(   u   Nou   allowedu   aroundu   keyword argument assignmentu   (foo = bar)
     ^(   u   Exactly oneu   requiredu   beforeu   keyword argument assignmentu   (foo: int= bar)
         ^(   u   Exactly oneu   requiredu   afteru   keyword argument assignmentu   (foo: int =bar)
          ^(   u   Exactly oneu   requiredu   aroundu   keyword argument assignmentu   (foo: int=bar)
         ^(   u   Exactly oneu   requiredu   aroundu   keyword argument assignmentu%   (foo: List[int]=bar)
               ^(   R   R   R   R   R   (   R   (    (    sB   lib/python2.7/site-packages/pylint/test/unittest_checker_format.pyt   testKeywordSpacingBad  sF           c         C  sG   d g } |  j    , x$ | D] } |  j j t |   q WWd  QXd  S(   Nu   a = b
a < b
a
< b
(   R   R   R   R   (   R   R9   R%   (    (    sB   lib/python2.7/site-packages/pylint/test/unittest_checker_format.pyt   testOperatorSpacingGood,  s    	c         C  s   |  j  t d d d d d   |  j j t d
   Wd  QX|  j  t d d d d d   |  j j t d   Wd  QX|  j  t d d d d d   |  j j t d   Wd  QX|  j  t d d d d d   |  j j t d   Wd  QXd  S(   Nu   bad-whitespaceR'   i   R(   u   Exactly oneu   requiredu   beforeu
   comparisonu   a< b
 ^u   a< b
u   afteru   a <b
  ^u   a <b
u   aroundu   a<b
 ^u   a<b
u   a<  b
 ^u   a<  b
(   u   Exactly oneu   requiredu   beforeu
   comparisonu   a< b
 ^(   u   Exactly oneu   requiredu   afteru
   comparisonu   a <b
  ^(   u   Exactly oneu   requiredu   aroundu
   comparisonu   a<b
 ^(   u   Exactly oneu   requiredu   aroundu
   comparisonu   a<  b
 ^(   R   R   R   R   R   (   R   (    (    sB   lib/python2.7/site-packages/pylint/test/unittest_checker_format.pyt   testOperatorSpacingBad6  s     c         C  sq  g  |  j  j _ |  j t d d d   |  j  j t d   Wd  QX|  j t d d d   |  j  j t d   Wd  QX|  j t d d d   |  j  j t d   Wd  QX|  j    |  j  j t d   Wd  QXd g |  j  j _ |  j    |  j  j t d   Wd  QX|  j    |  j  j t d   Wd  QX|  j    |  j  j t d   Wd  QXd  S(	   Nu   trailing-whitespaceR'   i   u   a = 1
 
b = 2
u   a = 1
	
b = 2
u   a = 1

b = 2
u   a = 1

b = 2
u
   empty-line(   R   R   R<   R   R   R   R   R   (   R   (    (    sB   lib/python2.7/site-packages/pylint/test/unittest_checker_format.pyt   testEmptyLinesK  s&    (   R   R   R   R   R:   R;   R=   R   R>   R?   R@   RA   RB   RC   RD   RE   (    (    (    sB   lib/python2.7/site-packages/pylint/test/unittest_checker_format.pyR8      s   	
						
	+	
	(   t   __doc__t
   __future__R    R   t   pylint.checkers.formatt   pylint.testutilsR   R   R   R   R   R    R8   (    (    (    sB   lib/python2.7/site-packages/pylint/test/unittest_checker_format.pyt   <module>   s   
"DM