ó
'![c           @   s×   d  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 m	 Z	 m
 Z
 d e f d „  ƒ  YZ d e f d „  ƒ  YZ d	 e f d
 „  ƒ  YZ d e f d „  ƒ  YZ d e j f d „  ƒ  YZ d S(   s   Unittest for the base checker.iÿÿÿÿN(   t   base(   t   CheckerTestCaset   Messaget
   set_configt   TestDocstringc           B   sž   e  Z e j Z d  „  Z d „  Z d „  Z d „  Z e	 d d ƒ d „  ƒ Z
 e	 d d ƒ d „  ƒ Z e	 d d ƒ d „  ƒ Z e	 d d ƒ d	 „  ƒ Z d
 „  Z RS(   c         C   sQ   t  j d ƒ } t d d | d d ƒ} |  j | ƒ  |  j j | ƒ Wd  QXd  S(   Nt	   somethings   missing-docstringt   nodet   argst   module(   R   (   t   astroidt   parseR   t   assertAddsMessagest   checkert   visit_module(   t   selfR   t   message(    (    s@   lib/python2.7/site-packages/pylint/test/unittest_checker_base.pyt   test_missing_docstring_module   s    c         C   s6   t  j d ƒ } |  j ƒ   |  j j | ƒ Wd  QXd  S(   Nt    (   R	   R
   t   assertNoMessagesR   R   (   R   R   (    (    s@   lib/python2.7/site-packages/pylint/test/unittest_checker_base.pyt#   test_missing_docstring_empty_module$   s    c         C   sQ   t  j d ƒ } t d d | d d ƒ} |  j | ƒ  |  j j | ƒ Wd  QXd  S(   Ns   ''''''s   empty-docstringR   R   R   (   R   (   R	   R
   R   R   R   R   (   R   R   R   (    (    s@   lib/python2.7/site-packages/pylint/test/unittest_checker_base.pyt   test_empty_docstring_module)   s    c         C   sQ   t  j d ƒ } t d d | d d ƒ} |  j | ƒ  |  j j | ƒ Wd  QXd  S(   Ns(   
        def func(tion):
           passs   missing-docstringR   R   t   function(   R   (   R	   t   extract_nodeR   R   R   t   visit_functiondef(   R   t   funcR   (    (    s@   lib/python2.7/site-packages/pylint/test/unittest_checker_base.pyt   test_empty_docstring_function/   s
    	t   docstring_min_lengthi   c         C   s6   t  j d ƒ } |  j ƒ   |  j j | ƒ Wd  QXd  S(   Ns(   
        def func(tion):
           pass(   R	   R   R   R   R   (   R   R   (    (    s@   lib/python2.7/site-packages/pylint/test/unittest_checker_base.pyt    test_short_function_no_docstring7   s    	c         C   sQ   t  j d ƒ } t d d | d d ƒ} |  j | ƒ  |  j j | ƒ Wd  QXd  S(   NsF   
        def func(tion):
            pass
            pass
           s   missing-docstringR   R   R   (   R   (   R	   R   R   R   R   R   (   R   R   R   (    (    s@   lib/python2.7/site-packages/pylint/test/unittest_checker_base.pyt   test_long_function_no_docstring?   s
    	c         C   sQ   t  j d ƒ } t d d | d d ƒ} |  j | ƒ  |  j j | ƒ Wd  QXd  S(   Nss   
        def func(tion):
            try:
                pass
            except:
                pass
           s   missing-docstringR   R   R   (   R   (   R	   R   R   R   R   R   (   R   R   R   (    (    s@   lib/python2.7/site-packages/pylint/test/unittest_checker_base.pyt1   test_long_function_nested_statements_no_docstringJ   s
    	c         C   s6   t  j d ƒ } |  j ƒ   |  j j | ƒ Wd  QXd  S(   Ns+   
        def __fun__(tion):
           pass(   R	   R   R   R   R   (   R   R   (    (    s@   lib/python2.7/site-packages/pylint/test/unittest_checker_base.pyt"   test_function_no_docstring_by_nameW   s    	c         C   sQ   t  j d ƒ } t d d | d d ƒ} |  j | ƒ  |  j j | ƒ Wd  QXd  S(   Ns-   
        class Klass(object):
           passs   missing-docstringR   R   t   class(   R   (   R	   R   R   R   R   t   visit_classdef(   R   t   klassR   (    (    s@   lib/python2.7/site-packages/pylint/test/unittest_checker_base.pyt   test_class_no_docstring_   s
    	(   t   __name__t
   __module__R    t   DocStringCheckert   CHECKER_CLASSR   R   R   R   R   R   R   R   R   R"   (    (    (    s@   lib/python2.7/site-packages/pylint/test/unittest_checker_base.pyR      s   					t   TestNameCheckerc           B   sP  e  Z e j Z i e ƒ  d  6Z e d e j	 d ƒ d d ƒ d „  ƒ Z
 e d e j	 d ƒ ƒ d „  ƒ Z d „  Z e j e j d k d d ƒe d e j	 d ƒ ƒ e d e j	 d ƒ ƒ e d e j	 d ƒ ƒ d „  ƒ ƒ ƒ ƒ Z e j e j d k d d ƒe d e j	 d ƒ ƒ e d e j	 d ƒ ƒ e d e j	 d ƒ ƒ d „  ƒ ƒ ƒ ƒ Z RS(   t	   bad_namest   attr_rgxs   [A-Z]+t   property_classess   abc.abstractpropertys   .custom_propc      
   C   s¢   t  j d ƒ } |  j ƒ  A |  j j | d ƒ |  j j | d ƒ |  j j | d ƒ Wd  QX|  j t d d | d d d ƒƒ  |  j j | d ƒ Wd  QXd  S(   Ns  
        import abc

        def custom_prop(f):
          return property(f)

        class FooClass(object):
          @property
          def FOO(self): #@
            pass

          @property
          def bar(self): #@
            pass

          @abc.abstractproperty
          def BAZ(self): #@
            pass

          @custom_prop
          def QUX(self): #@
            pass
        i    i   i   s   invalid-nameR   i   R   t	   Attributet   bars   '[A-Z]+' pattern(   R+   R,   s   '[A-Z]+' pattern(   R	   R   R   R   R   R   R   (   R   t   methods(    (    s@   lib/python2.7/site-packages/pylint/test/unittest_checker_base.pyt   test_property_namesn   s    	 c         C   s6   t  j d ƒ } |  j ƒ   |  j j | ƒ Wd  QXd  S(   Ns¦   
        class FooClass(object):
          @property
          def foo(self): pass

          @foo.setter
          def FOOSETTER(self): #@
             pass
        (   R	   R   R   R   R   (   R   t   method(    (    s@   lib/python2.7/site-packages/pylint/test/unittest_checker_base.pyt   test_property_setters”   s    	c      
   C   s  t  j d ƒ } |  j ƒ   |  j j | j d ƒ Wd  QXt  j d ƒ } |  j ƒ   |  j j | j d ƒ Wd  QXt  j d ƒ } |  j ƒ  H |  j j | j d j d j d ƒ |  j j | j d j d ƒ Wd  QXt  j d ƒ } |  j ƒ   |  j j | j d ƒ Wd  QXd  S(   Ns_   
        import collections
        Class = collections.namedtuple("a", ("b", "c")) #@
        i    sP   
        class ClassA(object):
            pass
        ClassB = ClassA
        sd   
        def A():
          return 1, 2, 3
        CONSTA, CONSTB, CONSTC = A()
        CONSTD = A()i   i   s*   
        CONST = "12 34 ".rstrip().split()(	   R	   R   R   R   t   visit_assignnamet   targetsR
   t   bodyt   elts(   R   t   assignR   (    (    s@   lib/python2.7/site-packages/pylint/test/unittest_checker_base.pyt   test_module_level_names¢   s"    			%$	i   i    t   reasons   Needs Python 2.xt	   const_rgxs   .+t   function_rgxt	   class_rgxc         C   s;  t  j d ƒ } |  j t d d d | d j d d d ƒ ƒ   |  j j | d j d ƒ Wd  QX|  j t d d d | d	 j d d d ƒ ƒ   |  j j | d	 j d ƒ Wd  QX|  j t d d d | d d d ƒ ƒ  |  j j | d ƒ Wd  QX|  j t d d d | d d d ƒ ƒ  |  j j | d ƒ Wd  QXd  S(   Ns…   
        True = 0  #@
        False = 1 #@
        def True():  #@
            pass
        class True:  #@
            pass
        t   msg_ids   assign-to-new-keywordR   i    R   t   Trues   3.0i   t   Falsei   i   (   R<   s   3.0(   R=   s   3.0(   R<   s   3.0(   R<   s   3.0(	   R	   R   R   R   R2   R   R1   R   R    (   R   t   ast(    (    s@   lib/python2.7/site-packages/pylint/test/unittest_checker_base.pyt   test_assign_to_new_keyword_py2À   s    	*!*!##i   s   Needs Python 3.6 or earlierc         C   s;  t  j d ƒ } |  j t d d d | d j d d d ƒ ƒ   |  j j | d j d ƒ Wd  QX|  j t d d d | d	 j d d d ƒ ƒ   |  j j | d	 j d ƒ Wd  QX|  j t d d d | d d d ƒ ƒ  |  j j | d ƒ Wd  QX|  j t d d d | d d d ƒ ƒ  |  j j | d ƒ Wd  QXd  S(   Ns“   
        async = "foo"  #@
        await = "bar"  #@
        def async():   #@
            pass
        class async:   #@
            pass
        R;   s   assign-to-new-keywordR   i    R   t   asyncs   3.7i   t   awaiti   i   (   R@   s   3.7(   RA   s   3.7(   R@   s   3.7(   R@   s   3.7(	   R	   R   R   R   R2   R   R1   R   R    (   R   R>   (    (    s@   lib/python2.7/site-packages/pylint/test/unittest_checker_base.pyt   test_assign_to_new_keyword_py3Þ   s    	*!*!##(   s   abc.abstractpropertys   .custom_prop(   i   i    (   i   i   (   R#   R$   R    t   NameCheckerR&   t   sett   CONFIGR   t   ret   compileR.   R0   R6   t   unittestt   skipIft   syst   version_infoR?   RB   (    (    (    s@   lib/python2.7/site-packages/pylint/test/unittest_checker_base.pyR'   h   s   	%!	*t   TestMultiNamingStylec           B   s•   e  Z e j Z e j d  ƒ Z e d e ƒ d „  ƒ Z	 e d e ƒ d „  ƒ Z
 e d e d e d d ƒ d „  ƒ Z e d e j d	 ƒ ƒ d
 „  ƒ Z RS(   s$   (?:(?P<UP>[A-Z]+)|(?P<down>[a-z]+))$R:   c         C   sy   t  j d ƒ } t d d | d d d	 ƒ} |  j | ƒ 9 x | D] } |  j j | ƒ qB W|  j j | j ƒ Wd  QXd  S(
   NsŸ   
        class classb(object): #@
            pass
        class CLASSA(object): #@
            pass
        class CLASSC(object): #@
            pass
        s   invalid-nameR   i    R   t   Classt   classbs.   '(?:(?P<UP>[A-Z]+)|(?P<down>[a-z]+))$' pattern(   RM   RN   s.   '(?:(?P<UP>[A-Z]+)|(?P<down>[a-z]+))$' pattern(   R	   R   R   R   R   R    t   leave_modulet   root(   R   t   classesR   t   cls(    (    s@   lib/python2.7/site-packages/pylint/test/unittest_checker_base.pyt"   test_multi_name_detection_majority  s    		
 	c      	   C   s•   t  j d ƒ } t d d | d d d ƒt d d | d	 d d ƒg } |  j | Œ  9 x | D] } |  j j | ƒ q^ W|  j j | j ƒ Wd  QXd  S(   Ns    
        class class_a(object): #@
            pass
        class classb(object): #@
            pass
        class CLASSC(object): #@
            pass
        s   invalid-nameR   i    R   RM   t   class_as.   '(?:(?P<UP>[A-Z]+)|(?P<down>[a-z]+))$' patterni   t   CLASSC(   RM   RT   s.   '(?:(?P<UP>[A-Z]+)|(?P<down>[a-z]+))$' pattern(   RM   RU   s.   '(?:(?P<UP>[A-Z]+)|(?P<down>[a-z]+))$' pattern(   R	   R   R   R   R   R    RO   RP   (   R   RQ   t   messagesRR   (    (    s@   lib/python2.7/site-packages/pylint/test/unittest_checker_base.pyt'   test_multi_name_detection_first_invalid  s    	t
   method_rgxR9   t
   name_groups   function:methodc         C   s   t  j d d d ƒ} t d d | d d d ƒ} |  j | ƒ 9 x | D] } |  j j | ƒ qH W|  j j | j ƒ Wd  QXd  S(   Nsƒ   
        class First(object):
            def func(self): #@
                pass

        def FUNC(): #@
            pass
        t   module_namet   tests   invalid-nameR   i   R   t   Functiont   FUNCs.   '(?:(?P<UP>[A-Z]+)|(?P<down>[a-z]+))$' pattern(   R\   R]   s.   '(?:(?P<UP>[A-Z]+)|(?P<down>[a-z]+))$' pattern(   R	   R   R   R   R   R   RO   RP   (   R   t   function_defsR   R   (    (    s@   lib/python2.7/site-packages/pylint/test/unittest_checker_base.pyt   test_multi_name_detection_group*  s     	s4   (?:(?P<ignore>FOO)|(?P<UP>[A-Z]+)|(?P<down>[a-z]+))$c         C   sy   t  j d ƒ } t d d | d d d	 ƒ} |  j | ƒ 9 x | D] } |  j j | ƒ qB W|  j j | j ƒ Wd  QXd  S(
   Ns©   
        def FOO(): #@
            pass
        def lower(): #@
            pass
        def FOO(): #@
            pass
        def UPPER(): #@
            pass
        s   invalid-nameR   i   R   R\   t   UPPERs>   '(?:(?P<ignore>FOO)|(?P<UP>[A-Z]+)|(?P<down>[a-z]+))$' pattern(   R\   R`   s>   '(?:(?P<ignore>FOO)|(?P<UP>[A-Z]+)|(?P<down>[a-z]+))$' pattern(   R	   R   R   R   R   R   RO   RP   (   R   R^   R   R   (    (    s@   lib/python2.7/site-packages/pylint/test/unittest_checker_base.pyt    test_multi_name_detection_exempt>  s    		 	(   s   function:method(   R#   R$   R    RC   R&   RF   RG   t   MULTI_STYLE_RER   RS   RW   R_   Ra   (    (    (    s@   lib/python2.7/site-packages/pylint/test/unittest_checker_base.pyRL   ý   s   	t   TestComparisonc           B   s   e  Z e j Z d  „  Z RS(   c         C   s2  t  j d ƒ } t d d | d t d f ƒ} |  j | ƒ  |  j j | ƒ Wd  QXt  j d ƒ } t d d | d t d f ƒ} |  j | ƒ  |  j j | ƒ Wd  QXt  j d ƒ } t d d | d d ƒ} |  j | ƒ  |  j j | ƒ Wd  QXt  j d
 ƒ } t d d | d d ƒt d d | d t d f ƒf } |  j | Œ   |  j j | ƒ Wd  QXt  j d ƒ } t d d | d d ƒt d d | d t d f ƒf } |  j | Œ   |  j j | ƒ Wd  QXt  j d ƒ } t d d | d d ƒt d d | d d ƒf } |  j | Œ   |  j j | ƒ Wd  QXd  S(   Ns   foo == Trues   singleton-comparisonR   R   s   just 'expr' or 'expr is True's   foo == Falses   'not expr' or 'expr is False's   foo == Nones   'expr is None's   True == foos   misplaced-comparison-constants   False == foos   None == foo(   Ns   'expr is None'(   s   foo == True(   s   foo == False(   s   foo == None(   Ns   'expr is None'(	   R	   R   R   R<   R   R   t   visit_compareR=   t   None(   R   R   R   RV   (    (    s@   lib/python2.7/site-packages/pylint/test/unittest_checker_base.pyt   test_comparisonU  sZ    										(   R#   R$   R    t   ComparisonCheckerR&   Rf   (    (    (    s@   lib/python2.7/site-packages/pylint/test/unittest_checker_base.pyRc   R  s   	t   TestNamePresetsc           B   s§   e  Z d  d d h Z d d d h Z d d d h Z d	 d
 d h Z e e Be Be BZ d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d „  Z d „  Z d „  Z d „  Z RS(   t   test_snake_caset   test_snake_case11t   test_https_200t   testCamelCaset   testCamelCase11t   testHTTP200t   TEST_UPPER_CASEt   TEST_UPPER_CASE11t   TEST_HTTP_200t   TestPascalCaset   TestPascalCase11t   TestHTTP200c         C   s+   x$ t  j D] } |  j | | | ƒ q
 Wd  S(   N(   R    t   KNOWN_NAME_TYPESt   _test_is_correct(   R   t   naming_stylet   namet	   name_type(    (    s@   lib/python2.7/site-packages/pylint/test/unittest_checker_base.pyt(   _test_name_is_correct_for_all_name_types‘  s    c         C   s+   x$ t  j D] } |  j | | | ƒ q
 Wd  S(   N(   R    Ru   t   _test_is_incorrect(   R   Rw   Rx   Ry   (    (    s@   lib/python2.7/site-packages/pylint/test/unittest_checker_base.pyt*   _test_name_is_incorrect_for_all_name_types•  s    c         C   s@   d d d	 d
 g } x' | D] \ } } |  j  | | | ƒ q Wd  S(   Nt   __add__R/   t   __set_name__t   __version__t   constt
   __author__(   R}   R/   (   R~   R/   (   R   R€   (   R   R€   (   Rv   (   R   Rw   t   always_pass_dataRx   Ry   (    (    s@   lib/python2.7/site-packages/pylint/test/unittest_checker_base.pyt   _test_should_always_pass™  s    	c         C   s>   | j  | ƒ } |  j | j | ƒ d j | | | | ƒ ƒ d  S(   Ns6   {!r} does not match pattern {!r} (style: {}, type: {})(   t	   get_regext
   assertTruet   matcht   format(   R   Rw   Rx   Ry   t   rgx(    (    s@   lib/python2.7/site-packages/pylint/test/unittest_checker_base.pyRv   £  s    c         C   s>   | j  | ƒ } |  j | j | ƒ d j | | | | ƒ ƒ d  S(   Ns;   {!r} match pattern {!r} but shouldn't (style: {}, type: {})(   R„   t   assertFalseR†   R‡   (   R   Rw   Rx   Ry   Rˆ   (    (    s@   lib/python2.7/site-packages/pylint/test/unittest_checker_base.pyR{   ©  s    c         C   si   t  j } x! |  j D] } |  j | | ƒ q Wx( |  j |  j D] } |  j | | ƒ q> W|  j | ƒ d  S(   N(   R    t   SnakeCaseStylet   SNAKE_CASE_NAMESRz   t	   ALL_NAMESR|   Rƒ   (   R   Rw   Rx   (    (    s@   lib/python2.7/site-packages/pylint/test/unittest_checker_base.pyRi   ¯  s    	c         C   si   t  j } x! |  j D] } |  j | | ƒ q Wx( |  j |  j D] } |  j | | ƒ q> W|  j | ƒ d  S(   N(   R    t   CamelCaseStylet   CAMEL_CASE_NAMESRz   RŒ   R|   Rƒ   (   R   Rw   Rx   (    (    s@   lib/python2.7/site-packages/pylint/test/unittest_checker_base.pyt   test_camel_case¹  s    	c         C   si   t  j } x! |  j D] } |  j | | ƒ q Wx( |  j |  j D] } |  j | | ƒ q> W|  j | ƒ d  S(   N(   R    t   UpperCaseStylet   UPPER_CASE_NAMESRz   RŒ   R|   Rƒ   (   R   Rw   Rx   (    (    s@   lib/python2.7/site-packages/pylint/test/unittest_checker_base.pyt   test_upper_caseÃ  s    	c         C   si   t  j } x! |  j D] } |  j | | ƒ q Wx( |  j |  j D] } |  j | | ƒ q> W|  j | ƒ d  S(   N(   R    t   PascalCaseStylet   PASCAL_CASE_NAMESRz   RŒ   R|   Rƒ   (   R   Rw   Rx   (    (    s@   lib/python2.7/site-packages/pylint/test/unittest_checker_base.pyt   test_pascal_caseÍ  s    	(   R#   R$   R‹   RŽ   R‘   R”   RŒ   Rz   R|   Rƒ   Rv   R{   Ri   R   R’   R•   (    (    (    s@   lib/python2.7/site-packages/pylint/test/unittest_checker_base.pyRh   Š  s   			
			
	
	
(   t   __doc__RF   RJ   RH   R	   t   pylint.checkersR    t   pylint.testutilsR   R   R   R   R'   RL   Rc   t   TestCaseRh   (    (    (    s@   lib/python2.7/site-packages/pylint/test/unittest_checker_base.pyt   <module>   s   M•U8