o
    iZ                     @   s   d dl 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 ejjZejjejdkdd	d
d Zdd Zdd ZdddZejjee jdd dd	dd Zejjejdkdd	dd ZdS )    N)DEFAULT_NOTEBOOK_PORT   )UNIXSocketNotebookTestBase   )urlencode_unix_socketurlencode_unix_socket_pathwin32zdo not run on windows)reasonc               
   C   sV  t j} t|  }t| }tjdd|  dgtjtjd}d}t|j	j
dD ]}t|  ||v r6d} nq&|s=J d| tdd	gv sJJ tt| jd
ksWJ ztjddgtjd W td tjy } zd|j v sxJ W Y d }~nd }~ww | tdd	gv sJ tdd| g | tdd	gvsJ |  d S )Njupyter-notebook--sock=z--sock-mode=0700)stdoutstderrF    Tz9did not find socket URL in stdout when launching notebooklisti  stopr   z'There is currently no server running onz5expected stop command to fail due to target mis-match)r   sockr   encoder   
subprocessPopenPIPEiterr   readlineprintdecodecheck_outputstatS_IMODEoslstatst_modeSTDOUTCalledProcessErroroutputAssertionErrorwait)r   urlencoded_sock_pathpcompletelinee r,   f/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/notebook/tests/test_notebookapp_integration.py%test_shutdown_sock_server_integration   s8   r.   c               
   C   Z   zt jg dt jd W td t jy, }  zd| j v s!J W Y d } ~ d S d } ~ ww )N)r
   --sock=/tmp/nonexistentz--sock-mode=badbadbadr   	badbadbadAexpected execution to fail due to validation of --sock-mode paramr   r   r!   r"   r#   r   r$   r+   r,   r,   r-   'test_sock_server_validate_sockmode_type:       r5   c               
   C   r/   )N)r
   r0   z--sock-mode=0444r   0444r2   r3   r4   r,   r,   r-   -test_sock_server_validate_sockmode_accessibleF   r6   r8   There are no running serversc              
   C   sZ   zt jddgt jd W td t jy, } z| |j v s!J W Y d }~d S d }~ww )Nr
   r   r   z"expected all servers to be stoppedr3   )	check_msgr+   r,   r,   r-   _ensure_stoppedR   r6   r;   RUN_NB_INTEGRATION_TESTSFzfor local testingc                  C   s   d} d}t   tddg}tj}tdd| g}tddd|  g}td |tt	ddg
 v s;J t d	 ||t	dd|g
 v sPJ || t	dd| g
 v saJ t   |  |  |  d
S )zTests lifecycle behavior for mixed-mode server types w/ default ports.

    Mostly suitable for local dev testing due to reliance on default port binding.
    9797zShutting down server on {}...r
   z--no-browserr   z--port=   r   z,There is currently no server running on 8888N)r;   r   r   r   r   timesleepformatr   r   r   r%   )	TEST_PORTMSG_TMPLp1r   p2p3r,   r,   r-   test_stop_multi_integration^   sD   
rG   c               
   C   s   t j} d|  d}t  dd|  g}t|}td z
tj|tjd W n tj	yC } z||j
 v s9J W Y d}~nd}~ww td|j
  tdd	| g t  |  dS )
z=Tests UNIX socket in-use detection for lifecycle correctness.zsocket z is already in user
   r   r>   r   Nzexpected error, instead got r   )r   r   r;   r   r   r?   r@   r   r!   r"   r#   r   r$   
check_callr%   )r   r:   cmdrD   r+   r,   r,   r-   test_launch_socket_collision   s    

rJ   )r9   )r   r   r   sysr?   pytestnotebookr   launchnotebookr   utilsr   r   markintegration_tests
pytestmarkskipifplatformr.   r5   r8   r;   boolenvirongetrG   rJ   r,   r,   r,   r-   <module>   s&    
(

1