o
    iU                     @   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
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mZ dd
lmZ ejZddlmZm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$e
j%&dg d d!d" Z'e
j%&dd#d$gd%d& Z(e)d'Z*d(d) Z+d*d+ Z,d,d- Z-G d.d/ d/ej.Z/d0d1 Z0G d2d3 d3eZ1ej23d4sG d5d6 d6eZ4G d7d8 d8eZ5dS )9zTest NotebookApp    N)NamedTemporaryFile)patchcheck_help_all_output)NoStart)TemporaryDirectory)
TraitError)notebookapp__version__)passwd_check   )NotebookTestBaseUNIXSocketNotebookTestBasec                   C   s   t d dS )z!ipython notebook --help-all worksnotebookNr    r   r   Z/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/notebook/tests/test_notebookapp.pytest_help_output   s   r   c                     s   t  } t| jt d  fdd} jg d    | }t|dks'J |d d  jks2J |d d  j	ks=J  
  | g ksHJ  
  d S )	N)runtime_dirlogc                      s   t t jS N)listr	   list_running_serversr   r   nbappr   r   get_servers!   s   z*test_server_info_file.<locals>.get_servers)argvr   r   porturl)r   NotebookAppnamelogging	getLogger
initializewrite_server_info_filelenr   connection_urlremove_server_info_file)tdr   serversr   r   r   test_server_info_file   s   r)   c                  C   sD   t  } t| d}|j| ksJ W d    d S 1 sw   Y  d S Nnotebook_dir)r   r   r,   r'   appr   r   r   test_nb_dir/   s   
"r/   c               	   C   s   t  3} tj| d}t }tt ||_W d    n1 s!w   Y  W d    d S W d    d S 1 s9w   Y  d S )N	notebooks	r   ospathjoinr   pytestraisesr   r,   r'   nbdirr.   r   r   r   test_no_create_nb_dir4   s   "r9   c               	   C   s   t  6} tj| dddd}t }tt ||_W d    n1 s$w   Y  W d    d S W d    d S 1 s<w   Y  d S )Nr   dirismissingr1   r7   r   r   r   test_missing_nb_dir;   s   "r=   c               	   C   sr   t  ,} t }tt | |_W d    n1 sw   Y  W d    d S W d    d S 1 s2w   Y  d S r   )r   r   r5   r6   r   r,   )tfr.   r   r   r   test_invalid_nb_dirB   s   "r?   c                  C   sR   t dtj d} t| d}|jtjrJ W d    d S 1 s"w   Y  d S )N_slash)suffixr+   )r   r2   sepr   r,   endswithr-   r   r   r   test_nb_dir_with_slashH   s   
"rD   c                  C   s*   t jt j} t| d}|j| ksJ d S r*   )r2   r3   abspathrB   r   r,   )rootr.   r   r   r   test_nb_dir_rootM   s   
rG   c               	   C   s   t  ;} t| d}|ddg tt |  W d    n1 s$w   Y  tj	tj
| ds6J W d    d S 1 sAw   Y  d S )N)
config_dirz--generate-configz--allow-rootzjupyter_notebook_config.py)r   r   r"   r5   r6   r   startr2   r3   existsr4   r-   r   r   r   test_generate_configR   s   

"rK   version)z4.1.0.b1z4.1.b1z4.2zX.y.zz1.2.3.dev1.post2c                 C   s8   t t t|  W d    d S 1 sw   Y  d S r   )r5   r6   
ValueErrorraise_on_bad_versionrL   r   r   r   test_pep440_bad_version[   s   

"rP   z4.1.1z4.2.1b3c                 C   s   t |  d S r   )rN   rO   r   r   r   test_pep440_good_versionh   s   rQ   z:^(\d+)\.(\d+)\.(\d+((a|b|rc)\d+)?)(\.post\d+)?(\.dev\d*)?$c                 C   s   t | s	tdd S )NzVersions String does apparently not match Pep 440 specification, which might lead to sdist and wheel being seen as 2 different release. E.g: do not use dots for beta/alpha/rc markers.)pep440rematchrM   rO   r   r   r   rN   s   s   
rN   c                   C   s   t t d S r   )rN   r
   r   r   r   r   test_current_versiony   s   rT   c               
   C   s   d} t  e}tdd|iD tjtd| d, tjtjd}|	g  |
  t }|  |jdks6J t|j|  W d    n1 sFw   Y  W d    n1 sUw   Y  W d    d S W d    d S 1 smw   Y  d S )Nsecretz
