
    M/e                     P   d Z ddlmZ ddlZddlZddlmZ ddlZddlm	Z	 ddl
Z
ddlmZ ddlmZ ddlmc mZ 	 ddlZ G d d	ej0                        Zd
 Zedk(  r4 ej8                   e
j:                  ej<                  dd egz                yy# e$ r ddlmc mc mZ Y ew xY w)z)Test certbot._internal.display.completer.    )reloadN)List)mock)
filesystem)osc                        e Zd ZdZ fdZd Z ej                  dej                  vd      d        Z
d Z ej                  d	d
      d        Z ej                  d	d
      d        Zd Z xZS )CompleterTestz3Test certbot._internal.display.completer.Completer.c                    t         |           | j                  d   t        j                  k7  r#| xj                  t        j                  z  c_        g | _        t        j                  D ]  }t        j                  j                  | j                  |      }| j
                  j                  |       t        |      dz  rt        j                  |       lt        |d      5  	 d d d         y # 1 sw Y   xY w)N   w)supersetUptempdirr   seppathsstringascii_lowercasepathjoinappendordr   mkdiropen)selfcr   	__class__s      P/usr/lib/python3/dist-packages/certbot/_internal/tests/display/completer_test.pyr   zCompleterTest.setUp   s     <<rvv%LLBFF"L "
'' 	A77<<a0DJJd#1vz  &$_  	 s   "C//C8	c                 |   ddl m} |j                         }t        | j                        }t        |      D ]I  }|j                  | j                  |      }|| j                  v sJ | j                  j                  |       K t        | j                        dk(  sJ |j                  | j                  |      }|J y Nr   	completer)	certbot._internal.displayr"   	Completerlenr   rangecompleter   remove)r   r"   my_completer	num_pathsi
completions         r   test_completezCompleterTest.test_complete,   s    7 **,

O	y! 	*A%..t||Q?J+++JJj)	*
 4::!###!**4<<C
!!!    readlinez*Not relevant if readline is not available.)reasonc                     t         j                  d   }d t         j                  d<   | j                          |t         j                  d<   y )Nr/   )sysmodules+test_context_manager_with_unmocked_readline)r   original_readlines     r   test_import_errorzCompleterTest.test_import_error:   s;      KK
3"&J88:"3Jr.   c                 &   ddl m} t        |       t        j                         }t        j
                         }|j                         5  	 d d d        t        j                         |k(  sJ t        j
                         |k(  sJ y # 1 sw Y   <xY wr    )r#   r"   reload_moduler/   get_completerget_completer_delimsr$   )r   r"   original_completeroriginal_delimss       r   r4   z9CompleterTest.test_context_manager_with_unmocked_readlineD   s    7i %335"779  " 		 %%'+====,,./AAA		 	s   
BBz,certbot._internal.display.completer.readlineT)autospecc                 4    d|_         | j                  |       y )Nlibedit__doc__(_test_context_manager_with_mock_readliner   mock_readlines     r   test_context_manager_libeditz*CompleterTest.test_context_manager_libeditQ   s     )55mDr.   c                 4    d|_         | j                  |       y )NzGNU readliner@   rC   s     r   test_context_manager_readlinez+CompleterTest.test_context_manager_readlineV   s     .55mDr.   c                     ddl m} t        |j                  _        |j                         5  	 d d d        |j                  j                  du sJ y # 1 sw Y   $xY w)Nr   r!   T)r#   r"   enable_tab_completionparse_and_bindside_effectr$   called)r   rD   r"   s      r   rB   z6CompleterTest._test_context_manager_with_mock_readline[   sS    73H$$0  " 		 ++22d:::	 	s   AA)__name__
__module____qualname__rA   r   r-   unittestskipIfr2   r3   r6   r4   r   patchrE   rG   rB   __classcell__)r   s   @r   r	   r	      s    =&" X__Zs{{2HJ4J4B TZZ>NE OE TZZ>NE OE;r.   r	   c                     t         j                  duxr dt         j                  v }|rdnd}t        j                  |       y)zAEnables readline tab completion using the system specific syntax.Nr?   zbind ^I rl_completeztab: complete)r/   rA   rJ   )unused_commandr?   commands      r   rI   rI   f   s:    d*LyH<L<L/LG'.#OGG$r.   __main__   ) rA   	importlibr   r8   r   r2   typingr   rP   r   pytestcertbot.compatr   r   certbot.tests.utiltestsutil	test_utilr/   ImportError(certbot._internal.display.dummy_readline	_internaldisplaydummy_readlineTempDirTestCaser	   rI   rM   exitmainargv__file__ r.   r   <module>rl      s    / -  
     %  & &@M;I-- M;`% zCHH[V[[!"
234 y  @??@s   B B%$B%