o
    ±ó®g   ã                	   @   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Zd dlmZ d dl	m
Z
mZmZmZmZ e jjsLz	e e ¡ ¡ W n eefyK   e d¡‚w dd„ ZG dd„ dejƒZd	d
„ Zedkrfeƒ  dS dS )é    N)Úrun_unittest)ÚrmtreeÚ
change_cwdÚTESTFN_UNICODEÚTESTFN_UNENCODABLEÚcreate_empty_filez1No Unicode filesystem semantics on this platform.c                 C   s   t j | ¡rt  | ¡ d S d S ©N)ÚosÚpathÚexistsÚunlink)Úfilename© r   úL/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/test/test_unicode_file.pyÚremove_if_exists   s   ÿr   c                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚTestUnicodeFilesc              
   C   s>  |   tj |¡¡ |   tj |¡¡ |   t |tj¡¡ |   tj tj |¡¡¡ |   tj tj |¡¡¡ |   t tj |¡tj¡¡ t |d¡ t 	|d ¡ t 	|t
 
¡ t
 
¡ f¡ |  ||¡ |   tj |¡tj t t |¡¡d ¡k¡ tj tj |¡¡\}}t |¡}t d|¡}dd„ |D ƒ}|  ||¡ d S )Niÿ  r   ÚNFDc                 S   s   g | ]}t  d |¡‘qS )r   )ÚunicodedataÚ	normalize)Ú.0Úfr   r   r   Ú
<listcomp>5   s    z/TestUnicodeFiles._do_single.<locals>.<listcomp>)Ú
assertTruer	   r
   r   ÚisfileÚaccessÚR_OKÚabspathÚchmodÚutimeÚtimeÚ_do_copyishÚglobÚescapeÚsplitÚlistdirr   r   ZassertIn)Úselfr   r
   ÚbaseZ	file_listr   r   r   Ú
_do_single    s$   &ÿ
zTestUnicodeFiles._do_singlec                 C   s^  |   tj |¡¡ t ||d ¡ |  tj |¡¡ |   tj |d ¡¡ t |d |¡ |  tj |d ¡¡ |   tj |¡¡ t ||d ¡ t |d ¡ t 	||d ¡ |  tj 
|¡¡ |   tj 
|d ¡¡ t 	|d |¡ |  tj 
|d ¡¡ |   tj 
|¡¡ t ||d ¡ |   tj |d ¡¡ t |d ¡ |  tj 
|d ¡¡ d S )Nz.new)r   r	   r
   r   ÚrenameZassertFalseÚshutilÚcopyr   Úmover   Úcopy2)r%   Z	filename1Ú	filename2r   r   r   r    :   s&   zTestUnicodeFiles._do_copyishc              	   C   s¬   t j |¡r
t|ƒ t  |¡ z@t|ƒ$ t  ¡ }|}t d|¡}t d|¡}|  	t j 
|¡|¡ W d   ƒ n1 s;w   Y  W t  |¡ d S W t  |¡ d S t  |¡ w )Nr   )r	   r
   Úisdirr   Úmkdirr   Úgetcwdr   r   ZassertEqualÚbasenameÚrmdir)r%   Z	make_nameZ
chdir_nameZ
cwd_resultZname_resultr   r   r   Ú_do_directoryW   s   

ù	÷	zTestUnicodeFiles._do_directoryc              	   C   sŠ   t |ƒ t|ƒ z|  |¡ W t |¡ nt |¡ w |  tj |¡ ¡ t |tj	¡}t 
|¡ z|  |¡ W t |¡ d S t |¡ w r   )r   r   r'   r	   r   r   r
   r   ÚopenÚO_CREATÚclose)r%   r   r   r   r   r   Ú_test_singlei   s   
zTestUnicodeFiles._test_singlec                 C   s$   |   t¡ td ur|   t¡ d S d S r   )r7   r   r   )r%   r   r   r   Útest_single_files{   s   
ÿz"TestUnicodeFiles.test_single_filesc                 C   s<   d}|   t| t| ¡ td ur|   t| t| ¡ d S d S )Nz.dir)r3   r   r   )r%   Úextr   r   r   Útest_directories€   s   
ÿÿz!TestUnicodeFiles.test_directoriesN)	Ú__name__Ú
__module__Ú__qualname__r'   r    r3   r7   r8   r:   r   r   r   r   r      s    r   c                   C   s   t tƒ d S r   )r   r;   r   r   r   r   Ú	test_main‹   s   r>   Ú__main__)r	   r!   r   r)   Úsysr   ZunittestZtest.supportr   Ztest.support.os_helperr   r   r   r   r   r
   Úsupports_unicode_filenamesÚencodeÚgetfilesystemencodingÚUnicodeErrorÚ	TypeErrorZSkipTestr   ZTestCaser   r>   r;   r   r   r   r   Ú<module>   s$    
ýq
ÿ