o
    û›hk  ã                   @   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mZ ddlmZ ddl	m
Z
mZmZ ddlmZ G dd„ deƒZG d	d
„ d
ejƒZG dd„ dejƒZdd„ Zdd„ Zdd„ Zdd„ ZdS )zTests for completerlib.

é    N)Újoin)ÚTemporaryDirectory)Úmagic_run_completerÚmodule_completionÚ
try_import)Úonlyif_unicode_pathsc                   @   s   e Zd Zdd„ ZdS )Ú	MockEventc                 C   s
   || _ d S ©N)Úline)Úselfr
   © r   úZc:\Users\shubh\Videos\agent\nova\Lib\site-packages\IPython/core/tests/test_completerlib.pyÚ__init__   s   
zMockEvent.__init__N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r      s    r   c                   @   sT   e Zd Zg d¢ZddgZdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ ZdS )ÚTest_magic_run_completer)úaao.pyúa.pyúb.pyúaao.txtúadir/zbdir/c              	   C   sŽ   t  ¡ | _| jD ]"}tt| j|ƒddd��}| d¡ W d   ƒ n1 s%w   Y  q| jD ]}t 	t| j|ƒ¡ q.t 
¡ | _t | j¡ d S )NÚwúutf-8©Úencodingúpass
)ÚtempfileÚmkdtempÚBASETESTDIRÚfilesÚopenr   ÚwriteÚdirsÚosÚmkdirÚgetcwdÚoldpathÚchdir)r   ÚfilÚsfileÚdr   r   r   ÚsetUp"   s   

ÿ€

zTest_magic_run_completer.setUpc                 C   ó   t  | j¡ t | j¡ d S r	   ©r$   r(   r'   ÚshutilÚrmtreer   ©r   r   r   r   ÚtearDown-   ó   z!Test_magic_run_completer.tearDownc                 C   ó.   t dƒ}d}tt||ƒƒ}|  |h d£¡ dS )ú@Test magic_run_completer, should match two alternatives
        ú%run aN¾   r   r   r   ©r   Úsetr   ÚassertEqual©r   ÚeventZmockselfÚmatchr   r   r   Útest_11   ó   zTest_magic_run_completer.test_1c                 C   ó,   t dƒ}d}tt||ƒƒ}|  |dh¡ dS )ú?Test magic_run_completer, should match one alternative
        ú%run aaNr   r8   r;   r   r   r   Útest_29   s   zTest_magic_run_completer.test_2c                 C   r4   )ú-Test magic_run_completer with unterminated " ú%run "aNr7   r8   r;   r   r   r   Útest_3A   s   zTest_magic_run_completer.test_3c                 C   s2   t dƒ}ttd |ƒƒ}|  |t| j| j ƒ¡ d S )Nz
%run a.py )r   r9   r   r:   r    r#   ©r   r<   r=   r   r   r   Útest_completion_more_argsH   s   z2Test_magic_run_completer.test_completion_more_argsc                    sP   t d tˆ jdƒ¡ƒ}tt|jƒƒ ttd |ƒƒ}ˆ  	|‡ fdd„dD ƒ¡ d S )Nz%run a.py {}Úac                    s    h | ]}t ˆ j|ƒ d d¡’qS )ú\ú/)r   r   Úreplace)Ú.0Úfr1   r   r   Ú	<setcomp>U   s    ÿzBTest_magic_run_completer.test_completion_in_dir.<locals>.<setcomp>)r   r   r   r   )
r   Úformatr   r   ÚprintÚreprr
   r9   r   r:   rG   r   r1   r   Útest_completion_in_dirM   s   ÿz/Test_magic_run_completer.test_completion_in_dirN)r   r   r   r    r#   r,   r2   r>   rC   rF   rH   rS   r   r   r   r   r      s    r   c                   @   sD   e Zd Zedd„ ƒZdd„ Zedd„ ƒZedd„ ƒZed	d