os.environJUPYTER_CONFIG_DIRgetpass)return_value)	log_level )r   r   dictobjectrW   r	   NotebookPasswordAppr    ERRORr"   rI   r   load_config_filepasswordr   )r`   r'   r.   nbr   r   r   test_notebook_password|   s(   
 "rb   c                       s(   e Zd ZdZ fddZdd Z  ZS )StopAppTestz)For testing the logic of NbserverStopApp.c                    s   t  jdi | g | _d S )Nr   )super__init__servers_shut_down)selfkwargs	__class__r   r   re      s   
zStopAppTest.__init__c                 C   s   | j | dS )NT)rf   append)rg   serverr   r   r   shutdown_server   s   zStopAppTest.shutdown_server)__name__
__module____qualname____doc__re   rm   __classcell__r   r   ri   r   rc      s    rc   c               
   C   s.  dd } t d| }| t }|dg |  W d    n1 s#w   Y  t|jdks1J |jd d dks<J |F t d	2}t }|d
g tt}|  W d    n1 saw   Y  |j	j
dksnJ W d    n1 sxw   Y  W d    n1 sw   Y  t|jdksJ d S )Nc                 s   s:    t ddD ]}d| |ddddddd| d		V  qd S )
Nd   n   i  /	localhostFrZ   zhttp://localhost:)	pidr   base_urlhostnamer,   securetokenr`   r   )range)r   r   r   r   r   r      s   
z0test_notebook_stop.<locals>.list_running_serversz)notebook.notebookapp.list_running_servers105r   r   r   i   zos.kill999)r   rc   r"   rI   r$   rf   r5   r6   
SystemExitvaluecode)r   mock_serversr.   os_killexcr   r   r   test_notebook_stop   s(   


 r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )NotebookAppTestsc                 C   8   t t }t|dksJ | jdd |D v sJ d S )Nr   c                 S      h | ]}|d  qS )r   r   .0infor   r   r   	<setcomp>       z=NotebookAppTests.test_list_running_servers.<locals>.<setcomp>)r   r	   r   r$   r   rg   r(   r   r   r   test_list_running_servers      z*NotebookAppTests.test_list_running_serversc                 C   s   |  | jj d S r   )assertFalser   log_jsonrg   r   r   r   test_log_json_default   s   z&NotebookAppTests.test_log_json_defaultc                 C   s   |  | jtdd d S )NFr   )r   r   _validate_log_jsonr[   r   r   r   r   test_validate_log_json   s   z'NotebookAppTests.test_validate_log_jsonN)rn   ro   rp   r   r   r   r   r   r   r   r      s    r   winc                   @   s   e Zd Zdd Zdd ZdS )NotebookUnixSocketTestsc                 C   s   |  |  d  d S )Nzapi/contents)	fetch_urlrx   r   r   r   r   test_run   s   z NotebookUnixSocketTests.test_runc                 C   r   )Nr   c                 S   r   )sockr   r   r   r   r   r      r   zINotebookUnixSocketTests.test_list_running_sock_servers.<locals>.<setcomp>)r   r	   r   r$   r   r   r   r   r   test_list_running_sock_servers   r   z6NotebookUnixSocketTests.test_list_running_sock_serversN)rn   ro   rp   r   r   r   r   r   r   r      s    r   c                       sD   e Zd ZdZe fddZe fddZdd Zdd	 Z  Z	S )
NotebookAppJSONLoggingTestsz'Tests for when json logging is enabled.c                    s:   t    z
dd l}d| _W d S  ty   d| _Y d S w )Nr   TF)rd   setup_classjson_loggingjson_logging_availableImportError)clsr   ri   r   r   r      s   
z'NotebookAppJSONLoggingTests.setup_classc                    s   t   }|ddi |S )NJUPYTER_ENABLE_JSON_LOGGINGtrue)rd   get_patch_envupdate)r   test_envri   r   r   r      s   
z)NotebookAppJSONLoggingTests.get_patch_envc                 C   s   |  | j  d S r   )
assertTruer   _default_log_jsonr   r   r   r   test_log_json_enabled   s   z1NotebookAppJSONLoggingTests.test_log_json_enabledc                 C   s    |  | jtdd| j d S )NTr   )assertEqualr   r   r[   r   r   r   r   r   r      s   z2NotebookAppJSONLoggingTests.test_validate_log_json)
rn   ro   rp   rq   classmethodr   r   r   r   rr   r   r   ri   r   r      s    r   )6rq   rW   r    r2   resystempfiler   unittest.mockr   r5   traitlets.tests.utilsr   jupyter_core.applicationr   ipython_genutils.tempdirr   	traitletsr   r   r	   r
   notebook.auth.securityr   r   launchnotebookr   r   r   r)   r/   r9   r=   r?   rD   rG   rK   markparametrizerP   rQ   compilerR   rN   rT   rb   NbserverStopApprc   r   r   platform
startswithr   r   r   r   r   r   <module>   s^    	
	


#
