ó
'![c        	   @   s6  d  d l  m 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	 d  d l
 m Z m Z m Z m Z m Z m Z d  d l Z d  d l m Z d  d l m Z m Z d  d l m Z m Z m Z m Z d  d	 l m Z m Z m Z m  Z  m! Z! m" Z" m# Z# d  d
 l$ m% Z% m& Z& d  d l' j( Z( d  d l) m* Z* d  d l m+ Z+ d  d l, m- Z- d  d l m. Z. d  d l m/ Z/ d  d l0 Z0 e j1 d k rÍe j2 d k rÄd Z3 qëd Z3 n e j4 d k råd Z3 n d Z3 y e j5 Z6 Wn e7 k
 rd Z6 n Xe d „  ƒ Z9 d „  Z: e e e; ƒ ƒ Z< e e< d ƒ Z= e d „  ƒ Z> d d „ Z? e0 j@ d „  ƒ ZA d „  ZB e0 jC jD d d g d g d  g d! g d" g g ƒ d# „  ƒ ZE e0 jC jD d d d$ g d% d g d  d& g d" d& g g ƒ d' „  ƒ ZF e0 jC jD d d( d) d* g d+ d" d, g d+ d" d+ d, d" g g ƒ d- „  ƒ ZG e0 j@ d. d/ ƒ d0 „  ƒ ZH e0 j@ d. d/ ƒ d1 „  ƒ ZI e0 j@ d2 „  ƒ ZJ d3 „  ZK d4 „  ZL d5 „  ZM d6 „  ZN d7 „  ZO d8 „  ZP d9 „  ZQ d: „  ZR d; „  ZS d< „  ZT d= „  ZU d> „  ZV d? „  ZW d@ „  ZX dA „  ZY dB „  ZZ dC „  Z[ dD „  Z\ dE „  Z] dF „  Z^ dG „  Z_ e0 j@ dH „  ƒ Z` e0 jC ja dI ƒ dJ „  ƒ Zb e0 jC jc e6 dK dL ƒe0 jC ja dI ƒ dM „  ƒ ƒ Zd e0 jC ja dI ƒ dN „  ƒ Ze e0 jC ja dI ƒ dO „  ƒ Zf dP eg f dQ „  ƒ  YZh e0 j@ dR „  ƒ Zi dS eg f dT „  ƒ  YZj dU „  Zk dV „  Zl d S(W   iÿÿÿÿ(   t   contextmanagerN(   t   rmtree(   t   getcwdt   chdir(   t   joint   basenamet   dirnamet   isdirt   abspatht   sep(   t   reload_module(   t   configt   lint(   t   PyLintert   Runt   preprocess_optionst   ArgumentPreprocessingError(   t   MSG_STATE_SCOPE_CONFIGt   MSG_STATE_SCOPE_MODULEt   MSG_STATE_CONFIDENCEt   MessagesStoret   MessageDefinitiont	   FileStatet   tokenize_module(   t   InvalidMessageErrort   UnknownMessageError(   t   text(   t   checkers(   t   check_messages(   t
   exceptions(   t
   interfacest   javat   ntt   USERPROFILEt   HOMEt   win32c          c   sˆ   t  j d ƒ }  t j j t ƒ } z |  t j t <d  VWd  t j j d d ƒ | d  k rf t j t =n | t j t <t |  d t	 ƒXd  S(   Ns	   fake-homet   PYLINTRCt    t   ignore_errors(
   t   tempfilet   mkdtempt   ost   environt   getR"   t   popt   NoneR   t   True(   t   foldert   old_home(    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt	   fake_homeA   s    	c         C   s)   y t  j |  ƒ Wn t k
 r$ n Xd  S(   N(   R)   t   removet   OSError(   t   file(    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyR2   Q   s    t   inputc          c   sP   t  j ƒ  }  t ƒ  } t |  ƒ t d ƒ } z	 | VWd t | ƒ t | ƒ Xd S(   s}   Create a temp directory and change the current location to it.

    This is supposed to be used with a *with* statement.
    t   .N(   R'   R(   R   R   R   R   (   t   tmpt   current_dirt   abs_tmp(    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   tempdir[   s    	
	
R6   c         C   sÐ   t  ƒ  t  ƒ  } } xe |  D]] } t | | ƒ } t | ƒ } | d k rW | j | ƒ q | j t | ƒ ƒ | j | ƒ q Wx* | D]" } t | ƒ s‚ t j | ƒ q‚ q‚ Wx! | D] } t | d ƒ j	 ƒ  q¯ Wd S(   sì  Creates directories and files found in <path>.

    :param paths: list of relative paths to files or directories
    :param chroot: the root directory in which paths will be created

    >>> from os.path import isdir, isfile
    >>> isdir('/tmp/a')
    False
    >>> create_files(['a/b/foo.py', 'a/b/c/', 'a/b/c/d/e.py'], '/tmp')
    >>> isdir('/tmp/a')
    True
    >>> isdir('/tmp/a/b/c')
    True
    >>> isfile('/tmp/a/b/c/d/e.py')
    True
    >>> isfile('/tmp/a/b/foo.py')
    True
    R%   t   wN(
   t   setR   R   t   addR   R   R)   t   makedirst   opent   close(   t   pathst   chroott   dirst   filest   patht   filenamet   dirpatht   filepath(    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   create_fileso   s    c          c   s;   t  t j ƒ }  d d d g } | t j (| V|  t j (d  S(   Ni   i   i   (   t   listt   sysRE   (   t   origt   fake(    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt	   fake_path”   s
    
c         C   sK   t  j g  ƒ ! t j d g |  k s, t ‚ Wd  QXt j |  k sG t ‚ d  S(   NR6   (   R   t   fix_import_pathRK   RE   t   AssertionError(   RN   (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   test_no_args   s    "t   cases   a/b/s   a/bs   a/b/__init__.pys   a/t   ac      
   C   s•   t  ƒ  † } t d g ƒ t | d ƒ g d g |  } t j |  k sK t ‚ t j | ƒ  t j | k sp t ‚ Wd  QXt j |  k s‹ t ‚ Wd  QXd  S(   Ns   a/b/__init__.pyRS   R6   (   R:   RI   R   RK   RE   RP   R   RO   (   RN   RR   RB   t   expected(    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   test_one_arg£   s    s   a/cs   a/c/s   a/c/__init__.pyc      
   C   s˜   t  ƒ  ‰ } t d d g ƒ t | d ƒ g d g |  } t j |  k sN t ‚ t j | ƒ  t j | k ss t ‚ Wd  QXt j |  k sŽ t ‚ Wd  QXd  S(   Ns   a/b/__init__.pys   a/c/__init__.pyRS   R6   (   R:   RI   R   RK   RE   RP   R   RO   (   RN   RR   RB   RT   (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   test_two_similar_argsµ   s    s   a/b/c/__init__.pys   a/d/__init__.pys   a/e/f.pys   a/b/cs   a/ec      
   C   sÆ   t  ƒ  · } t d d d g ƒ g  t j d ƒ d t j d	 ƒ g D] } t | | ƒ ^ qA d g |  } t j |  k s| t ‚ t j | ƒ  t j | k s¡ t ‚ Wd  QXt j |  k s¼ t ‚ Wd  QXd  S(
   Ns   a/b/c/__init__.pys   a/d/__init__.pys   a/e/f.pyRS   t   bt   eR6   (   RS   RW   (   RS   RX   (	   R:   RI   R	   R   RK   RE   RP   R   RO   (   RN   RR   RB   t   suffixRT   (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   test_more_argsÆ   s    Ht   scopet   modulec         C   s   d g S(   Nt   I(    (   t   disable(    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyR^   Ù   s    c         C   s   t  j S(   N(   t	   testutilst   TestReporter(   t   reporter(    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyRa   Þ   s    c         C   s*   |  j  ƒ  |  j d ƒ t d ƒ |  _ |  S(   Nt   toto(   R?   t   set_current_moduleR   t
   file_state(   t   linter(    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   init_linterã   s    
c         C   sl   d t  j f d „  ƒ  Y} |  j | |  ƒ ƒ |  j ƒ  t j j ƒ  } |  j t j	 | ƒ ƒ |  j
 d ƒ d  S(   Nt   CustomCheckerc           B   s9   e  Z e j Z d  Z i d d 6Z e d  ƒ d „  ƒ Z RS(   t   customR%   t   W9999c         S   s   d  S(   N(    (   t   selft   _(    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   visit_classñ   s    (   R%   Rh   R%   (	   t   __name__t
   __module__R   t   IAstroidCheckert   __implements__t   namet   msgsR   Rl   (    (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyRg   ì   s   	t   abc(   R   t   BaseCheckert   register_checkerR?   t   sixt   movest   StringIOt   set_reporterR   t   TextReportert   check(   Re   Rg   t   out(    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt)   test_pylint_visit_method_taken_in_accountë   s    	
c         C   s   |  } | j  d ƒ s t ‚ | j  d ƒ s0 t ‚ | j d d d ƒ| j d d d d d ƒ| j  d ƒ sr t ‚ | j  d d ƒ s‹ t ‚ | j d ƒ | j  d ƒ s® t ‚ | j  d ƒ sÃ t ‚ | j d d d ƒ| j d d d d d ƒ| j  d ƒ st ‚ | j  d d ƒ st ‚ d  S(	   Nt   W0101t   W0102R[   t   packageR\   t   linei   t   tutu(   t   is_message_enabledRP   R^   Rc   t   enable(   Rf   Re   (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   test_enable_messageü   s    c         C   sP  |  } | j  d ƒ s t ‚ | j  d ƒ s0 t ‚ | j d d d ƒ| j d d d d d	 ƒ| j  d ƒ sr t ‚ | j  d ƒ s‡ t ‚ | j  d d d	 ƒs£ t ‚ | j d
 ƒ | j  d ƒ sÆ t ‚ | j  d ƒ sÛ t ‚ | j d d d ƒ| j d d d d d	 ƒ| j  d ƒ st ‚ | j  d ƒ s1t ‚ | j  d d d	 ƒsLt ‚ d  S(   NR~   t   C0202t   WR[   R€   t   CR\   R   i   R‚   (   Rƒ   RP   R^   Rc   R„   (   Rf   Re   (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   test_enable_message_category  s     c         C   s  d t  f d „  ƒ  Y} |  } | j d ƒ t | j d ƒ k sD t ‚ | j d d d d d ƒt | j d ƒ k sx t ‚ t | j d d ƒ k s– t ‚ | j d	 d d d d ƒt | j d	 d ƒ k sÍ t ‚ | ƒ  | _ t | j d
 d t	 j
 ƒk sý t ‚ d  S(   Nt
   FakeConfigc           B   s   e  Z d  g Z RS(   t   HIGH(   Rm   Rn   t
   confidence(    (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyRŠ   !  s   R†   R~   R[   R\   R   i   R   s   this-is-badRŒ   (   t   objectR^   R   t   get_message_state_scopeRP   R   R„   R   R   R   t	   INFERENCE(   Rf   RŠ   Re   (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   test_message_state_scope   s    c         C   s›  |  } | j  ƒ  t t d ƒ } | j d ƒ | j | d ƒ } | j t | ƒ ƒ | j } | j | j	 | ƒ | j
 d ƒ s‚ t ‚ | j
 d ƒ s— t ‚ | j
 d d ƒ s¯ t ‚ | j
 d d ƒ sÈ t ‚ | j
 d d ƒ sá t ‚ | j
 d d ƒ sù t ‚ | j
 d d	 ƒ st ‚ | j
 d d
 ƒ s*t ‚ | j
 d d ƒ sCt ‚ | j
 d d ƒ s\t ‚ | j
 d d ƒ stt ‚ | j
 d d ƒ st ‚ | j
 d d ƒ s¦t ‚ | j
 d d ƒ s¿t ‚ | j
 d d ƒ s×t ‚ | j
 d d ƒ sðt ‚ | j
 d d ƒ s	t ‚ | j
 d d ƒ s!t ‚ | j
 d d ƒ s9t ‚ | j
 d d ƒ sRt ‚ | j
 d d ƒ sjt ‚ | j
 d d ƒ s‚t ‚ | j
 d d ƒ s›t ‚ | j
 d d ƒ s³t ‚ | j
 d d ƒ sËt ‚ | j
 d d ƒ sãt ‚ | j } d | j d$ k st ‚ d | j d% k st ‚ d& | j k s3t ‚ d | j d' k sLt ‚ d | j d( k set ‚ d  | j d) k s~t ‚ d" | j d* k s—t ‚ d  S(+   Ns   func_block_disable_msg.pyt   func_block_disable_msgt   W0613t   E1101i   i   i   i   i    i$   i*   i+   i.   i1   i3   i9   i=   i@   iB   t   E0602i>   iF   iH   iK   iM   i   i   i!   i   t   C0302i2   ij   il   im   in   (   R’   i   (   R“   i!   (   R“   i.   (   R•   i   (   R•   i2   (   R“   il   (   R“   in   (   R?   R   t   INPUTDIRRc   t   get_astt   process_tokensR   Rd   t   collect_block_linest
   msgs_storeRƒ   RP   t   _suppression_mapping(   Rf   Re   RH   t   astroidt   fs(    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   test_enable_message_block2  sT    
		c         C   sÑ  |  } | j  d ƒ s t ‚ | j  d ƒ s0 t ‚ | j  d ƒ sE t ‚ | j  d ƒ sZ t ‚ | j d d d ƒ| j d d d d d	 ƒ| j  d ƒ sœ t ‚ | j  d ƒ s² t ‚ | j  d d	 ƒ sË t ‚ | j  d d	 ƒ sä t ‚ | j d
 ƒ | j  d ƒ st ‚ | j  d ƒ st ‚ | j  d ƒ s2t ‚ | j  d ƒ sGt ‚ | j d d d ƒ| j d d d d d	 ƒ| j  d ƒ sˆt ‚ | j  d ƒ st ‚ | j  d d	 ƒ sµt ‚ | j  d d	 ƒ sÍt ‚ d S(   sk   messages can be controlled by symbolic names.

    The state is consistent across symbols and numbers.
    R~   t   unreachableR   s   dangerous-default-valueR[   R€   R\   R   i   R‚   N(   Rƒ   RP   R^   Rc   R„   (   Rf   Re   (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   test_enable_by_symboll  s,    c         C   s^   |  j  d ƒ s t ‚ |  j d ƒ |  j  d ƒ s8 t ‚ |  j d ƒ |  j  d ƒ sZ t ‚ d  S(   Nt   RP0001(   t   report_is_enabledRP   R^   R„   (   Re   (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   test_enable_report‰  s
    c         C   s<   t  j |  ƒ |  j d d ƒ |  j j j d k s8 t ‚ d  S(   Ns   output-formatR   Rz   (   R   t   registert
   set_optionRa   t	   __class__Rm   RP   (   Re   (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt!   test_report_output_format_aliased‘  s    c         C   s:   t  j |  ƒ t j t j ƒ  |  j d d ƒ Wd  QXd  S(   Ns   output-formats   missing.module.Class(   R   R¤   t   pytestt   raisesR   t   InvalidReporterErrorR¥   (   Re   (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   test_set_unsupported_reporter—  s    c         C   s   |  j  d d ƒ |  j d ƒ s& t ‚ |  j d ƒ s< t ‚ |  j d ƒ sQ t ‚ |  j d ƒ sg t ‚ |  j d ƒ s} t ‚ d  S(   NR^   s   C0111,W0234t   C0111t   W0234t   W0113s   missing-docstrings   non-iterator-returned(   R¥   Rƒ   RP   (   Re   (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   test_set_option_1  s    c         C   s   |  j  d d ƒ |  j d ƒ s& t ‚ |  j d ƒ s< t ‚ |  j d ƒ sQ t ‚ |  j d ƒ sg t ‚ |  j d ƒ s} t ‚ d  S(   NR^   R¬   R­   R®   s   missing-docstrings   non-iterator-returned(   R¬   R­   (   R¥   Rƒ   RP   (   Re   (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   test_set_option_2¦  s    c         C   sz   |  j  d ƒ d g  |  j ƒ  D] } | j ^ q k s; t ‚ |  j d ƒ d g  |  j ƒ  D] } | j ^ qX k sv t ‚ d  S(   Nt   design(   R^   t   prepare_checkersRq   RP   R„   (   Re   t   c(    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   test_enable_checkers¯  s    .c         C   sU   |  j  ƒ  |  j ƒ  } t d „  | Dƒ ƒ } t d ƒ } t ƒ  | | @k sQ t ‚ d  S(   Nc         s   s   |  ] } | j  Vq d  S(   N(   Rq   (   t   .0R³   (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pys	   <genexpr>¹  s    R±   t   formatt   metricst   miscellaneoust   similarities(   R±   R¶   R·   R¸   R¹   (   t
   error_modeR²   R<   RP   (   Re   R   t   checker_namest
   should_not(    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   test_errors_only¶  s    
	c         C   sR   |  j  d d ƒ |  j  d d ƒ d g  |  j ƒ  D] } | j ^ q0 k sN t ‚ d  S(   NR^   t   RP0801t   R0801R¹   (   R¥   R²   Rq   RP   (   Re   R³   (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   test_disable_similar¿  s    c         C   so   |  j  d t ƒ |  j  d d ƒ g  |  j ƒ  D] } | j ^ q- } x& d D] } | | k sI t | ƒ ‚ qI Wd S(	   s(   check that we disabled a lot of checkerst   reportsR^   s   R,C,WR±   R·   R¹   N(   R±   R·   R¹   (   R¥   t   FalseR²   Rq   RP   (   Re   R³   R»   t   cname(    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   test_disable_alotÅ  s
    "c         C   s~   |  j  t j ƒ  ƒ |  j ƒ  |  j d ƒ |  j d d d d d ƒ|  j d d d d d ƒd
 d g |  j j k sz t ‚ d  S(   Nt   0123t   C0301R   i   t   argsi   s   line-too-longi   i   s   C:  1: Line too long (1/2)s   C:  2: Line too long (3/4)(   i   i   (   i   i   (	   Ry   R_   R`   R?   Rc   t   add_messageRa   t   messagesRP   (   Re   (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   test_addmessageÎ  s    
	c         C   s  |  j  t j ƒ  ƒ |  j ƒ  |  j d ƒ t j t ƒ  } |  j d d d ƒWd  QXt	 | j
 ƒ d k sp t ‚ t j t ƒ & } |  j d d d d d	 d d ƒWd  QXt	 | j
 ƒ d
 k sÂ t ‚ t j t ƒ  } |  j d ƒ Wd  QXt	 | j
 ƒ d k st ‚ d  S(   NRÅ   s   line-too-longRÇ   i   i   s)   Message C0301 must provide line, got NoneR   t   nodet	   fake_nodes@   Message C0301 must only provide line, got line=2, node=fake_nodet   C0321s)   Message C0321 must provide Node, got None(   i   i   (   i   i   (   Ry   R_   R`   R?   Rc   R¨   R©   R   RÈ   t   strt   valueRP   (   Re   t   cm(    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   test_addmessage_invalidØ  s    
%c        
   C   s\   t  j t ƒ  t d d d d g ƒ Wd  QXt  j t ƒ  t d d d d g ƒ Wd  QXd  S(   Ns   --load-pluginst
   unexistants   --init-hooks   raise RuntimeError(   R¨   R©   t   RuntimeErrorR   (    (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt*   test_init_hooks_called_before_load_pluginsê  s    c         C   s]   |  j  t j ƒ  ƒ |  j t j j t j j t ƒ d d ƒ ƒ d g |  j	 j
 k sY t ‚ d  S(   Nt   datat   ascripts   C:  2: Line too long (175/100)(   Ry   R_   R`   R{   R)   RE   R   R   t   __file__Ra   RÉ   RP   (   Re   (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   test_analyze_explicit_scriptñ  s    +c         C   s|   g  |  j  ƒ  D] } | j ^ q } d | k s4 t ‚ |  j d d ƒ g  |  j  ƒ  D] } | j ^ qQ } d | k sx t ‚ d  S(   Nt   python3R„   (   R²   Rq   RP   R¥   (   Re   R³   R»   (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   test_python3_checker_disabled÷  s
    ""c         C   ss   t  j ƒ  } |  j | ƒ | j ƒ  } xG d d d d g D]3 } t j | t j ƒ } t j | | ƒ s8 t ‚ q8 Wd  S(   Ns$   ^Pylint global options and switches$s+   Verbatim name of the checker is ``python3``s   ^:old-octal-literal \(E1608\):s   ^:dummy-variables-rgx:(	   Rv   Rx   t   print_full_documentationt   getvaluet   ret   compilet	   MULTILINEt   searchRP   (   Re   R|   t   outputt   re_strt   regexp(    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   test_full_documentation   s    c           C   s   t  j j d d  ƒ d  S(   NR$   (   R)   R*   R,   R-   (    (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   pop_pylintrc  s    Rå   c          C   sË   t  j j d ƒ }  |  d k r' d } n t  j j |  d ƒ } t j | k sQ t ‚ zh t t j ƒ  d ƒ } | t  j	 d <z# t
 t ƒ t j | k s˜ t ‚ Wd  y t  j | ƒ Wn n XXWd  t  j	 d =Xd  S(   Nt   ~s	   .pylint.dt
   PYLINTHOME(   R)   RE   t
   expanduserR   R   t   PYLINT_HOMERP   R'   t
   gettempdirR*   R
   R2   (   t   uhomeRT   t   pylintd(    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   test_pylint_home  s     	
	t   reasonsI   TOX runs this test from within the repo and finds the project's pylintrc.c       	   C   sÏ   t  ƒ  À t ƒ  }  t t j j t j j t j ƒ ƒ ƒ zu t	 j
 ƒ  d  k sS t ‚ t t j ƒ  d ƒ t j d <t	 j
 ƒ  d  k s‡ t ‚ d t j d <t	 j
 ƒ  d  k s¬ t ‚ Wd  t |  ƒ t t	 ƒ XWd  QXd  S(   Ns	   .pylintrcR$   R6   (   R1   R   R   R)   RE   R   R   RK   t
   executableR   t   find_pylintrcR-   RP   R   R'   Rê   R*   R
   (   R8   (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   test_pylintrc/  s    
	%
c          C   s  t  ƒ  }  t d d d d d d g ƒ t ƒ   t j ƒ  d  k sJ t ‚ Wd  QXi t |  d d ƒ d 6t |  d d	 d ƒ d
 6t |  d d	 d ƒ d 6t |  d d	 d ƒ d 6t |  d d	 d d d d ƒ d 6} xH | j ƒ  D]: \ } } t	 j
 t |  | ƒ ƒ t j ƒ  | k s× t ‚ q× WWd  QXd  S(   Ns
   a/pylintrcs   a/b/__init__.pys   a/b/pylintrcs   a/b/c/__init__.pys   a/b/c/d/__init__.pys   a/b/c/d/e/.pylintrcRS   t   pylintrcRW   s   a/bs   a/b/cs   a/b/c/dR³   t   dRX   s	   .pylintrcs	   a/b/c/d/e(   R:   RI   R1   R   Rð   R-   RP   R   t   itemsR)   R   (   RB   t   resultst   basedirRT   (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   test_pylintrc_parentdirC  s    

"c          C   sÙ   t  ƒ  Ê }  t ƒ  ¸ t d d d g ƒ t j ƒ  d  k sA t ‚ i t |  d d ƒ d 6t |  d d d ƒ d 6d  d 6d  d	 6} xH | j ƒ  D]: \ } } t	 j
 t |  | ƒ ƒ t j ƒ  | k s‹ t ‚ q‹ WWd  QXWd  QXd  S(
   Ns
   a/pylintrcs   a/b/pylintrcs   a/b/c/d/__init__.pyRS   Rò   RW   s   a/bs   a/b/cs   a/b/c/d(   R:   R1   RI   R   Rð   R-   RP   R   Rô   R)   R   (   RB   Rõ   Rö   RT   (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt"   test_pylintrc_parentdir_no_packageW  s    

t   TestPreprocessOptionsc           B   s5   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s   |  j  j | | f ƒ d  S(   N(   RÇ   t   append(   Rj   Rq   RÏ   (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt	   _callbackh  s    c         C   s^   g  |  _  t d d d g i |  j t f d 6|  j t f d 6ƒ d d g |  j  k sZ t ‚ d  S(	   Ns   --foos	   --bar=bazs   --qu=uxt   foot   qut   ux(   Rü   N(   Rý   Rþ   (   RÇ   R   Rû   RÂ   R.   R-   RP   (   Rj   (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   test_value_equalk  s
    	c         C   sH   g  |  _  t d d g i |  j t f d 6ƒ d g |  j  k sD t ‚ d  S(   Ns   --quRþ   Rý   (   Rý   Rþ   (   RÇ   R   Rû   R.   RP   (   Rj   (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   test_value_spacer  s    	c      
   C   ss   t  j t ƒ ( t d d d g i d  t f d 6ƒ Wd  QXt  j t ƒ % t d d g i d  t f d 6ƒ Wd  QXd  S(   Ns   --foos   --bars   --qu=uxt   bar(   R¨   R©   R   R   R-   R.   (   Rj   (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt!   test_error_missing_expected_valuex  s    c      	   C   s=   t  j t ƒ ( t d d d g i d  t f d 6ƒ Wd  QXd  S(   Ns   --foos
   --bar=spams   --qu=uxR  (   R¨   R©   R   R   R-   RÂ   (   Rj   (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   test_error_unexpected_value€  s    (   Rm   Rn   Rû   Rÿ   R   R  R  (    (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyRù   g  s
   				c          C   s3   t  ƒ  }  d t f d „  ƒ  Y} |  j | ƒ  ƒ |  S(   Nt   Checkerc           B   sK   e  Z d  Z i d d d i d g d 6f d 6d d	 d
 i d d 6f d 6Z RS(   t   acheckert   messages
   msg-symbols   msg description.t   W0001s
   old-symbolt	   old_namest   W1234s(   Duplicate keyword argument %r in %s calls   duplicate-keyword-argsJ   Used when a function call passes the same keyword argument multiple times.i   i   t
   maxversiont   E1234(   R  s
   old-symbol(   i   i   (   Rm   Rn   Rq   Rr   (    (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyR  Š  s   	(   R   R   t   register_messages(   t   storeR  (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyR  †  s    	
t   TestMessagesStorec           B   sS   e  Z e d  „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 RS(   c         C   s"   | | j  d | ƒ k s t ‚ d  S(   Nt
   checkerref(   t   format_helpRP   (   Rj   t   desct   msgR  (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   _compare_messages™  s    c         C   sE   t  | j d ƒ t ƒ s t ‚ t j t ƒ  | j d ƒ Wd  QXd  S(   NR	  t   YB12(   t
   isinstancet   check_message_idR   RP   R¨   R©   R   (   Rj   R  (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   test_check_message_idœ  s    c         C   s?   | j  d ƒ } |  j d | d t ƒ|  j d | d t ƒd  S(   NR	  s_   :msg-symbol (W1234): *message*
  msg description. This message belongs to the achecker checker.R  s1   :msg-symbol (W1234): *message*
  msg description.(   R  R  R.   RÂ   (   Rj   R  R  (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   test_message_help¡  s    c         C   s?   | j  d ƒ } |  j d | d t ƒ|  j d | d t ƒd  S(   NR  s÷   :duplicate-keyword-arg (E1234): *Duplicate keyword argument %r in %s call*
  Used when a function call passes the same keyword argument multiple times.
  This message belongs to the achecker checker. It can't be emitted when using
  Python >= 2.6.R  sÑ   :duplicate-keyword-arg (E1234): *Duplicate keyword argument %r in %s call*
  Used when a function call passes the same keyword argument multiple times.
  This message can't be emitted when using Python >= 2.6.(   R  R  R.   RÂ   (   Rj   R  R  (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   test_message_help_minmax¬  s    c         C   sR   t  j ƒ  t _ z | j ƒ  t j j ƒ  } Wd  t j t _ Xd | k sN t ‚ d  S(   Ns   :msg-symbol (W1234): *message*(   Rv   Rx   RK   t   stdoutt   list_messagesRÜ   t
   __stdout__RP   (   Rj   R  Rá   (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   test_list_messages»  s    
c         C   sS   | j  d d d ƒ d | j d ƒ j k s1 t ‚ d | j d ƒ j k sO t ‚ d  S(   NR	  s   old-bad-names
   msg-symbol(   t   add_renamed_messageR  t   symbolRP   (   Rj   R  (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   test_add_renamed_messageÅ  s    c      	   C   s   t  j t ƒ  } | j d d d ƒ Wd  QXt | j ƒ d k sF t ‚ t  j t ƒ  } | j d d d ƒ Wd  QXt | j ƒ d k sŒ t ‚ d  S(   NR	  s   old-msg-symbols   duplicate-keyword-args%   Message id 'W1234' is already definedt   W1337s
   msg-symbols.   Message symbol 'msg-symbol' is already defined(   R¨   R©   R   R  RÎ   RÏ   RP   (   Rj   R  RÐ   (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt    test_add_renamed_message_invalidÊ  s    c         C   s@   d | j  d ƒ j k s t ‚ d | j  d ƒ j k s< t ‚ d  S(   Ns
   msg-symbolR  s
   old-symbol(   R  R  RP   (   Rj   R  (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   test_renamed_message_registerÖ  s    (   Rm   Rn   RÂ   R  R  R  R  R  R   R"  R#  (    (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyR  ˜  s   				
		c             s   d t  f ‡  f d †  ƒ  Y‰  t j j t d d ƒ }  t j j |  d ƒ } t j ƒ  } ˆ  ƒ  } d | j _ | j	 ƒ  | j
 | ƒ z3 t j j t j j |  ƒ ƒ | j |  | g ƒ Wd t j j ƒ  X| j } t | ƒ d k sæ t ‚ d	 | d k sü t ‚ d S(
   sY   Check that we can write custom should_analyze_file that work
    even for arguments.
    t   CustomPyLinterc              s   e  Z e ‡  f d  † Z RS(   c            s;   t  j j | ƒ d k r t St ˆ  |  ƒ j | | d | ƒS(   Ns   wrong.pyt   is_argument(   R)   RE   R   RÂ   t   supert   should_analyze_file(   Rj   t   modnameRE   R%  (   R$  (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyR'  á  s    (   Rm   Rn   RÂ   R'  (    (   R$  (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyR$  à  s   t   regrtest_datat   bad_packages   wrong.pyi    Ni   s   invalid syntax(   R   R)   RE   R   t   HERER_   R`   R   t
   persistentR?   Ry   RK   Rú   R   R{   R,   RÉ   t   lenRP   (   t   package_dirt
   wrong_fileRa   Re   RÉ   (    (   R$  s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   test_custom_should_analyze_fileÛ  s    	
	c         C   sm   t  j ƒ  } |  } | j ƒ  | j | ƒ t t d ƒ } | j | g ƒ | j } t | ƒ d k si t	 ‚ d  S(   Ns   not__init__.pyi    (
   R_   R`   R?   Ry   R   R–   R{   RÉ   R-  RP   (   Rf   Ra   Re   RH   RÉ   (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   test_filename_with__init__û  s    
	(m   t
   contextlibR    RK   R)   RÝ   R'   t   shutilR   R   R   t   os.pathR   R   R   R   R   R	   Rv   t	   six.movesR
   t   pylintR   R   t   pylint.lintR   R   R   R   t   pylint.utilsR   R   R   R   R   R   R   t   pylint.exceptionsR   R   t   pylint.testutilsR_   t   pylint.reportersR   R   t   pylint.checkers.utilsR   R   R   R¨   Rq   t   _nameR"   t   platformt   pypy_version_infot   PYPY_VERSION_INFOt   AttributeErrorR-   R1   R2   R×   R+  R–   R:   RI   t   fixtureRN   RQ   t   markt   parametrizeRU   RV   RZ   R^   Ra   Rf   R}   R…   R‰   R   Rž   R    R£   R§   R«   R¯   R°   R´   R½   RÀ   RÄ   RÊ   RÑ   RÔ   RØ   RÚ   Rä   Rå   t
   usefixtureRí   t   skipifRñ   R÷   Rø   R   Rù   R  R  R0  R1  (    (    (    s8   lib/python2.7/site-packages/pylint/test/unittest_lint.pyt   <module>   s´   ."4			
	%					$					:															
						C	 