o
    i                     @   sn   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add ZG dd	 d	ejZd
d ZdS )zTests for file IO    N   )atomic_writing)TemporaryDirectoryc                  C   s  G dd dt } t 7}tj|d}t|d}|d W d    n1 s)w   Y  tjdkrBt|d t	
t	|j}tj|d}z
t|| d	}W n tttfya   d
}Y nw t|  t|}|d | 1 sww   Y  W d    n1 sw   Y  t|}| dksJ W d    n1 sw   Y  t|}|d W d    n1 sw   Y  t|}| dksJ W d    n1 sw   Y  tjdkrt	
t	|j}||ksJ |r3t|}|d W d    n	1 sw   Y  t|}| dksJ W d    n1 s&w   Y  W d    d S W d    d S W d    d S 1 sGw   Y  d S )Nc                   @   s   e Zd ZdS )z&test_atomic_writing.<locals>.CustomExcN)__name__
__module____qualname__ r   r   g/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/notebook/services/contents/tests/test_fileio.py	CustomExc   s    r
   penguinwBeforenti  flamingoTFzFailing writeOverwrittenzwritten from symlink)	Exceptionr   ospathjoinopenwritenamechmodstatS_IMODEst_modesymlinkAttributeErrorNotImplementedErrorOSErrorpytestraisesr   read)r
   tdf1f	orig_modef2have_symlinkmoder   r   r	   test_atomic_writing   s\   









 &+$r*   c                   @   s:   e Zd Zdd Zdd Zejjej	dkdddd	 Z
d
S )TestWithSetUmaskc                 C   s   t dat t d S )Nr   r   umaskselfr   r   r	   setUpE   s   
zTestWithSetUmask.setUpc                 C   s   t t d S )Nr,   r.   r   r   r	   tearDownK   s   zTestWithSetUmask.tearDownwin32zdo not run on windows)reasonc              	   C   s   t  q}td tj|d}t|}|d W d    n1 s$w   Y  tt|j	}|dks8J td tj|d}t|}|d W d    n1 sXw   Y  tt|j	}|dkslJ W d    d S 1 sww   Y  d S )N   1i  /   2i  )
r   r   r-   r   r   r   r   r   r   r   )r/   r#   r$   r%   r)   r'   r   r   r	   test_atomic_writing_umaskO   s    



"z*TestWithSetUmask.test_atomic_writing_umaskN)r   r   r   r0   r1   r    markskipifsysplatformr8   r   r   r   r	   r+   D   s
    r+   c               	   C   s:  t  } tj| d}d}|dtj}|dd}t|d}|| W d    n1 s0w   Y  t|dd}| }W d    n1 sJw   Y  ||ksUJ t|ddd}|| W d    n1 slw   Y  t|dd}| }W d    n1 sw   Y  ||ksJ t	|dd}|| W d    n1 sw   Y  t|dd}| }W d    n1 sw   Y  ||ksJ d}t	|dd}|| W d    n1 sw   Y  t|dd}| }W d    n1 sw   Y  ||ks
J W d    d S 1 sw   Y  d S )	Ntestfileza
b
c

z
r    )newlinezcrlf
crlf
)
r   r   r   r   replacelinesepr   r   r"   r   )r#   r   lfplatcrlfr%   r"   textr   r   r	   test_atomic_writing_newlinesa   sF   




$rG   )__doc__os.pathr   unittestr    r   r;   fileior   ipython_genutils.tempdirr   r-   r*   TestCaser+   rG   r   r   r   r	   <module>   s    2