
    }ek                         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e      Z G d	 d
ej"                        Z G d dej"                        Zd Zd Zd Zd Zy)zTests for completerlib.

    N)join)TemporaryDirectory)magic_run_completermodule_completion
try_import)onlyif_unicode_pathsc                       e Zd Zd Zy)	MockEventc                     || _         y N)line)selfr   s     F/usr/lib/python3/dist-packages/IPython/core/tests/test_completerlib.py__init__zMockEvent.__init__   s	    	    N)__name__
__module____qualname__r    r   r   r
   r
      s    r   r
   c                   F    e Zd Zg dZddgZd Zd Zd Zd Zd Z	d	 Z
d
 Zy)Test_magic_run_completer)aao.pya.pyb.pyaao.txtadir/zbdir/c                    t        j                         | _        | j                  D ]>  }t	        t        | j                  |      dd      5 }|j                  d       d d d        @ | j                  D ]+  }t        j                  t        | j                  |             - t        j                         | _        t        j                  | j                         y # 1 sw Y   xY w)Nwutf-8encodingpass
)tempfilemkdtempBASETESTDIRfilesopenr   writedirsosmkdirgetcwdoldpathchdir)r   filsfileds       r   setUpzTest_magic_run_completer.setUp"   s    #++-:: 	&Cd4++S13I &UH%& &	&  	0AHHT$**A./	0 yy{
!!"& &s   CC#	c                     t        j                  | j                         t        j                  | j
                         y r   r*   r.   r-   shutilrmtreer%   r   s    r   tearDownz!Test_magic_run_completer.tearDown-   $    
d&&'r   c                 p    t        d      }d}t        t        ||            }| j                  |h d       y)@Test magic_run_completer, should match two alternatives
        %run aN   r   r   r   r
   setr   assertEqualr   eventmockselfmatchs       r   test_1zTest_magic_run_completer.test_11   s6     )$'%89 >?r   c                 n    t        d      }d}t        t        ||            }| j                  |dh       y)?Test magic_run_completer, should match one alternative
        %run aaNr   r>   rA   s       r   test_2zTest_magic_run_completer.test_29   s7     *%'%89,r   c                 p    t        d      }d}t        t        ||            }| j                  |h d       y)-Test magic_run_completer with unterminated " %run "aNr=   r>   rA   s       r   test_3zTest_magic_run_completer.test_3A   s4    *%'%89 >?r   c                     t        d      }t        t        d |            }| j                  |t        | j                  | j
                  z                y )Nz
%run a.py )r
   r?   r   r@   r&   r)   )r   rB   rD   s      r   test_completion_more_argsz2Test_magic_run_completer.test_completion_more_argsH   s@    -('e45DJJ$: ;<r   c           
      X   t        dj                  t        | j                  d                  }t	        t        |j                               t        t        d |            }| j                  |dD ch c](  }t        | j                  |      j                  dd      * c}       y c c}w )Nz%run a.py {}a)r   r   r   r   \/)r
   formatr   r%   printreprr   r?   r   r@   replace)r   rB   rD   fs       r   test_completion_in_dirz/Test_magic_run_completer.test_completion_in_dirM   s    /00d6F6F1LMNd5::'e45 	%O!Q ! "&d&6&6!:!B!B4!L !Q 	R !Qs   2-B'
N)r   r   r   r&   r)   r2   r8   rE   rI   rM   rO   rY   r   r   r   r   r      s7    5EgD	#(@-@=
	Rr   r   c                   R    e Zd Zed        Zd Zed        Zed        Zed        Zy)!Test_magic_run_completer_nonasciic                 D   t        j                         | _        dD ]>  }t        t	        | j                  |      dd      5 }|j                  d       d d d        @ t        j                         | _        t        j                  | j                         y # 1 sw Y   xY w)N)   aaø.pyr   r   r   r   r    r"   )