„ ƒZdS )Ú!Test_magic_run_completer_nonasciic              	   C   sn   t  ¡ | _dD ]"}tt| j|ƒddd��}| d¡ W d   ƒ n1 s$w   Y  qt ¡ | _t 	| j¡ d S )N)õ   aaÃ¸.pyr   r   r   r   r   r   )
r   r   r   r!   r   r"   r$   r&   r'   r(   )r   r)   r*   r   r   r   r,   Y   s   
ÿ€
z'Test_magic_run_completer_nonascii.setUpc                 C   r-   r	   r.   r1   r   r   r   r2   b   r3   z*Test_magic_run_completer_nonascii.tearDownc                 C   ó.   t dƒ}d}tt||ƒƒ}|  |ddh¡ dS )r5   r6   Nr   rU   r8   r;   r   r   r   r>   f   s   z(Test_magic_run_completer_nonascii.test_1c                 C   r@   )rA   rB   NrU   r8   r;   r   r   r   rC   o   s   z(Test_magic_run_completer_nonascii.test_2c                 C   rV   )rD   rE   Nr   rU   r8   r;   r   r   r   rF   x   r?   z(Test_magic_run_completer_nonascii.test_3N)	r   r   r   r   r,   r2   r>   rC   rF   r   r   r   r   rT   X   s    


rT   c                  C   s¶   h d£} dh}t ƒ �G}tj d|¡ | |B D ]}tj ||d ¡}t|ddd� ¡  qtt	dƒƒ}| 
| ¡}|tƒ ks=J ‚| |¡sIJ | 
|¡ƒ‚W d	  ƒ d	S 1 sTw   Y  d	S )
z?Testing of issue https://github.com/ipython/ipython/issues/1107>   zfoo:barZ10foozfoo-barZfoobarr   z.pyr   r   r   z
import fooN)r   ÚsysÚpathÚinsertr$   r   r!   Úcloser9   r   ÚintersectionÚissubset)Zinvalid_module_namesZvalid_module_namesÚtmpdirÚnameÚfilenameÚsr[   r   r   r   Útest_import_invalid_module‚   s   
"öra   c               	   C   s|   t j t¡} tj d| ¡ z)tdƒ}d|v sJ ‚|D ]	}t|tƒs#J ‚qtdƒ}|g ks.J ‚W tj 	| ¡ dS tj 	| ¡ w )zYTest module with invalid __all__

    https://github.com/ipython/ipython/issues/9678
    r   zfrom bad_all import Zpuppieszimport bad_all.N)
r$   rX   ÚdirnameÚ__file__rW   rY   r   Ú
isinstanceÚstrÚremove)ZtestsdirÚresultsÚrr   r   r   Útest_bad_module_all“   s   ri   c               
   C   s’   d} t ƒ �:}tj d|¡ z"t tj || ¡¡ t| d�}|g ks(J d| › �ƒ‚W tj |¡ ntj |¡ w W d  ƒ dS 1 sBw   Y  dS )zc
    Test module without __init__.py.
    
    https://github.com/ipython/ipython/issues/11226
    Zfoor   )Úmodzfor module N)	r   rW   rX   rY   r$   Úmakedirsr   r   rf   )Zfake_module_namer]   r`   r   r   r   Útest_module_without_init¨   s   
"ùrl   c                  C   s$   t dƒ} d| v s
J ‚d| vsJ ‚dS )zA
    Test checking exported (__all__) objects are submodules
    zimport os.pazos.pathzos.pathconfN)r   )rg   r   r   r   Útest_valid_exported_submodules¹   s   rm   )Ú__doc__r$   r/   rW   r   ZunittestZos.pathr   r   ZIPython.core.completerlibr   r   r   ZIPython.testing.decoratorsr   Úobjectr   ZTestCaser   rT   ra   ri   rl   rm   r   r   r   r   Ú<module>   s"   :*