a
    m b                     @   s   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Z d dlm	Z	 d dlm
Z
 d dlmZ ejdZd	d
 Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZdS )    N)jupyter_config_path)ExtensionManager)ExtensionMetadataError)ExtensionModuleNotFound)ExtensionPackage)ExtensionPointZ
jp_environc                  C   s   ddl m}  |  }|d }|d }|d }t|d}|j|ksBJ |j|jksRJ |d us^J t|jslJ t|jszJ | sJ d S )N    _jupyter_server_extension_pointsr   moduleappmetadata)	mockextensionsr
   r   Zmodule_namenamecallableloadlinkvalidate)r
   metadata_listZpointr   r   e r   Jlib/python3.9/site-packages/jupyter_server/tests/extension/test_manager.pytest_extension_point_api   s    
r   c                  C   s@   ddi} t t t| d W d    n1 s20    Y  d S )Nr   nonexistentr   )pytestraisesr   r   Zbad_metadatar   r   r   #test_extension_point_metadata_error'   s    r   c                  C   s@   ddi} t t t| d W d    n1 s20    Y  d S )Nr   r   r   )r   r   r   r   r   r   r   r   #test_extension_point_notfound_error.   s    r   c                  C   sv   ddl m}  |  }|d }|d }tdd}|j t|ds@J t|jt|ksVJ |j|jv sfJ | srJ d S )Nr   r	   r   r   -jupyter_server.tests.extension.mockextensionsr   extension_points)r   r
   r   r"   hasattrlenr   r   )r
   r   Zpath1r   r   r   r   r   test_extension_package_api4   s    
r%   c                   C   s8   t t tdd W d    n1 s*0    Y  d S )Nr   r!   )r   r   r   r   r   r   r   r   %test_extension_package_notfound_errorE   s    r&   c                 C   s   dd | D S )Nc                 S   s   g | ]}| tjjqS r   )rstripospathsep).0pr   r   r   
<listcomp>K       z#_normalize_path.<locals>.<listcomp>r   )	path_listr   r   r   _normalize_pathJ   s    r0   c                 C   sz   ddi}t | d}|jsJ ttjt d d}t|jjd |ksLJ || t	|j
dkshJ d|j
v svJ d S )Nr    TZ	serverappr   Zserverconfigr   )r   Zconfig_managerr0   r(   r)   joinr   Zread_config_pathZfrom_jpserver_extensionsr$   
extensions)jp_serverappZjpserver_extensionsmanagerZexpectedr   r   r   test_extension_manager_apiN   s    


r6   c                 C   s8   d}t | d}|j|dd || ||jv s4J d S )Nr    r1   Tenabled)r   add_extensionlink_extensionZlinked_extensionsr4   r   r5   r   r   r   (test_extension_manager_linked_extensionsY   s
    

r<   c                 C   s^   d}t | d}|j|dd d| _tt |j|dd W d    n1 sP0    Y  d S )Nz-jupyter_server.tests.extension.notanextensionr1   Tr7   )r   r9   !reraise_server_extension_failuresr   r   r   r;   r   r   r   test_extension_manager_fail_adda   s    
r>   c              	   C   s   d}t jdtdl t| d}|j|dd || d| _tt || W d    n1 sf0    Y  W d    n1 s0    Y  d S )N1jupyter_server.tests.extension.mockextensions.appzUjupyter_server.tests.extension.mockextensions.app.MockExtensionApp.parse_command_lineZside_effectr1   Tr7   )	mockpatchRuntimeErrorr   r9   r:   r=   r   r   r;   r   r   r    test_extension_manager_fail_linkj   s    

rD   c              	   C   s   d}t jdtdv t| d}|j|dd || || d| _t	t || W d    n1 sp0    Y  W d    n1 s0    Y  d S )Nr?   zVjupyter_server.tests.extension.mockextensions.app.MockExtensionApp.initialize_handlersr@   r1   Tr7   )
rA   rB   rC   r   r9   r:   Zload_extensionr=   r   r   r;   r   r   r    test_extension_manager_fail_loadx   s    


rE   )r(   Zunittest.mockrA   r   Zjupyter_core.pathsr   Z jupyter_server.extension.managerr   r   r   r   r   ZmarkZusefixturesZ
pytestmarkr   r   r   r%   r&   r0   r6   r<   r>   rD   rE   r   r   r   r   <module>   s(   	