U
    ÓZjü  ã                   @   sÈ   d Z zddlZW n& ek
r6   ddlm  mZ Y nX 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 ddlmZ ddlmZ ddlm  mZ G dd„ dejƒZd	d
„ ZedkrÄe ¡  dS )zTest certbot.display.completer.é    N)Úreload_module)ÚList)Úos)Ú
filesystemc                       s€   e Zd ZdZ‡ fdd„Zdd„ Zejdej	kdd�d	d
„ ƒZ
dd„ Zejddd�dd„ ƒZejddd�dd„ ƒZdd„ Z‡  ZS )ÚCompleterTestz)Test certbot.display.completer.Completer.c              
      sŽ   t t| ƒ ¡  | jd tjkr.|  jtj7  _g | _tjD ]N}tj	 
| j|¡}| j |¡ t|ƒd rrt |¡ q:t|dƒ� W 5 Q R X q:d S )Néÿÿÿÿé   Úw)Úsuperr   ÚsetUpÚtempdirr   ÚsepÚpathsÚstringÚascii_lowercaseÚpathÚjoinÚappendÚordr   ÚmkdirÚopen)ÚselfÚcr   ©Ú	__class__© úg/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/certbot/tests/display/completer_test.pyr      s    
zCompleterTest.setUpc                 C   s€   ddl m} | ¡ }t| jƒ}t|ƒD ].}| | j|¡}|  || jk¡ | j 	|¡ q&|  
| j¡ | | j|¡}|  |d ¡ d S ©Nr   )Ú	completer)Úcertbot.displayr   Ú	CompleterÚlenr   ÚrangeZcompleter   Ú
assertTrueÚremoveZassertFalseÚassertEqual)r   r   Zmy_completerZ	num_pathsÚiÚ
completionr   r   r   Útest_complete*   s    
zCompleterTest.test_completeÚreadlinez*Not relevant if readline is not available.)Úreasonc                 C   s*   t jd }d t jd< |  ¡  |t jd< d S )Nr)   )ÚsysÚmodulesÚ+test_context_manager_with_unmocked_readline)r   Zoriginal_readliner   r   r   Útest_import_error8   s    

zCompleterTest.test_import_errorc              	   C   s\   ddl m} t|ƒ t ¡ }t ¡ }| ¡ � W 5 Q R X |  t ¡ |¡ |  t ¡ |¡ d S r   )r   r   r   r)   Zget_completerZget_completer_delimsr    r%   )r   r   Zoriginal_completerZoriginal_delimsr   r   r   r-   B   s    

z9CompleterTest.test_context_manager_with_unmocked_readlinez"certbot.display.completer.readlineT)Zautospecc                 C   s   d|_ |  |¡ d S )NÚlibedit©Ú__doc__Ú(_test_context_manager_with_mock_readline©r   Úmock_readliner   r   r   Útest_context_manager_libeditO   s    z*CompleterTest.test_context_manager_libeditc                 C   s   d|_ |  |¡ d S )NzGNU readliner0   r3   r   r   r   Útest_context_manager_readlineT   s    z+CompleterTest.test_context_manager_readlinec              	   C   s:   ddl m} t|j_| ¡ � W 5 Q R X |  |jj¡ d S r   )r   r   Úenable_tab_completionÚparse_and_bindZside_effectr    r#   Zcalled)r   r4   r   r   r   r   r2   Y   s
    

z6CompleterTest._test_context_manager_with_mock_readline)Ú__name__Ú
__module__Ú__qualname__r1   r   r(   ÚunittestZskipIfr+   r,   r.   r-   ÚmockÚpatchr5   r6   r2   Ú__classcell__r   r   r   r   r      s   ÿ


r   c                 C   s.   t jdk	odt jk}|rdnd}t  |¡ dS )zAEnables readline tab completion using the system specific syntax.Nr/   zbind ^I rl_completeztab: complete)r)   r1   r8   )Zunused_commandr/   Úcommandr   r   r   r7   d   s    r7   Ú__main__)r1   r)   ÚImportErrorZcertbot.display.dummy_readlineÚdisplayZdummy_readliner   r+   r<   r=   Z	six.movesr   Zacme.magic_typingr   Zcertbot.compatr   r   Zcertbot.tests.utilZtestsÚutilZ	test_utilZTempDirTestCaser   r7   r9   Úmainr   r   r   r   Ú<module>   s"   P