r#   r$   r%   r'   r   r(   r*   r,   r-   r.   )r   r/   r0   s      r   r2   z'Test_magic_run_completer_nonascii.setUpY   s    #++-1 	&Cd4++S13I &UH%& &	& yy{
!!"& &s   BB	c                     t        j                  | j                         t        j                  | j
                         y r   r4   r7   s    r   r8   z*Test_magic_run_completer_nonascii.tearDownb   r9   r   c                 p    t        d      }d}t        t        ||            }| j                  |ddh       y)r;   r<   Nr   r]   r>   rA   s       r   rE   z(Test_magic_run_completer_nonascii.test_1f   s:     )$'%89* 56r   c                 n    t        d      }d}t        t        ||            }| j                  |dh       y)rG   rH   Nr]   r>   rA   s       r   rI   z(Test_magic_run_completer_nonascii.test_2o   s7     *%'%89-r   c                 p    t        d      }d}t        t        ||            }| j                  |ddh       y)rK   rL   Nr   r]   r>   rA   s       r   rM   z(Test_magic_run_completer_nonascii.test_3x   s:     *%'%89* 56r   N)	r   r   r   r   r2   r8   rE   rI   rM   r   r   r   r[   r[   X   sU    # #( 7 7 . . 7 7r   r[   c                     h d} dh}t               5 }t        j                  j                  d|       | |z  D ]A  }t        j                  j                  ||dz         }t        |dd      j                          C t        t        d            }|j                  |       }|t               k(  sJ |j                  |      sJ |j                  |             	 d	d	d	       y	# 1 sw Y   y	xY w)
z?Testing of issue https://github.com/ipython/ipython/issues/1107>   foo-barfoo:bar10foofoobarr   z.pyr   r   r    z
import fooN)r   syspathinsertr*   r   r'   closer?   r   intersectionissubset)invalid_module_namesvalid_module_namestmpdirnamefilenamesrk   s          r   test_import_invalid_modulers      s    :"		 
RF$(+== 	:Dww||FD5L9H31779	: "<02~~&:;su$$$!**1-Q/A/N/Nq/QQ-
R 
R 
Rs   CC!!C*c                     t         j                  j                  t              } t        j                  j                  d|        	 t        d      }d|v sJ |D ]  }t        |t              rJ  t        d      }|g k(  sJ 	 t        j                  j                  |        y# t        j                  j                  |        w xY w)zYTest module with invalid __all__

    https://github.com/ipython/ipython/issues/9678
    r   zfrom bad_all import puppieszimport bad_all.N)
r*   rh   dirname__file__rg   ri   r   
isinstancestrremove)testsdirresultsrs      r   test_bad_module_allr~      s    
 wwx(HHHOOAx "#$:;G### 	&Aa%%%	&
 $$56"}}!!s   &B" ,B" "!Cc                     d} t               5 }t        j                  j                  d|       	 t	        j
                  t        j                  j                  ||              t        |       }|g k(  s
J d|         	 t        j                  j                  |       	 ddd       y# t        j                  j                  |       w xY w# 1 sw Y   yxY w)zc
    Test module without __init__.py.
    
    https://github.com/ipython/ipython/issues/11226
    foor   )modzfor module N)	r   rg   rh   ri   r*   makedirsr   r   rz   )fake_module_namero   rr   s      r   test_module_without_initr      s     		 $6"	$KKV-=>?/0A7<k*:);<<7HHOOF#$ $ HHOOF#$ $s#   !CAB'>C'!CCCc                  2    t        d      } d| v sJ d| vsJ y)zA
    Test checking exported (__all__) objects are submodules
    zimport os.pazos.pathzos.pathconfN)r   )r|   s    r   test_valid_exported_submodulesr      s*      /G'''r   )__doc__r*   r5   rg   r#   unittestos.pathr   r   IPython.core.completerlibr   r   r   IPython.testing.decoratorsr   objectr
   TestCaser   r[   rs   r~   r   r   r   r   r   <module>r      ss    
  
    ' X X ; 8Rx00 8Rt&7(9(9 &7TR""*$"(r   