ó
E®Uc           @   s¨   d  Z  d d l Z d d l Z d d l Z d d l Z d d l Z d d l j j Z	 d e j
 j f d „  ƒ  YZ d „  Z d „  Z e d „ Z d e f d	 „  ƒ  YZ d S(
   s$   Tests for presence of documentation.iÿÿÿÿNt   TestCasec           B   s   e  Z d  „  Z RS(   c         C   s+   t  | ƒ } | j ƒ  | d d j | ƒ S(   Ns   

    %ss   
    (   t   listt   sortt   join(   t   selft
   parameterst   message(    (    s4   /usr/lib/python2.7/dist-packages/samba/tests/docs.pyt   _format_message    s    
(   t   __name__t
   __module__R   (    (    (    s4   /usr/lib/python2.7/dist-packages/samba/tests/docs.pyR       s   c   
      c   s8  t  j j |  d d d d ƒ } t  j j t  j j | d ƒ ƒ sN t d ƒ ‚ n  y" t t  j j | d ƒ d ƒ } Wn t k
 r‘ } t d ƒ ‚ n X| j ƒ  } t j	 | ƒ } xz | D]r } | j
 j d	 ƒ } | j
 j d
 ƒ d k rê q´ n  | V| j d ƒ } | d  k	 r´ x | D] }	 |	 j VqWq´ q´ W| j ƒ  d  S(   Nt   bint   defaults   docs-xmlt
   smbdotconfs   parameters.all.xmls!   Unable to find parameters.all.xmlt   rs   Error opening parameters filet   namet   removedt   1t   synonym(   t   ost   pathR   t   existst	   Exceptiont   opent   IOErrort   readt   ETt
   fromstringt   attribt   gett   findallt   Nonet   textt   close(
   t	   sourcedirR   t   pt   et   outt   roott	   parameterR   t   synt   sy(    (    s4   /usr/lib/python2.7/dist-packages/samba/tests/docs.pyt   get_documented_parameters&   s&    !"c         c   s¿   t  t j j |  d ƒ d ƒ } z x) t rL | j ƒ  } | j d ƒ r$ Pq$ q$ Wx\ | j ƒ  D]N } t j	 d | ƒ rv Pn  t j	 d | ƒ } | s” qZ n  | j
 d ƒ } | VqZ WWd  | j ƒ  Xd  S(   Ns   lib/param/param_table.cR   s   struct parm_struct parm_tables   ^\s*\}\;\s*$s   \s*\.label\s*=\s*"(.*)".*i   (   R   R   R   R   t   Truet   readlinet
   startswitht	   readlinest   ret   matcht   groupR    (   R!   t   ft   lt   mR   (    (    s4   /usr/lib/python2.7/dist-packages/samba/tests/docs.pyt   get_implementation_parameters=   s    	c         c   sí  t  j j |  d d d d ƒ } t  j j t  j j | d ƒ ƒ sN t d ƒ ‚ n  y" t t  j j | d ƒ d ƒ } Wn t k
 r‘ } t d ƒ ‚ n X| j ƒ  } t j	 | ƒ } x/| D]'} | j
 j d	 ƒ } | j
 j d
 ƒ }	 | j
 j d ƒ d k rü q´ n  | j d ƒ }
 g  } x6 |
 D]. } | j
 j d
 ƒ d k r| j | ƒ qqWd  } t | ƒ d k rq| r£q´ q£n2 t | ƒ d k r–t d | ƒ ‚ n | d j } | d  k r¸d } n  | j
 j d ƒ } | | | |	 f Vq´ W| j ƒ  d  S(   NR
   R   s   docs-xmlR   s   parameters.all.xmls!   Unable to find parameters.all.xmlR   s   Error opening parameters fileR   t   typeR   R   t   valuei    i   s,   More than one default found for parameter %st    t   context(   R   R   R   R   R   R   R   R   R   R   R   R   R   t   appendR   t   lenR   R    (   R!   t   omit_no_defaultR   R"   R#   R$   R%   R&   R   t
   param_typet   valuest   defaultsR6   t   default_textR8   (    (    s4   /usr/lib/python2.7/dist-packages/samba/tests/docs.pyt   get_documented_tuplesT   s>    !"		t   SmbDotConfTestsc        !   B   sÑ   e  Z e d  d d d d d d d d d	 d
 d d d d d d d d d d d d d d d d d d d d d g  ƒ Z d  „  Z d! „  Z d" „  Z d# „  Z d$ „  Z d% „  Z	 d& „  Z
 d' „  Z d* d( „ Z d) „  Z RS(+   s	   log levelR   s   ldapsam:trusteds   spoolss: architectures   share:fake_fscapss   ldapsam:editposixs   rpc_daemon:DAEMONs   rpc_server:SERVERs   panic actions   homedir maps   NIS homedirs   server strings   netbios names   socket optionss   use mmaps   ctdbd sockett   printings   printcap names   queueresume commands   queuepause commands   lpresume commands   lppause commands   lprm commands   lpq commands   print commands   template homedirs   spoolss: os_majors   spoolss: os_minors   spoolss: os_builds   max open filess   fss: prune stales   fss: sequence timeoutc         C   s¯   t  t |  ƒ j ƒ  t j j |  j d ƒ |  _ t |  j d ƒ } z | j	 d ƒ Wd  | j
 ƒ  Xt j j |  j d ƒ |  _ t |  j d ƒ } z | j	 d ƒ Wd  | j
 ƒ  Xd  S(   Ns   paramtestsmb.conft   ws   
[test]
   path = /
s   emptytestsmb.confR7   (   t   superRA   t   setUpR   R   R   t   tempdirt   smbconfR   t   writeR    t	   blankconf(   R   R1   (    (    s4   /usr/lib/python2.7/dist-packages/samba/tests/docs.pyRE   †   s    c         C   s7   t  t |  ƒ j ƒ  t j |  j ƒ t j |  j ƒ d  S(   N(   RD   RA   t   tearDownR   t   unlinkRG   RI   (   R   (    (    s4   /usr/lib/python2.7/dist-packages/samba/tests/docs.pyRJ   š   s    c         C   sÍ   t  j j t j ƒ  ƒ } y t t | ƒ ƒ } Wn t k
 rN |  j d ƒ n Xt t	 | ƒ ƒ } t g  | D] } d | k rk | ^ qk ƒ } | j
 | ƒ } t | ƒ d k rÉ |  j |  j | d ƒ ƒ n  d  S(   Ns   Unable to load parameterst   :i    s=   Parameters that are documented but not in the implementation:(   R   R   t   abspatht   sambat   source_tree_topdirt   setR)   R#   t   failR4   t
   differenceR:   R   (   R   t   topdirt
   documentedR   R"   t   unknown(    (    s4   /usr/lib/python2.7/dist-packages/samba/tests/docs.pyt   test_unknownŸ   s    +c         C   s˜   t  j j t j ƒ  ƒ } y t t | ƒ ƒ } Wn |  j d ƒ n Xt t | ƒ ƒ } | j	 | ƒ } t
 | ƒ d k r” |  j |  j | d ƒ ƒ n  d  S(   Ns   Unable to load parametersi    s;   Parameters that are in the implementation but undocumented:(   R   R   RM   RN   RO   RP   R)   RQ   R4   RR   R:   R   (   R   RS   RT   R   t   undocumented(    (    s4   /usr/lib/python2.7/dist-packages/samba/tests/docs.pyt   test_undocumented®   s    c         C   sV   |  j  d g ƒ |  j d g ƒ |  j d g d d d d d g ƒ|  j d g ƒ d  S(   Ns   bin/testparmt
   exceptionss   client lanman auths   client plaintext auths   registry sharess	   smb ports(   t   _test_defaultt   _set_defaultst   _set_arbitraryt   _test_empty(   R   (    (    s4   /usr/lib/python2.7/dist-packages/samba/tests/docs.pyt   test_default_s3º   s    
c         C   sY   |  j  d d g ƒ |  j d d g ƒ |  j d d g d d g ƒ|  j d d g ƒ d  S(   Ns   bin/samba-toolt   testparmRY   s	   smb ports(   RZ   R[   R\   R]   (   R   (    (    s4   /usr/lib/python2.7/dist-packages/samba/tests/docs.pyt   test_default_s4Æ   s
    
c      	   C   sá  t  j j t j ƒ  ƒ } y t t | ƒ ƒ } Wn |  j d ƒ n Xt  j j | d ƒ } t ƒ  } d } xC| D];} | \ } }	 }
 } | |  j	 k r qp n  d  } |
 d k r¸ d } n& |
 d k rÍ d } n |  j d | ƒ t j | d	 |  j d
 | d | g d t j d t j d | ƒj ƒ  } | d j ƒ  j ƒ  |	 j ƒ  k rp | d j ƒ  j ƒ  d k ok|	 d k s«d | |	 f } | j d | | d j ƒ  j ƒ  f ƒ q«qp qp Wt | ƒ d k rÝ|  j |  j | d ƒ ƒ n  d  S(   Ns   Unable to load parametersR
   i    t   Gt   globalt   St   tests   %s has no valid contexts   -ss   --section-names   --parameter-namet   stdoutt   stderrt   cwdR7   s   ""s   %s
      Expected: %ss   %s
      Got: %ss.   Parameters that do not have matching defaults:(   R   R   RM   RN   RO   RP   R@   RQ   R   t   special_casesR   t
   subprocesst   PopenRG   t   PIPEt   communicatet   uppert   stript   addR:   R   (   R   t   programRS   R>   t   bindirt   failsett   countt   tuplest   paramR   R8   R<   t   sectionR"   t
   doc_triple(    (    s4   /usr/lib/python2.7/dist-packages/samba/tests/docs.pyRZ   Í   s8    			!"(1c         C   sî  t  j j t j ƒ  ƒ } y t t | ƒ ƒ } Wn |  j d ƒ n Xt  j j | d ƒ } t ƒ  } d } xP| D]H} | \ } }	 }
 } | d k rš qp n  d  } |
 d k rµ d } n& |
 d k rÊ d } n |  j d	 | ƒ t
 j | d
 |  j d | d | d d | |	 f g d t
 j d t
 j d | ƒj ƒ  } | d j ƒ  j ƒ  |	 j ƒ  k rp | d j ƒ  j ƒ  d k ox|	 d k s¸d | |	 f } | j d | | d j ƒ  j ƒ  f ƒ q¸qp qp Wt | ƒ d k rê|  j |  j | d ƒ ƒ n  d  S(   Ns   Unable to load parametersR
   i    RB   Ra   Rb   Rc   Rd   s   %s has no valid contexts   -ss   --section-names   --parameter-names   --options   %s = %sRe   Rf   Rg   R7   s   ""s   %s
      Expected: %ss   %s
      Got: %ss.   Parameters that do not have matching defaults:(   RB   (   R   R   RM   RN   RO   RP   R@   RQ   R   R   Ri   Rj   RG   Rk   Rl   Rm   Rn   Ro   R:   R   (   R   Rp   RS   R>   Rq   Rr   Rs   Rt   Ru   R   R8   R<   Rv   R"   Rw   (    (    s4   /usr/lib/python2.7/dist-packages/samba/tests/docs.pyR[   î   s:    			!"(1c         C   s"  i d d 6d d 6d d 6d d 6d d 6d	 d
 6d d 6} i d d 6d d 6d d 6d d 6d d 6d d
 6d d 6} t  j j t j ƒ  ƒ } y t t | t ƒ ƒ } Wn$ t k
 rÅ } |  j	 d | ƒ n Xt  j j
 | d ƒ } t ƒ  }	 d }
 x| D]û} | \ } } } } | d3 k rqñ n  | d4 k r-qñ n  | d  k	 rN| | k rNqñ qNn  d  } | d k rid } n& | d k r~d } n |  j	 d | ƒ | j | ƒ } | d  k r¾|  j	 d | ƒ n  t j | d |  j d  | d! | d" d# | | f g d$ t j d% t j d& | ƒj ƒ  } | d j ƒ  j ƒ  | j ƒ  k r| d k r|d' j
 | d j ƒ  j ƒ  j ƒ  ƒ | j ƒ  k r|qñ q|n  | d k rÇy2 t | d( ƒ t | d j ƒ  d( ƒ k r¹wñ n  WqÇqÇXn  d) | | f } |	 j d* | | d j ƒ  j ƒ  f ƒ n  | j | ƒ } t  j j
 |  j d+ ƒ } t | d, ƒ } z- | d- } | | d. | 7} | j | ƒ Wd  | j ƒ  Xt j | d | d/ d" d# | | f g d$ t j d% t j d& | ƒj ƒ  } t  j | ƒ | j ƒ  | j ƒ  k rñ x| d j ƒ  D]ó } | j ƒ  j | ƒ sqòn  | j d0 ƒ d1 j ƒ  j ƒ  } | | j ƒ  k rò| d k rzd' j
 | j ƒ  ƒ | j ƒ  k rzqòqzn  | d k r»y( t | d( ƒ t | d( ƒ k r­wòn  Wq»q»Xn  d) | | f } |	 j d* | | f ƒ qòqòWqñ qñ Wt |	 ƒ d k r|  j	 |  j  |	 d2 ƒ ƒ n  d  S(5   Nt   stringt   yest   booleant   5t   integerR7   t   enums   boolean-autot   at   chars   a, b, cR   t   string2t   not   6t   bs   d, e, fs   Unable to load parametersR
   i    RB   t   copyt   includes	   log levelRa   Rb   Rc   Rd   s   %s has no valid contexts   %s has an invalid types   -ss   --section-names   --parameter-names   --options   %s = %sRe   Rf   Rg   s   , i   s   %s
      Expected: %ss   %s
      Got: %ss   tempsmb.confRC   s   
s    = s   --suppress-promptt   =i   s*   Parameters that were unexpectedly not set:(   s   printings   copys   includes	   log level(   R}   s   boolean-auto(!   R   R   RM   RN   RO   RP   R@   t   FalseR   RQ   R   R   R   Ri   Rj   RG   Rk   Rl   Rm   Rn   t   splitt   intRo   RF   R   RH   R    RK   t   lowert
   splitlinesR,   R:   R   (   R   Rp   RY   t	   arbitraryt   opposite_arbitraryRS   R>   R#   Rq   Rr   Rs   Rt   Ru   R   R8   R<   Rv   t   value_to_useR"   Rw   t   opposite_valuet   tempconft   gt   towritet   linet   value_found(    (    s4   /usr/lib/python2.7/dist-packages/samba/tests/docs.pyR\     sœ    				!"1	(
*
!!	
%c         C   sþ   t  j j t j ƒ  ƒ } t j | d |  j d g d t j d t j d | ƒj	 ƒ  } d } xh | d j
 ƒ  D]V } | j ƒ  j d ƒ r ql n  | j ƒ  j d	 ƒ r¨ ql n  | | j ƒ  j ƒ  d
 7} ql W| j ƒ  d k rú | j ƒ  d k rú |  j d ƒ n  d  S(   Ns   -ss   --suppress-promptRe   Rf   Rg   R7   i    t   #s   idmap config *s   
s   [global]s	   [globals]s9   Testparm returned unexpected output on an empty smb.conf.(   R   R   RM   RN   RO   Ri   Rj   RI   Rk   Rl   R‹   Rn   R,   RŠ   RQ   (   R   Rp   RS   R"   t   outputR“   (    (    s4   /usr/lib/python2.7/dist-packages/samba/tests/docs.pyR]   |  s    !$N(   R   R	   RP   Rh   RE   RJ   RV   RX   R^   R`   RZ   R[   R   R\   R]   (    (    (    s4   /usr/lib/python2.7/dist-packages/samba/tests/docs.pyRA   y   s&   										!	$j(   t   __doc__RN   t   samba.testsR   R.   Ri   t   xml.etree.ElementTreet   etreet   ElementTreeR   t   testst   TestCaseInTempDirR    R)   R4   R*   R@   RA   (    (    (    s4   /usr/lib/python2.7/dist-packages/samba/tests/docs.pyt   <module>   s   		%