Your IP : 216.73.216.196


Current Path : /opt/alt/python310/lib64/python3.10/test/__pycache__/
Upload File :
Current File : //opt/alt/python310/lib64/python3.10/test/__pycache__/test_pathlib.cpython-310.opt-2.pyc

o

0�in��@s(ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlmZddl
mZddl
mZddlmZmZz
ddlZddlZWn
ey]dZZYnwGdd�de�ZGdd	�d	eej�ZGd
d�deej�ZGdd
�d
e�ZGdd�deej�ZGdd�deej�ZGdd�deej�Zej� e�Z!dd�Z"dd�Z#e�$ej%dkd�Z&e�$ej%dkd�Z'e'Gdd�de��Z(e&Gdd�de��Z)Gdd�de�Z*Gd d!�d!e*ej�Z+e'Gd"d#�d#e*ej��Z,e&Gd$d%�d%e*ej��Z-Gd&d'�d'ej�Z.e/d(k�re�0�dSdS))�N)�mock)�
import_helper)�	os_helper)�TESTFN�FakePathc@seZdZdd�Zdd�ZdS)�_BaseFlavourTestcsh|jj}|jj�|jj�|�fdd�|D��}|�||��r2|�fdd�|D��}|�||�dSdS)Nc�g|]}|�d���qS��/��replace��.0�x)�sep��8/opt/alt/python310/lib64/python3.10/test/test_pathlib.py�
<listcomp>�z7_BaseFlavourTest._check_parse_parts.<locals>.<listcomp>crr	rr
)�altseprrr!r)�flavourZparse_partsrr�assertEqual)�self�arg�expected�fZactualr)rrr�_check_parse_partss�z#_BaseFlavourTest._check_parse_partscCs�|j}|jj}|gddgf�|dgdddgf�|dgdddgf�|ddgddddgf�|dgddddgf�|dgddddgf�|gd�ddgd�f�|gd	�ddgd�f�|gd
�ddgd�f�|dgddgf�|gd�dddgf�|gd
�ddddgf�|gd�dddgf�|dgd||ddgf�|ddgd||ddgf�|ddgd||ddgf�|gd�d||ddgf�|gd�d||dgf�dS)N��a�a/�b�a/b�a/b/)rzb/c�d)rr �cr#)rzb//cr#)rzb/c/r#�.)r%r%r )rr%r )rr%r%�/a/b�/a�/a/�r�/br$r$)rr*�/c)rrr)r�checkrrrr�test_parse_parts_common$s(z(_BaseFlavourTest.test_parse_parts_commonN)�__name__�
__module__�__qualname__rr-rrrrrs
rc@�"eZdZejZdd�Zdd�ZdS)�PosixFlavourTestcCs�|j}|ddgddgd�f�|ddgddgd�f�|d	dgddgd�f�|d
gddd
gf�|dgdddgf�|dgdddgf�dS)
N�//ar r�//)r4rr �///ar
)r
rr z////a�c:a�c:\a�\a�r�rr,rrr�test_parse_partsDsz!PosixFlavourTest.test_parse_partscCs�|jj}|�|d�d�|�|d�d�|�|d�d�|�|d�d�|�|d	�d
�|�|d�d�|�|d
�d�|�|d�d�|�|d�d
�|�|d�d�|�|d�d�|�|d�d�|�|d�d�dS)Nr�rrrr�rrrr!)rrr!r")rrr"r')rr
rr&)rr
r!�/a/b/)rr
r"r3)rr4rr5�///a/b�c:/a/b)rrr@�\/a/b)rrrA�\a\b)rrrB�rZ	splitrootr�rrrrr�test_splitrootPszPosixFlavourTest.test_splitrootN)r.r/r0�pathlibZ_posix_flavourrr;rErrrrr2Asr2c@r1)�
NTFlavourTestcCs�|j}|dgdddgf�|dgdddgf�|dgdddgf�|dgddddgf�|d	gddddgf�|d
gddddgf�|dgddd
gf�|dgddd
gf�|dgddd
dgf�|gd�ddgd�f�|gd�ddgd�f�|gd�ddddgf�|gd�ddgd�f�|gd�ddddgf�|dgdddgf�|d gddddgf�|d d!gdddd"gf�|d#gd$dd%gf�|d&gd$dd%dgf�|gd'�ddgd(�f�|gd)�ddgd�f�|gd*�d+dgd,�f�dS)-N�c:r�c:/�\�c:\r
r6r�c:/ar'�//a/b�\\a\b�\\a\b\�//a/b/�//a/b/cr$)rzZ:br$�Z:)rRr r$)rzZ:/br$)�Z:\r r$)rz//b/cr#z\\b\cz\\b\c\r#)rz	Z://b//c/�d/)rSr r$r#)rz//b/c//r#z//?/c:/z\\?\c:z\\?\c:\z//?/c:/ar*r z//?/UNC/b/cz\\?\UNC\b\cz\\?\UNC\b\c\z
//?/UNC/b/c/dr))rJr r$)zZ:/ar*r$)z//?/Z:/ar*r$z\\?\Z:)z\\?\Z:\r r$r9r:rrrr;hs.zNTFlavourTest.test_parse_partscCs|jj}|�|d�d�|�|d�d�|�|d�d�|�|d�d�|�|d	�d
�|�|d�d�|�|d
�d�|�|d�d�|�|d�d�|�|d�d�|�|d�d�|�|d�d�|�|d�d�|�|d�d�|�|d�d
�|�|d�d�dS)Nrr<rr=�a\b)rrrUr8)rrJrrB)rrJrUzc:a\b)rHrrUzc:\a\b)rHrJrUz\\az\\\a/b)rrJr!zc:\\a)rHrJrzc:\\\a/b)rHrJr!rN)rNrJrrO�	\\a\b\c\d)rNrJ�c\dz\\\a\brCrDrrrrE�s"zNTFlavourTest.test_splitrootN)r.r/r0rFZ_windows_flavourrr;rErrrrrGes"rGc@s&eZdZgd�gd�d�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Zd4d5�Zd6d7�Zd8d9�Zd:d;�Zd<d=�Z d>d?�Z!d@dA�Z"dBdC�Z#dDdE�Z$dFS)G�_BasePurePathTest)
�rr )rr )r�b/)rrZ)r")za//b)za//b//)rrr )rrr )rr r))r�/b/cr#)rz///b//crT)r'r[r#)r
r r�c/d)r
rzb/c/d)r�/b/c/d)r!r]cCs*|�d�}|j|_|jj|_|jj|_dS�Nr)�clsZ_flavourrrr�r�prrr�setUp�s

z_BasePurePathTest.setUpcCs�|j}|d�}|�||�|ddd�|ddd�|d�|d�|td��|�||d��|d��|�||d�d�|d��|�||d�|d��|d��|�||d�|d�|d��|td���dS)Nrr r$r'�a/b/c�/a/b/cr!)r_�assertIsInstancerr�r�Prarrr�test_constructor_common�s,z)_BasePurePathTest.test_constructor_commoncs\Gdd�dt��|j}|�fdd�|D��}|�|||��|jD]
}|�t|�t�q!dS)Nc@seZdZdS)z:_BasePurePathTest._check_str_subclass.<locals>.StrSubclassN)r.r/r0rrrr�StrSubclass�sric3s�|]}�|�VqdS�Nrr
�rirr�	<genexpr>�s�z8_BasePurePathTest._check_str_subclass.<locals>.<genexpr>)�strr_r�parts�assertIs�type)r�argsrgra�partrrkr�_check_str_subclass�s
�z%_BasePurePathTest._check_str_subclasscCs6|�d�|�d�|�d�|�d�|�d�dS)Nrr%rza/b.txtz/a/b.txt�rs�rrrr�test_str_subclass_common�s




z*_BasePurePathTest.test_str_subclass_commoncCs�|j}|d�}|�d�}|�||d��|�t|�t|��|�dd�}|�||d��|�|d��}|�||d��|�d�}|�||d��dS)Nr!r$rcr#�a/b/c/dr+)r_�joinpathrrorp�rrgra�pprrr�test_join_common�s

z"_BasePurePathTest.test_join_commoncCs�|j}|d�}|d}|�||d��|�t|�t|��|d}|�||d��|dd}|�||d��d|d}|�||d��||d�}|�||d��|d}|�||d��dS)	Nr!r$rcr\rwr#zc/a/b/dr+)r_rrorpryrrr�test_div_common�sz!_BasePurePathTest.test_div_commoncCs(|j|�}|�t|�|�d|j��dS�Nr
)r_rrmrr)rrrqrarrr�
_check_strs
z_BasePurePathTest._check_strcCs(dD]	}|�||f�q|�dd�dS)N�rr!rcr
r&rdr%)r)r~)r�pathstrrrr�test_str_commonsz!_BasePurePathTest.test_str_commoncCs(|j}dD]}|�||���|�qdS)Nr)r_r�as_posix)rrgr�rrr�test_as_posix_commons�z&_BasePurePathTest.test_as_posix_commoncCs2t�|j�}|j}|�t|d��d|d�dS)Nr!�a�b)�os�fsencoderr_r�bytes)rrrgrrr�test_as_bytes_commons z&_BasePurePathTest.test_as_bytes_commoncCsv|j}|�t��|d���Wd�n1swY|�t��|���Wd�dS1s4wYdSr^)r_�assertRaises�
ValueError�as_uri�rrgrrr�test_as_uri_commons�"�z$_BasePurePathTest.test_as_uri_commoncCs�dD]S}|�|�}|jj}t|�}|�|�|d�|�|�|�d�|�|t|�dd�}|�t	|�|�
��t	|tj�}|�
|j|j�|�||�|�t|�|�qdS)Nr�(�)����)r_�	__class__r.�repr�
assertTrue�
startswith�endswith�lenr�evalr�rF�__dict__ro)rr�raZclsname�r�inner�qrrr�test_repr_commons
�z"_BasePurePathTest.test_repr_commoncCs�|j}|�|d�|d��|�|d�|dd��|�|d�|d��|�|d�|d��|�|d�|��|�|d�|d��|�|�|d��|�|�d�|�|�i�|�|�t�dS)Nr!rr r&r
r)r_r�assertNotEqual�intr�rrr�test_eq_common.sz _BasePurePathTest.test_eq_commoncCsN|j}|�t|d�jd�|�t|d�jd�|�|d��d��|�|d��d��|�|d��d��|�|d��d��|�|d��d��|�|d	��d��|�|d
��d��|�|d��d��|�|d��d��|�|d��d��|�|d��d��|�|d
��d��|�|d
��d��|�|d��d��|�|d��d��|�|d��d��|�|d��d��|�|d��d��|�|d��d��|�|d��d��|�|d��d��|�|d��d��|�|d��d��|�|d��d��|�|d��d��|�|d��d��|�|d��d��dS)Nrrr%�b.py�a/b.py�/a/b.pyza.pyzb/pyz/a.pyzb.py/cz*.pyzb.pyczb./pyzab/c.pyza*/*.pyz
/d/ab/c.pyz	/dab/c.pyz	ab/c.py/d�/b.py�/*.pyz/a/*.pyz/ab.pyz	/a/b/c.pyz/**/*.pyz
/a/**/*.py)r_r�r��matchr��assertFalser�rrr�test_match_common;s<z#_BasePurePathTest.test_match_commoncs��fdd�}�j}|d�}|d�}|d�}|d�}|||�|||�|||�|||�|||��j}|d�}|d�}|d	�}|d
�}|||�|||�|||�|||�|||���t��|�ikWd�dS1stwYdS)Nc���||���||�dSrj)�
assertLessZ
assertGreaterrYrurrr�c�z:_BasePurePathTest.test_ordering_common.<locals>.assertLessrr!�abcr r'r&z/abcr*)r_r��	TypeError)rr�rgrr r$r#rrur�test_ordering_commonas0









"�z&_BasePurePathTest.test_ordering_commoncCsX|j}|j}|d�}|j}|�|d�|�||j�|d�}|j}|�||ddf�dS)Nr!rYr&rr )rr_rnrro)rrrgrarnrrr�test_parts_common}sz#_BasePurePathTest.test_parts_commoncCs4|j}|d�}|�|��d�|�t�|�d�dS)Nr!)r!)r_r~�
__fspath__r��fspathrfrrr�test_fspath_common�sz$_BasePurePathTest.test_fspath_commonc	s��j��D]Z\}}|�d�j�}|��jd�}||kr,|�fdd�|D�}|�|f���|�}|D]+}�j|�}��||d�|����t|�t|����t	|�|���|�
�|�q3qdS)Nr
cs"g|]
}t�fdd�|D���qS)c3s�|]
}|�d�j�VqdS)r
N)rr)rrrrurrrl�s�zA_BasePurePathTest.test_equivalences.<locals>.<listcomp>.<genexpr>)�tuple)r�trurrr�s��z7_BasePurePathTest.test_equivalences.<locals>.<listcomp>zfailed with args {})�equivalences�itemsrr�appendr_r�format�hashrmr�)r�kZtuplesZcanon�posixZpcanonr�rarrur�test_equivalences�s"�

��z#_BasePurePathTest.test_equivalencescCs�|j}|d�}|�|j|d��|�|jj|d��|�|jjj|��|�|jjjj|��|d�}|�|j|d��|�|jj|d��|�|jjj|d��|�|jjjj|d��dS)Nrcr!rrdr&r'r
�r_r�parentrfrrr�test_parent_common�sz$_BasePurePathTest.test_parent_commoncCs|j}|d�}|j}|�t|�d�|�|d|d��|�|d|d��|�|d|d��|�|d	|d��|�|d
|d��|�|d|d��|�|dd�|d�f�|�|dd�|d�|d�f�|�|dd	�|d�|d�f�|�|dd�|d�|d�f�|�|ddd�|d�|d�f�|�|ddd	�|d�|d�|d�f�|�t|�|d�|d�|d�g�|�t��|dWd�n1s�wY|�t��|dWd�n1s�wY|�t��||d<Wd�n	1�swY|d
�}|j}|�t|�d�|�|d|d��|�|d|d��|�|d|d��|�|d	|d��|�|d
|d��|�|d|d��|�|dd�|d�f�|�|dd�|d�|d�f�|�|dd	�|d�|d�f�|�|dd�|d�|d�f�|�|ddd�|d�|d�f�|�|ddd	�|d�|d�|d�f�|�t|�|d�|d�|d�g�|�t��|dWd�n	1�s�wY|�t��
|dWd�dS1�s�wYdS)Nrc�rr!r�r�r%r����������rdr&r'r
)r_�parentsrr��listr��
IndexErrorr��rrgraZparrrr�test_parents_common�s`   "("
�
�
�   "("
�
$�z%_BasePurePathTest.test_parents_commoncCs@|j}|�|d�jd�|�|d�jd�|�|d�jd�dS)Nr!rr&�r_rZdriver�rrr�test_drive_common�sz#_BasePurePathTest.test_drive_commoncC�X|j}|j}|�|d�jd�|�|d�jd�|�|d�j|�|�|d�j|�dS�Nrr!r
r&)r_rr�root�rrgrrrr�test_root_common��z"_BasePurePathTest.test_root_commoncCr�r�)r_rr�anchorr�rrr�test_anchor_common�r�z$_BasePurePathTest.test_anchor_commoncCs�|j}|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd	�|�|d
�jd	�dS)Nrr%r
r!r r&�/a/b/.r�r�r��r_r�namer�rrr�test_name_common��z"_BasePurePathTest.test_name_commoncCs<|j}|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd	�|�|d
�jd	�|�|d�jd�|�|d�jd�|�|d
�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�dS)Nrr%�..r
r!r&r�r��.pyr��a/.hgrc�/a/.hgrc�a/.hg.rc�.rc�	/a/.hg.rc�
a/b.tar.gz�.gz�/a/b.tar.gz�a/Some name. Ending with a dot.� /a/Some name. Ending with a dot.�r_r�suffixr�rrr�test_suffix_commons$z$_BasePurePathTest.test_suffix_commoncCs:|j}|�|d�jg�|�|d�jg�|�|d�jg�|�|d�jg�|�|d�jg�|�|d�jg�|�|d�jdg�|�|d	�jdg�|�|d
�jg�|�|d�jg�|�|d�jd
g�|�|d�jd
g�|�|d�jddg�|�|d�jddg�|�|d�jg�|�|d�jg�dS)Nrr%r
r!r&r�r�r�r�r�r�r�r�r�r��.tarr�r�r�r��r_r�suffixesr�rrr�test_suffixes_commons"z&_BasePurePathTest.test_suffixes_commoncCs�|j}|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd	�|�|d
�jd�|�|d�jd
�|�|d�jd�dS)Nrr%r�r
r!r r�r��.hgrcr��.hgr��b.tarr��Some name. Ending with a dot.�r_rZstemr�rrr�test_stem_common)��z"_BasePurePathTest.test_stem_commoncCs2|j}|�|d��d�|d��|�|d��d�|d��|�|d��d�|d��|�|d��d�|d��|�|d��d�|d��|�|d	��d�|d��|�t|d
�jd�|�t|d�jd�|�t|d�jd�|�t|d�jd
�|�t|d�jd
�|�t|d�jd�|�t|d�jd�dS)Nr!�d.xmlza/d.xmlr&z/a/d.xmlr�r��
a/Dot ending.�/a/Dot ending.rr%r
r+�c/r\�r_rZ	with_namer�r�r�rrr�test_with_name_common7sz'_BasePurePathTest.test_with_name_commoncCsL|j}|�|d��d�|d��|�|d��d�|d��|�|d��d�|d��|�|d��d�|d	��|�|d
��d�|d��|�|d��d�|d��|�|d
��d�|d��|�t|d�jd�|�t|d�jd�|�t|d�jd�|�t|d�jd�|�t|d�jd�|�t|d�jd�|�t|d�jd�dS)Nr!r#za/dr&z/a/dr�za/d.pyr�z/a/d.pyr�z/a/d.gzr�r�rr%r
r+r�r\�r_rZ	with_stemr�r�r�rrr�test_with_stem_commonGsz'_BasePurePathTest.test_with_stem_commoncCs�|j}|�|d��d�|d��|�|d��d�|d��|�|d��d�|d��|�|d��d�|d��|�|d��d�|d��|�|d��d�|d��|�t|d�jd�|�t|d	�jd�|�t|d
�jd�|�t|d�jd�|�t|d�jd
�|�t|d�jd	�|�t|d�jd�|�t|d�jd
�|�t|d�jd�|�t|d�jd�|�t|d�jd�|�t|d�j|jjdf�dS)Nr!r�za/b.gzr&z/a/b.gzr�r�rr%r
�gz�/.gzr\z.c/.dz./.dz.d/.r#)r_r�with_suffixr�r�rrr�rrr�test_with_suffix_commonXs*
�z)_BasePurePathTest.test_with_suffix_commoncCsR|j}|d�}|�t|j�|�t|jd�|�|�|��|d��|�|�d�|d��|�|�|d��|d��|�|�d�|d��|�|�d�|d��|�|�|d��|��|�|�d�|��|�|�dd�|��|�t|j|d��|�t|j|d��|�t|j|d	��|�t|j|d
��|d�}|�|�|d��|d��|�|�d�|d��|�|�|d
��|d��|�|�d
�|d��|�|�d
�|d��|�|�|d��|��|�|�d�|��|�t|j|d��|�t|j|d��|�t|j|d��|�t|j|��|�t|jd�|�t|j|d��dS)Nr!r�rrr rr$rc�a/cr'r&r
r(r+rd�/a/c)r_r�r��relative_torr�rfrrr�test_relative_to_commonqs<z)_BasePurePathTest.test_relative_to_commoncCs�|j}|d�}|�t|j�|�t|jd�|�|�|���|�|�d��|�|�|d���|�|�d��|�|�|d���|�|�d��|�|�dd��|�|�|d���|�|�|d���|�|�|d	���|�|�|d
���|d�}|�|�|d���|�|�d��|�|�|d
���|�|�d
��|�|�d
��|�|�|d���|�|�d��|�|�|d���|�|�|d���|�|�|d���|�|�|���|�|�d��|�|�|d���dS)Nr!r�rrrr r$rcrr'r&r
r(r+rdr)r_r�r��is_relative_tor�r�rfrrr�test_is_relative_to_common�s:z,_BasePurePathTest.test_is_relative_to_commoncCs�|j}|d�}tdtjd�D]/}t�||�}t�|�}|�|j|j�|�||�|�t	|�t	|��|�t
|�t
|��qdS)Nr&rr�)r_�range�pickle�HIGHEST_PROTOCOL�dumps�loadsror�rr�rm)rrgra�proto�dumpedrzrrr�test_pickling_common�s
�z&_BasePurePathTest.test_pickling_commonN)%r.r/r0r�rbrhrsrvr{r|r~r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr
rrrrrX�sJ�

&/#"rXc@sZeZdZejZdd�Zdd�Zdd�Zdd�Z	d	d
�Z
dd�Zd
d�Zdd�Z
dd�ZdS)�PurePosixPathTestcCs@|j}|�|d�jd�|�|d�jd�|�|d�jd�dS)Nr&r
r?rMr4�r_rr�r�rrr�	test_root�szPurePosixPathTest.test_rootcCsF|j}|�|d�|d��|�|d�|d��|�|d�|d��dS)Nr!�A/br'r5r3)r_r�rr�rrr�test_eq��zPurePosixPathTest.test_eqcCsF|j}|�|d���d�|�|d���d�|�|d���d�dS)Nr
zfile:///z/a/b.cz
file:///a/b.cz/a/b%#czfile:///a/b%25%23c)r_rr�r�rrr�test_as_uri�rzPurePosixPathTest.test_as_uricCsdddlm}|j}zt�d�Wnty|�d�Ynw|�|d���d|t�d���dS)Nr)�quote_from_bytes�éz1\xe9 cannot be encoded to the filesystem encodingu/a/bézfile:///a/b)	Zurllib.parserr_r�r��UnicodeEncodeError�skipTestrr�)rrrgrrr�test_as_uri_non_ascii�s��z'PurePosixPathTest.test_as_uri_non_asciicCs|j}|�|d��d��dS)NzA.pyza.PY)r_r�r�r�rrr�
test_match�szPurePosixPathTest.test_matchcCs�|j}|�|����|�|d����|�|d����|�|d����|�|d����|�|d����|�|d����|�|d����dS)Nrr"r
r'r>r3rM�r_r��is_absoluter�r�rrr�test_is_absolute�sz"PurePosixPathTest.test_is_absolutecCsZ|j}|�d|d����|�d|d����|�d|d����|�d|d����dS)NFrr
�/foo/barz/dev/con/PRN/NUL�r_roZis_reservedr�rrr�test_is_reserved�s
z"PurePosixPathTest.test_is_reservedcCsh|j}|d�}|�d�}|�||d��|d��d�}|�||d��|d��d�}|�||d��dS�Nr3r rMr'z//cr+�r_rxrryrrr�	test_join�s
zPurePosixPathTest.test_joincCsb|j}|d�}|d}|�||d��|d�d}|�||d��|d�d}|�||d��dSr!�r_rryrrr�test_divszPurePosixPathTest.test_divN)r.r/r0rF�
PurePosixPathr_rrrrrrr r#r%rrrrr�s

rc@seZdZejZej��Ze�	gd�gd�dgddgd��dd�Z
d	d
�Zdd�Zd
d�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Z d5d6�Z!d7d8�Z"d9S):�PureWindowsPathTest))rHr)rHr)r
rHr))rIr)rHr
r)rHr')z/zrIr)z//x/yrIr)rM)rMr$)rPr$)r6rLrPrQcCs�|�d�}|�t|�d�|�d�}|�t|�d�|�d�}|�t|�d�|�d�}|�t|�d�|�d	�}|�t|�d
�dS)Nrcza\b\czc:/a/b/czc:\a\b\crMrOrQz\\a\b\c�	//a/b/c/drV)r_rrmr`rrr�test_strs




zPureWindowsPathTest.test_strcCs^|�d�|�d�|�d�|�d�|�d�|�d�|�d�|�d�|�d	�dS)
NrHr6z	c:a\b.txtrKr7z
c:\a\b.txtz\\some\sharez\\some\share\az\\some\share\a\b.txtrtrurrr�test_str_subclass*s







z%PureWindowsPathTest.test_str_subclasscCs�|j}|�|d�|d��|�|d�|ddd��|�|d�|d��|�|d�|d��|�|d�|d��|�|d�|d	��|�|d
�|d��|�|d�|d
��dS)N�c:a/brHrr zd:a/br@r&za/Br�C:a/B�c:A/b�//Some/SHARE/a/Bz//somE/share/A/b)r_rr�r�rrrr5szPureWindowsPathTest.test_eqcCs|j}|�t��|d���Wd�n1swY|�t��|d���Wd�n1s4wY|�|d���d�|�|d���d�|�|d���d�|�|d	���d
�|�|d���d�|�|d
���d�|�|d���d�dS)Nr&r+rIzfile:///c:/zc:/a/b.czfile:///c:/a/b.cz	c:/a/b%#czfile:///c:/a/b%25%23cuc:/a/bézfile:///c:/a/b%C3%A9z
//some/share/zfile://some/share/z//some/share/a/b.czfile://some/share/a/b.cu//some/share/a/b%#céz"file://some/share/a/b%25%23c%C3%A9)r_r�r�r�rr�rrrrAs$����zPureWindowsPathTest.test_as_uricCsr|j}|�|d��d��|�|d��d��|�|d��d��|�|d��d��|�|d��d��|�|d��d��|�|d��d��|�|d��d��|�|d��d��|�|d��d��|�|d��d��|�|d	��d��|�|d	��d
��|�|d��d
��|�|d��d
��|�|d
��d��|�|d��d��|�|d��d��dS)Nzc:/b.pyr�zc:*.pyzc:/*.pyzd:/b.pyr�zc:b.pyr�z//some/share/a.pyz//some/share/*.pyz//other/share/a.pyz//some/share/a/b.pyzB.pyzb.PYz	c:/a/B.Pyz	C:/A/*.pYz//Some/Share/B.Pyz//somE/sharE/*.pY)r_r�r�r�r�rrrr�Qs&z%PureWindowsPathTest.test_match_commoncs��fdd�}�j}|d�}|d�}|||���||k���||k�|d�}|d�}|||���||k���||k�dS)Ncr�rj)ZassertLessEqual�assertGreaterEqualrYrurr�assertOrderedEqualkr�zDPureWindowsPathTest.test_ordering_common.<locals>.assertOrderedEqualr-r,z//some/Share/A/br.)r_r�)rr0rgrar�rrurr�is

z(PureWindowsPathTest.test_ordering_commoncCsX|j}|d�}|j}|�|d�|d�}|j}|�|d�|d�}|j}|�|d�dS)Nr+)rHrr r@)rKrr r()rOr$r#)r_rnr)rrgrarnrrr�
test_partszszPureWindowsPathTest.test_partscCs|j}|d�}|�|j|d��|�|jj|d��|�|jjj|d��|�|jjjj|d��|d�}|�|j|d��|�|jj|d��|�|jjj|d��|�|jjjj|d��|d	�}|�|j|d
��|�|jj|d��|�|jjj|d��dS)Nzz:a/b/czz:a/b�z:a�z:zz:/a/b/czz:/a/b�z:/a�z:/r(rQrMr�rfrrr�test_parent�szPureWindowsPathTest.test_parentcCs�|j}|d�}|j}|�t|�d�|�|d|d��|�|d|d��|�|dd�|d�f�|�|dd�|d�f�|�|dd�|d�|d�f�|�|dd�|d�f�|�|ddd�|d�f�|�|ddd�|d�|d�f�|�t|�|d�|d�g�|�t��|dWd�n1s�wY|d�}|j}|�t|�d�|�|d|d	��|�|d|d
��|�|dd�|d	�f�|�|dd�|d	�f�|�|dd�|d	�|d
�f�|�|dd�|d
�f�|�|ddd�|d	�f�|�|ddd�|d
�|d	�f�|�t|�|d	�|d
�g�|�t��|dWd�n	1�s?wY|d�}|j}|�t|�d�|�|d|d��|�|d|d
��|�|dd�|d�f�|�|dd�|d�f�|�|dd�|d�|d
�f�|�|dd�|d
�f�|�|ddd�|d�f�|�|ddd�|d
�|d�f�|�t|�|d�|d
�g�|�t��
|dWd�dS1�s�wYdS)Nzz:a/b/r�rr2r�r3r�zz:/a/b/r4r5r(rQrM)r_r�rr�r�r�r�r�rrr�test_parents�s\ "
� "
� "
$�z PureWindowsPathTest.test_parentscCs�|j}|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�dS)	NrHr+rI�c:/a/b/rMrNrPr(r�r�rrr�
test_drive��zPureWindowsPathTest.test_drivecCs�|j}|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d	�jd�dS)
NrHrr+rIrJr8rMrPr(rr�rrrr�r:zPureWindowsPathTest.test_rootcCs�|j}|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d	�jd�dS)
NrHr+rIrKr8rMrOrPr()r_rr�r�rrr�test_anchor�r:zPureWindowsPathTest.test_anchorcCs�|j}|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d	�jd�|�|d
�jd�|�|d�jd�dS)NrHrrIr+r r@�c:a/b.pyr��	c:/a/b.py�//My.py/Share.php�//My.py/Share.php/a/br�r�rrr�	test_name�r�zPureWindowsPathTest.test_namecCs*|j}|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d	�jd�|�|d
�jd�|�|d�jd�|�|d
�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�dS)NrHrrIr+r@r<r�r=�	c:a/.hgrc�
c:/a/.hgrc�
c:a/.hg.rcr��c:/a/.hg.rc�c:a/b.tar.gzr��
c:/a/b.tar.gz�!c:a/Some name. Ending with a dot.�"c:/a/Some name. Ending with a dot.r>r?r�r�rrr�test_suffix�s"zPureWindowsPathTest.test_suffixcCs:|j}|�|d�jg�|�|d�jg�|�|d�jg�|�|d�jg�|�|d�jdg�|�|d�jdg�|�|d�jg�|�|d	�jg�|�|d
�jdg�|�|d�jdg�|�|d
�jddg�|�|d�jddg�|�|d�jg�|�|d�jg�|�|d�jg�|�|d�jg�dS)NrHrIr+r@r<r�r=rArBrCr�rDrEr�r�rFr>r?rGrHr�r�rrr�
test_suffixess"z!PureWindowsPathTest.test_suffixescCs�|j}|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d	�jd�|�|d
�jd�|�|d�jd
�|�|d�jd�|�|d�jd�dS)NrHrzc:.zc:..r�rIr+r r<rAr�rCr�rEr�rGr�r�r�rrr�	test_stemr�zPureWindowsPathTest.test_stemcC�|j}|�|d��d�|d��|�|d��d�|d��|�|d��d�|d��|�|d��d�|d��|�t|d�jd�|�t|d	�jd�|�t|d
�jd�|�t|d�jd�|�t|d�jd�|�t|d�jd
�|�t|d�jd
�dS)Nr+r�z	c:a/d.xmlr@z
c:/a/d.xml�c:a/Dot ending.�c:/a/Dot ending.rHrI�
//My/Share�d:�d:e�d:/er�r�rrr�test_with_name#�z"PureWindowsPathTest.test_with_namecCrL)Nr+r#zc:a/dr@zc:/a/drMrNrHrIrOrPrQrRr�r�rrr�test_with_stem1rTz"PureWindowsPathTest.test_with_stemcCs�|j}|�|d��d�|d��|�|d��d�|d��|�|d��d�|d��|�|d��d�|d��|�t|d�jd�|�t|d	�jd�|�t|d
�jd�|�t|d�jd�|�t|d�jd�|�t|d�jd
�|�t|d�jd
�|�t|d�jd�|�t|d�jd�|�t|d�jd�|�t|d�jd�|�t|d�jd�|�t|d�jd�|�t|d�jd�|�t|d�jd�dS)Nr+r�zc:a/b.gzr@z	c:/a/b.gzr<r=rr%r
rOr�rJrHr�z\.gzzc:.gzr\rWz.c/dz.c\d)r_rr�r�r�r�rrr�test_with_suffix?s(z$PureWindowsPathTest.test_with_suffixcCs0|j}|d�}|�|�|d��|d��|�|�d�|d��|�|�|d��|d��|�|�d�|d��|�|�d�|d��|�|�|d��|��|�|�d�|��|�t|j|��|�t|jd�|�t|j|d	��|�t|j|d
��|�t|j|d��|�t|j|d��|�t|j|d
��|�t|j|d��|�t|j|d��|d�}|�|�|d��|d��|�|�d�|d��|�t|�|d���d�|�t|�d��d�|�|�|d��|d��|�|�d�|d��|�|�|d��|d��|�|�d�|d��|�|�d�|d��|�|�|d��|��|�|�d�|��|�t|j|d��|�t|j|d��|�t|j|d��|�t|j|d��|�t|j|d	��|�t|j|d��|�t|j|d
��|�t|j|d��|�t|j|d��|d�}|�|�|d��|d��|�|�d�|d��|�|�d�|d��|�|�|d ��|d��|�|�d �|d��|�|�d!�|d��|�|�|d"��|��|�|�d"�|��|�t|j|d#��|�t|j|d$��|�t|j|d%��|�t|j|d&��dS)'N�	C:Foo/BarrHzFoo/Bar�c:foOZBar�c:foO/�	c:foO/baRrrPr
�Foo�/Foo�C:/Foo�
C:Foo/Bar/Baz�	C:Foo/Baz�
C:/Foo/Barz/Foo/Barz\Foo\BarrI�c:/foO�c:/foO/�
c:/foO/baR�C:/Baz�C:/Foo/Bar/Baz�
C:/Foo/Baz�C:Foo�d:/�//C/Foo�//Server/Share/Foo/Bar�//sErver/sHare�//sErver/sHare/�//sErver/sHare/Foo�//sErver/sHare/Foo/�//sErver/sHare/Foo/Bar�/Server/Share/Foo�c:/Server/Share/Foo�
//z/Share/Foo�//Server/z/Foo)r_rrr�r�rmrfrrr�test_relative_toWshz$PureWindowsPathTest.test_relative_tocCsH|j}|d�}|�|�|d���|�|�d��|�|�|d���|�|�d��|�|�d��|�|�|d���|�|�d��|�|�|���|�|�d��|�|�|d���|�|�|d���|�|�|d	���|�|�|d
���|�|�|d���|�|�|d���|�|�|d
���|d�}|�|�d��|�|�|d���|�|�|d���|�|�d��|�|�|d���|�|�d��|�|�|d���|�|�|d���|�|�|d���|�|�|d���|�|�|d���|�|�|d���|�|�|d���|�|�|d
���|�|�|d���|d�}|�|�|d���|�|�d��|�|�d��|�|�|d���|�|�d��|�|�d��|�|�|d���|�|�d��|�|�|d���|�|�|d ���|�|�|d!���|�|�|d"���dS)#NrWrHrXrYrZrrPr
r[r\r]r^r_r`rIrarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrs)r_r�rr�rfrrr�test_is_relative_to�s^z'PureWindowsPathTest.test_is_relative_tocCs(|j}|�|����|�|d����|�|d����|�|d����|�|d����|�|d����|�|d����|�|d����|�|d����|�|d	����|�|d
����|�|d����|�|d����|�|d
����|�|d����|�|d����dS)Nrr"r
r'r>rHr6zc:a/b/rIrLr8rMrPrQr(rr�rrrr�s"z$PureWindowsPathTest.test_is_absolutecCs�|j}|d�}|�d�}|�||d��|�d�}|�||d��|�d�}|�||d��|�d�}|�||d��|�d�}|�||d��|�d	�}|�||d��|�d
�}|�||d��dS)N�C:/a/b�x/y�
C:/a/b/x/y�/x/y�C:/x/y�D:x/y�D:/x/y�//host/share/x/y�c:x/y�c:/x/yr"ryrrrr#�s 






zPureWindowsPathTest.test_joincCs�|j}|d�}|�|d|d��|�|dd|d��|�|d|d��|�|dd|d��|�|d	|d	��|�|d
d|d	��|�|d|d��|�|d
d|d��|�|d|d��|�|d
|d��|�|d|d��dS)Nrvrwrxr�yryrzz/xr{zD:r|r}r~rr$rfrrrr%�szPureWindowsPathTest.test_divcCs�|j}|�d|d����|�d|d����|�d|d����|�d|d����|�d|d����|�d|d����|�d|d	����|�d|d
����|�d|d����|�d|d����|�d|d
����|�d|d����|�d|d����|�d|d����|�d|d����|�d|d����|�d|d����|�d|d����|�d|d����|�d|d����|�d|d����|�d|d����|�d|d����|�d|d����dS)NFrr
rz//my/share/nul/con/auxTZnulZauxZprnZconzconin$zconout$ZCOM1ZLPT9ucom¹ucom²ulpt³zNUL.txtzPRN  z	AUX  .txtzCOM1:barzLPT9   :barzbar.com9zbar.lpt9zc:/baz/con/NULzc:/NUL/con/bazrr�rrrr s2z$PureWindowsPathTest.test_is_reservedN)#r.r/r0rF�PureWindowsPathr_rXr��copy�updater)r*rrr�r�r1r6r7r9rr;r@rIrJrKrSrUrVrtrurr#r%r rrrrr'sF
��.


:5r'c@�*eZdZejZdd�Zdd�Zdd�ZdS)�PurePathTestcC�6|�d�}|�t|�tjdkrtj�dStj�dS�Nr�nt)r_rorpr�r�rFr�r&r`rrr�test_concrete_class+�

��z PurePathTest.test_concrete_classcCs$t�d�}t�d�}|�||�dSr^)rFr&r�r��rrar�rrr�test_different_flavours_unequal0s

z,PurePathTest.test_different_flavours_unequalcCs�t�d�}t�d�}|�t��||kWd�n1swY|�t��||kWd�n1s7wY|�t��||kWd�n1sPwY|�t��
||kWd�dS1sjwYdSr^)rFr&r�r�r�r�rrr�!test_different_flavours_unordered5s


�
�
�
"�z.PurePathTest.test_different_flavours_unorderedN)	r.r/r0rF�PurePathr_r�r�r�rrrrr�(s
r�cG�tjjtg|�R�Srj)r��path�join�BASE�rrrr�<lambda>H�r�cGr�rj)r�r�r�rr�rrrr�Ir�r�z)test requires a Windows-compatible systemz'test requires a POSIX-compatible systemc@seZdZejZdS)�PosixPathAsPureTestN)r.r/r0rF�	PosixPathr_rrrrr�Ps
r�c@r1)�WindowsPathAsPureTestcC�B|j}|�t��|d���Wd�dS1swYdS�NrI)r_r��NotImplementedError�ownerr�rrr�
test_ownerX�"�z WindowsPathAsPureTest.test_ownercCr�r�)r_r�r��groupr�rrr�
test_group]r�z WindowsPathAsPureTest.test_groupN)r.r/r0rF�WindowsPathr_r�r�rrrrr�Tsr�c@steZdZ	dd�Zejdkrdd�Zndd�Zdd�Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zejd'd(��Zd)d*�Zd+d,�Zd-d.�Zejd/d0��Zd1d2�Zd3d4�Zejd5d6��Z d�d8d9�Z!e!Z"Z#ejd:d;��Z$ejd<d=��Z%d>d?�Z&d@dA�Z'dBdC�Z(e)dDdE��Z*dFdG�Z+ejdHdI��Z,dJdK�Z-ejdLdM��Z.dNdO�Z/e0�1e2dP�dQdR��Z3e0�1e4dS�dTdU��Z5dVdW�Z6dXdY�Z7dZd[�Z8e0�1e9ed\�d]�d^d_��Z:e0�1e9ed\�d]�d`da��Z;e0�<e9ed\�db�dcdd��Z=dedf�Z>dgdh�Z?ejdidj��Z@dkdl�ZAdmdn�ZBdodp�ZCdqdr�ZDdsdt�ZEdudv�ZFdwdx�ZGeHdydz��ZId{d|�ZJd}d~�ZKdd��ZLejd�d���ZMd�d��ZNd�d��ZOe)d�d���ZPd�d��ZQd�d��ZRe0�1e9ed��d��e0�<eSjTd�kd��d�d����ZUd�d��ZVe0�1e9eWd��d��d�d���ZXd�d��ZYd�d��ZZd�d��Z[d�d��Z\d�d��Z]d�d��Z^ejd�d���Z_ejd�d���Z`ejd�d���Zad�S)��
_BasePathTestcCs�dd�}|�|�t�t�t�td��t�td��t�td��t�tdd��t�td��ttd�d	��
}|�d
�Wd�n1sIwYttdd�d	��
}|�d�Wd�n1sfwYttdd
�d	��
}|�d�Wd�n1s�wYttddd�d	��
}|�d�Wd�n1s�wYt�td�d�t�	�r�t�
dtd��t�
dtd��|�dtd��|�tj�dd�tdd��|�tj�dd�tdd��t�
dtd��dSdS)NcSst�td�d�t�t�dS)N�dirE�)r��chmodr�r�rmtreer�rrrr�cleanupzsz$_BasePathTest.setUp.<locals>.cleanup�dirA�dirB�dirCZdirDr��fileA�wbsthis is file A
�fileBsthis is file B
ZfileCsthis is file C
ZfileDsthis is file D
r�linkA�non-existing�
brokenLink�linkBr��linkC�linkD�brokenLinkLoop)
�
addCleanupr��mkdirr�r��open�writer�r�can_symlink�symlink�dirlinkr�)rr�rrrrrbys:

�����z_BasePathTest.setUpr�cCstj||dd�dS)NT�Ztarget_is_directory�r�r��r�src�destrrrr��sz_BasePathTest.dirlinkcCst�||�dSrjr�r�rrrr��scCs*|�tj�t|�t|��d||f�dS)Nz&%r and %r don't point to the same file)r�r�r��samefilerm�rZpath_aZpath_brrr�
assertSame�s
��z_BasePathTest.assertSamecOsN|�t��}||i|��Wd�n1swY|�|jjtj�dSrj)r��FileNotFoundErrorr�	exception�errno�ENOENT)r�funcrq�kwargs�cmrrr�assertFileNotFound�s�z _BasePathTest.assertFileNotFoundcCs |�tj�|�tj�|��dSrj)rr�r��normcaser�rrr�assertEqualNormCase�s z!_BasePathTest.assertEqualNormCasecCsT|�t���}|�||�|�t|�t|��|�t|�t|��|�|�	��dSrj)
r_r��getcwdrr�rmrorpr�rr�rrr�	_test_cwd�s
z_BasePathTest._test_cwdcCs|j��}|�|�dSrj)r_�cwdr�r`rrr�test_cwd�s
z_BasePathTest.test_cwdcCsX|�tj�d��}|�||�|�t|�t|��|�t|�t|��|�	|�
��dS)N�~)r_r�r��
expanduserrr�rmrorpr�rr�rrr�
_test_home�s
z_BasePathTest._test_homecCs�t���7}|�|j���|��tj�t	d�|d<|�|j���tj�t	d�|d<|�|j���Wd�dS1s>wYdS)NZuserprofile�USERPROFILE�home�HOME)
r�EnvironmentVarGuardr�r_r��clearr�r�r�r�)r�envrrr�	test_home�s
"�z_BasePathTest.test_homecCs�tj�td�}tj�tdd�}|�|�}|�|�}|�|�}|�|�|��|�|�|��|�|�|��|�|�|��tj�td�}|�|�}|�t	|j|�|�t	|j|�|�t	|j|�|�t	|j|�|�t	|j|�|�t	|j|�dS)Nr�r�r��foo)
r�r�r�r�r_r�r�r�r�r�)rZ
fileA_pathZ
fileB_pathrarzr�Znon_existentr�rrr�
test_samefile�s"



z_BasePathTest.test_samefilecCs$|�d�}|�|��t�d��dS)Nrr%)r_r�statr�r`rrr�test_empty_path�s
z_BasePathTest.test_empty_pathcCs�|j}|d�}|�|��|tj�d���|d�}|�|��|�|d�}|�|��|�|d�}|�|��|�||d���j�d}|�|��|�dS)Nr�r��/~�../~r)r_rr�r�r��absoluter�rfrrr�test_expanduser_common�sz$_BasePathTest.test_expanduser_commoncCs|j}|t�}|�d|���|�d|d���|�d|d���|�d|dd���t��r_|�d|d���|�d|d���|�d|dd���|�d|dd���|�d|d	���|�d|d
����|�d|td����|�d|td����dS)
NTr�r�F�bahr�r�r�r�z/xyzzyu��)r_r�ro�existsrr�rfrrr�test_exists�sz_BasePathTest.test_existscCs|�t�}|d�d��}|�|tj�|�|��d�Wd�n1s&wY|d�d��}|�|tj�|�|���	�d�Wd�n1sNwY|djddd��}|�|tj
�|�|���	�d�Wd�dS1sywYdS)Nr�r�zthis is file A
�rb�this is file Ar)�	buffering)r_r�r�re�io�
TextIOBaser�read�BufferedIOBase�strip�	RawIOBase)rrarrrr�test_open_commons
��"�z_BasePathTest.test_open_commoncCsX|�t�}|d�d�|�|d��d�|�t|djd�|�|d��d�dS)Nr�sabcdefgZsomestr)r_r�Zwrite_bytesr�
read_bytesr�r�r`rrr�test_read_write_bytess

z#_BasePathTest.test_read_write_bytescCsf|�t�}|djddd�|�|djddd�d�|�t|djd	�|�|djdd�d�dS)
Nr�uäbcdefgzlatin-1��encodingzutf-8�ignore)r��errorsZbcdefgs	somebytes)r_r��
write_textrZ	read_textr�r�r`rrr�test_read_write_texts
��z"_BasePathTest.test_read_write_textcCs�|�t�}|djddd�|�|d��d�|djddd�|�|d��d�|djddd�|�|d��d	�ttjd
d�}|d�d�|�|d��d
|d|d�dS)Nr�zabcde
fghlk

mnopq�
)�newlinesabcde
fghlk

mnopq�
sabcde

fghlk

mnopqz
sabcde

fghlk

mnopq�asciir�zabcde
fghlk

mnopqsabcdesfghlks
mnopq)r_r�r�rr�r�r��linesep)rraZos_linesep_byterrr�test_write_text_with_newliness$
����z+_BasePathTest.test_write_text_with_newlinescsX|j��t�}|��}t|�}gd�}t��r|gd�7}|�|�fdd�|D��dS)N)r�r�r�r�r�)r�r�r�r�c�h|]}�t|��qSr�r��rr��rgrr�	<setcomp>;�z-_BasePathTest.test_iterdir.<locals>.<setcomp>)r_r��iterdir�setrr�r)rra�it�pathsrrrr�test_iterdir3sz_BasePathTest.test_iterdircs>|j��td�}t|���}�fdd�dD�}|�||�dS)Nr�csh|]}�td|��qS)r�rrrrrrCrz5_BasePathTest.test_iterdir_symlink.<locals>.<setcomp>)r�r�)r_r�rrr)rrar	rrrr�test_iterdir_symlink=s

z"_BasePathTest.test_iterdir_symlinkcCsb|�td�}|�t��}t|���Wd�n1swY|�|jjtj	tj
tjf�dS�Nr�)r_r�r��OSError�nextr�assertInr�r�ZENOTDIRr�ZEINVAL�rrar�rrr�test_iterdir_nodirFs�
�z _BasePathTest.test_iterdir_nodircs���fdd�}�j��t�}|�d�}��|tjj�||dg�||�d�g�||�d�ddg�t��sB||�d�d	dg�n
||�d�gd
��t��sZ||�d�dg�n
||�d�gd��t��ss||�d
�dg�dS||�d
�ddg�dS)Nc�"��t|��fdd�|D��dS)NcrrrrrrrrRrzA_BasePathTest.test_glob_common.<locals>._check.<locals>.<setcomp>�rr��globr�rgrrr�_checkQ�"z._BasePathTest.test_glob_common.<locals>._checkr�r�z
dir*/file*�
dirB/fileB�
dirC/fileCz*Ar�)r�r�r�z*B/*)r�
dirB/linkD�linkB/fileBzlinkB/linkD�*/fileBr)	r_r�rre�collectionsr��Iteratorrr��rrrarrrr�test_glob_commonPs"
z_BasePathTest.test_glob_commoncs���fdd�}�j��t�}|�d�}��|tjj�||dg�||�d�dg�||�d�g�t��s@||�d�dg�n
||�d�gd��||�d	�gd
���td�}||�d	�dd
g�||�d�d
g�dS)Ncr)NcrrrrrrrrjrzB_BasePathTest.test_rglob_common.<locals>._check.<locals>.<setcomp>rrrrrrirz/_BasePathTest.test_rglob_common.<locals>._checkr�r�rz*/fileAr)rzdirB/linkD/fileBrzdirA/linkC/fileBzfile*)r�rr�dirC/dirD/fileDr�rr"z*/*)	r_r��rglobrerr�rrr�r rrr�test_rglob_commonhs

z_BasePathTest.test_rglob_commoncsB|j}|t��t��d��}hd�}|�|�fdd�|D��dS)N�*>rr�r�r�r�r�r"r�rz	dirC/dirDrr�r�z
dirA/linkCr�csh|]}�|�qSrrr
�rarrr�r�z8_BasePathTest.test_rglob_symlink_loop.<locals>.<setcomp>)r_r�rr#r)rrg�given�expectrr&r�test_rglob_symlink_loop}s

z%_BasePathTest.test_rglob_symlink_loopcs�d}|j}|t�d�|�gdg|�R�}|jdd�d�dg|����fdd	�td
�D�}|D]
}|�t|�|�q2�fdd	�td
�D�}�}t|�D]}|d}|D]
}|�t|�|�qVqNdS)N�Zdeepr#T�r�r
r%csg|]}�����qSr)r�r�j��base�patternrrr�rz;_BasePathTest.test_glob_many_open_files.<locals>.<listcomp>�dcsg|]}��d��qS)r#)r#r,)r/rrr�r)r_r�r�r�rrr)rZdepthrgraZitersr�irr.r�test_glob_many_open_files�s"��z'_BasePathTest.test_glob_many_open_filescCsf|j}|t�}|�t|�d��|td�h�|�t|�d��|td�h�|�t|�d��t��dS)Nr�z
dirA/../file*z
dirA/../fileAz../xyzzy)r_r�rrrrfrrr�test_glob_dotdot�s
z_BasePathTest.test_glob_dotdotcCsl|j}|t�d}|��|d}|��|d}|��|d}|d}|�|d�t�d��}tt�	|��|_
|�tt
|�d���d	�Wd�n1sQwY|��t�d��}tt�	|��|_
|�tt
|�d���d
�Wd�n1swY|�d�t�d��}tt�	|��|_
|�tt
|�d���d
�Wd�dS1s�wYdS)NZpermissions�file1�file2�subdir�file3�otherz
os.scandirr%r��r)r_r�r��touch�
symlink_tor�patch�sortedr��scandirZreturn_valuerr�rrr�)rrgr/r5r6r7r8r?rrr�test_glob_permissions�s0��
"�z#_BasePathTest.test_glob_permissionsTcCs|�|�}|�||�dSrj)�resolver)rrar�strictr�rrr�_check_resolve�s
z_BasePathTest._check_resolvec
Cs�|j}|td�}|�t��}|jdd�Wd�n1swY|�|jjtj�|�	t
|jdd��tj�
td��|tddd�}|�	t
|jdd��tj�
tddd��|tdddd�}|�	t
|jdd��tj�tj�
ddd���|tdd	�}|�||�|td
�}|�||td��|tdd
d	�}|�||tdd	��|tddd	�}|�||tdd	��|tdd
d	ddd�}|�||tdd	ddd�d�|tdd
dddd�}tjdkr�|�||tdddd�d�n|�||tddd�d�t�tjdt��d��}|�tj|�t�tj�
|�t
dd��t�t
d�tj�
|d��|tdddd	�}|�||tdd	��|tdddddd�}|�||tdddd�d�|tddddddd�}tjdk�rg|�|||ddd�d�dS|�||tddd�d�dS)Nr�T�rBF�in�spamr�r�r�r�r�r�r�r�r�z-dirD)r��dir�linkX�linkY)r_r�r�r
rArr�r�r�r�rmr�r�r��abspath�_check_resolve_relativer�rZ	_longpath�tempfileZmkdtempr�r�r�r��_check_resolve_absolute)rrgrar�r#rrr�test_resolve_common�sn
����
��
��
��z!_BasePathTest.test_resolve_commoncCs�|�t�}|�dtd��|�tj�dd�td��|�tj�dd�td��|d}|�|jdd�|�|dd}|jt	|jdd�|�|jd	d�|dd�dS)
Nr%�0�1�2TrD�3�4F)
r_r�r�r�r�r�rrAr�r�)rrar�r�rrr�test_resolve_dots
 z_BasePathTest.test_resolve_dotc	CsT|�dd�}t��}t�t�z|�|��|�t|��Wt�|�dSt�|�w)NZnonZexist)r_r�r��chdirr�rrA)rraZold_cwdrrr�)test_resolve_nonexist_relative_issue38671s
z7_BasePathTest.test_resolve_nonexist_relative_issue38671cCs�|�t�}|��}|��}t|�|�Wd�n1swYt|�t|�|��|��|��|�	Wd�dS1sEwYdSrj)r_r�rrr�rAr�)rrarZit2rrr�	test_with)s
�"�z_BasePathTest.test_withcCsd|�t�d}|��j}|d@}|�|�|�|��j|�|dB}|�|�|�|��j|�dS)Nr��m����)r_r�r��st_moder�r)rra�mode�new_moderrr�
test_chmod:s


z_BasePathTest.test_chmodcCst|�t�d}|��}|��j}|d@}|j|dd�|�|��j|�|dB}|j|dd�|�|��j|�dS)Nr�rXT��follow_symlinksrY)r_r�rAr�rZr�r)rrar�r[r\rrr�test_chmod_follow_symlinks_trueGs
z-_BasePathTest.test_chmod_follow_symlinks_truecCsZ|�t�d}|��}|�|��|�|�|jdA�|�|j|j�|�|��|�dS)Nr�rY)r_r�r�rr�rZr�r��rra�strrr�	test_statWsz_BasePathTest.test_statcC�.|�t�d}|��}|�||jdd��dS)Nr�Fr^)r_r�r�r�rarrr�test_stat_no_follow_symlinks`sz*_BasePathTest.test_stat_no_follow_symlinkscCrd)Nr�Fr^)r_r�r�rrarrr�&test_stat_no_follow_symlinks_nosymlinkfsz4_BasePathTest.test_stat_no_follow_symlinks_nosymlinkcC�*|�t�d}|��}|�||���dS)Nr�)r_r�r�r��lstatrarrr�
test_lstatksz_BasePathTest.test_lstatcCrgr)r_r�r�rrhrarrr�test_lstat_nosymlinkqsz"_BasePathTest.test_lstat_nosymlinkz&the pwd module is needed for this testcC�^|�t�d}|��j}zt�|�j}Wnty$|�d|�Ynw|�	||�
��dS)Nr�z4user %d doesn't have an entry in the system database)r_r�r��st_uid�pwd�getpwuid�pw_name�KeyErrorrrr�)rraZuidr�rrrr�v�
��z_BasePathTest.test_ownerz&the grp module is needed for this testcCrk)Nr�z5group %d doesn't have an entry in the system database)r_r�r��st_gid�grpZgetgrgidZgr_namerprrr�)rra�gidr�rrrr��rqz_BasePathTest.test_groupcCs2|�t�d}|��|�|j�|�|j�dSr)r_r��unlinkr�r�r`rrr�test_unlink�sz_BasePathTest.test_unlinkcCs*|�t�d}|�|j�|jdd�dS)N�fileAAAT)Z
missing_ok)r_r�r�rur`rrr�test_unlink_missing_ok�sz$_BasePathTest.test_unlink_missing_okcCsH|�t�d}|��D]}|��q|��|�|j�|�|j�dS)Nr�)r_r�rru�rmdirr�r�r�rrr�
test_rmdir�s
z_BasePathTest.test_rmdir�linkzos.link() is not presentc
Cs(|�t�}|d}|��j}|dd}z|�t��
|�|�Wd�n1s*wYWntyI}z
|�d|�WYd}~nd}~ww|�	|��j|�|�	t
j�||�d�|�
|j�td�}|�t��
|�|�Wd�n1s}wY|�	t
�|�j|�|�
|j�dS)Nr�r��fileAAz
os.link(): %sTrw)r_r�r��st_sizeZassertWarns�DeprecationWarning�link_to�PermissionErrorrrr�r�r�r��rel_join)rrgra�sizer��er�rrr�test_link_to�s,

�����z_BasePathTest.test_link_tocCs�|�t�}|d}|��j}|dd}|�|�|�|��j|�|�tj�	||��|�|�
��|dd}td�}|�|�|�t�|�j|�|�|�
��dS�Nr�r�r|rw)r_r�r�r}Zhardlink_torr�r�r�r�r�r�)rrg�targetr�r{�link2Ztarget2rrr�test_hardlink_to�s



z_BasePathTest.test_hardlink_tozos.link() is presentcCsX|�t�}|d}|dd}|�t��|�|�Wd�dS1s%wYdS)Nr�r�r|)r_r�r�r�r�rrgrar�rrr�test_link_to_not_implemented�s
"�z*_BasePathTest.test_link_to_not_implementedcCs�|�t�}|d}|��j}|dd}|�|�}|�||�|�|��j|�|�|j�td�}|�|�}|�||�|��|�t�|�j|�|�|j�dSr�)	r_r�r�r}�renamerr�r�r�)rrgrar�r�Z	renamed_pr�Z	renamed_qrrr�test_rename�s



z_BasePathTest.test_renamecCs�|�t�}|d}|��j}|dd}|�|�}|�||�|�|��j|�|�|j�tdd�}|�|�}|�||�|��|�t�|�j|�|�|j�dS)Nr�r�r|r�r�)	r_r�r�r}rrr�r�r�)rrgrar�r�Z
replaced_pr�Z
replaced_qrrr�test_replace�s




z_BasePathTest.test_replacecCs�|�t�}|�|d��|�d��|�|d��|�d��|�|d��|�d��|�t��|d��Wd�dS1sCwYdS)Nr�r�r�r�r�r�)r_r�r�readlinkr�r
r�rrr�
test_readlink�s
�"�z_BasePathTest.test_readlinkcCs�|�t�}|d}|�|���|��|�|���|��}|j}|j}t	�
t|�|d|df�|��|��}|�|j|�|�|j|�|d}|�|���|jddd�|�|���|j
t|jdd�dS)NZnewfileA�
ZnewfileBi�F)r[�exist_ok�r�)r_r�r�r�r;r�r��st_mtime�st_mtime_nsr��utimermr/r�r
)rrgrarbZ	old_mtimeZold_mtime_nsrrr�test_touch_common�s$
z_BasePathTest.test_touch_commoncCs^|�t�}|d}|��|�d��}|�|����d�Wd�dS1s(wYdS)Nr�r�r�)r_r�r;r�rr�r�)rrgrarrrr�test_touch_nochanges
"�z!_BasePathTest.test_touch_nochangecCs�|�t�}|d}|�|���|��|�|���|�|���|�t��}|��Wd�n1s6wY|�	|j
jtj�dS)NZnewdirA)
r_r�r�r�r�r��is_dirr�r
rr�r��EEXIST)rrgrar�rrr�
test_mkdirs

�z_BasePathTest.test_mkdircCs\|�tdd�}|�|���|�t��}|��Wd�n1s"wY|�|jj	t	j
�|jdd�|�|���|�|���|�t��}|jdd�Wd�n1sZwY|�|jj	t	j
�t�|��j�}|�tdd�}|jddd�|�|���|�|���tjdkr�|�t�|��j�d	|@�|�t�|j��j�|�dS)
NZnewdirB�newdirCTr+ZnewdirDZnewdirEimr�im)r_r�r�r�r�r
r�rr�r�r�r�r�r�r��S_IMODErZr�r�r�)rrar�r[rrr�test_mkdir_parents&s*
��
z _BasePathTest.test_mkdir_parentscCs�|�td�}|��j}|�|���|�|���|�t��}|�	�Wd�n1s-wY|�
|jjtj
�|j	dd�|�|���|�
|��j|�dS)Nr�Tr�)r_r�r��st_ctimer�r�r�r��FileExistsErrorr�rr�r�r�)rra�st_ctime_firstr�rrr�test_mkdir_exist_ok?s

�z!_BasePathTest.test_mkdir_exist_okcCs|�td�}|�|���|�t��}|��Wd�n1s!wY|�|jj	t	j
�|d}|jdd�|��j}|�|���|�t��}|jdd�Wd�n1s[wY|�|jj	t	j
�|jddd�|�|���|�|��j|�dS)Nr�r�Tr+�r�r�)
r_r�r�r�r�r�r�rr�r�r�r�r�)rrar�r�rrr�test_mkdir_exist_ok_with_parentKs"
�
�z-_BasePathTest.test_mkdir_exist_ok_with_parentcCs2|�d���jdd�|�d���jddd�dS)Nr
Tr�r�)r_rAr�rurrr�test_mkdir_exist_ok_root\sz&_BasePathTest.test_mkdir_exist_ok_rootcCsrdD]}|�|d�}|��snq|�d�|�t��|ddjdd�Wd�dS1s2wYdS)NZZYXWVUTSRQPONMLKJIHGFEDCBAz:\z&cannot find a drive that doesn't exist�childr�Tr+)r_r�rr�r
r�)rr#rarrr�test_mkdir_with_unknown_driveas�
"�z+_BasePathTest.test_mkdir_with_unknown_drivecCs�|�tdd�}|�|���|�t��}|jdd�Wd�n1s$wY|�|jj	t	j
�|�t��}|jddd�Wd�n1sIwY|�|jj	t	j
�dS)Nr�r�Tr+r��r_r�r�r�r�r�r�rr�r�r�rrrr�test_mkdir_with_child_filels��z(_BasePathTest.test_mkdir_with_child_filecCs�|�td�}|�|���|�t��}|��Wd�n1s!wY|�|jj	t	j
�|�t��}|jdd�Wd�n1sEwY|�|jj	t	j
�dS)Nr�Tr�r�rrrr�test_mkdir_no_parents_filexs
��z(_BasePathTest.test_mkdir_no_parents_filec	s�td�D]m�|�td��}|�|���d��fdd�	}�fdd�td�D��t��|d	d
}zt�d|��|jdd
d�Wd�n1sJwYWnt	ya|�
t|���Yn	w|�t|���|�
|���qdS)N� zdirCPC%dr�cs6t|�}���rt�||���|�t�||�dSrj)rm�popr�r��add)r�r[)�concurrently_createdr0rr�my_mkdir�s

zE_BasePathTest.test_mkdir_concurrent_parent_creation.<locals>.my_mkdircsg|]
}t�d|>@��qS)r�)�bool)r�n)�pattern_numrrr�szG_BasePathTest.test_mkdir_concurrent_parent_creation.<locals>.<listcomp>�Zdir1Zdir2zpathlib._normal_accessor.mkdirTFr�)r�)rr_r�r�r�rrr=r�r�rrmZassertNotInr�)rrar�Zp12r)r�r0r�r�%test_mkdir_concurrent_parent_creation�s$����z3_BasePathTest.test_mkdir_concurrent_parent_creationcCs|�t�}|d}|dd}|�|�|�|��|���|�|��|���|dd}|�t|��|�|��|���|�|��|���|�|�	��|d}|dd}|j|dd�|�|��|���|�|��|���|�
|�	��|�
t|����dS)	Nr�r�ZlinkAAZlinkAAAr�ZlinkAAAATr�)
r_r�r<rr�r�rhrmr�r�r�r�r)rrgr�r{rrr�test_symlink_to�s$

z_BasePathTest.test_symlink_tocCs�|�t�}|�|d���|�|d���|�|d���|�|dd���t��rK|�|d���|�|d���|�|d��d�|�|d	��d�|�|d
��d�dS)Nr�r�r�r�r�r�r�FudirA�zdirA)r_r�r�r�r�rr�ror�rrr�test_is_dir�s
z_BasePathTest.test_is_dircCs�|�t�}|�|d���|�|d���|�|d���|�|dd���t��rJ|�|d���|�|d���|�|d���|�|d��d	�|�|d
��d	�dS)Nr�r�r�r�r�r�r��fileA�F�fileA)r_r�r��is_filer�rr�ror�rrr�test_is_file�s
z_BasePathTest.test_is_filecCs�|�t�}|�d�}|�|d���|�|d���|�|d���|�|dd���|�|���t��rD|�|d���|�|�d���d�|�|�d	���d�dS)
Nr
r�r�r�r�r�u/�Fz/)r_r�r�Zis_mountr�rr�ro)rrg�Rrrr�
test_is_mount�s

z_BasePathTest.test_is_mountcCs�|�t�}|�|d���|�|d���|�|d���|�|dd���t��rJ|�|d���|�|d���|�|d���|�|d��d	�|�|d
��d	�t��rx|�|d��d	�|�|d��d	�dSdS)
Nr�r�r�r�r�r�r�r�Fr�ulinkA�zlinkA)	r_r�r��
is_symlinkrr�r�ror�r�rrr�test_is_symlink�s
�z_BasePathTest.test_is_symlinkcC�|�t�}|�|d���|�|d���|�|d���|�|dd���|�|d��d�|�|d��d�dS�Nr�r�r�r�r�Fr�)r_r�r��is_fiforor�rrr�test_is_fifo_false��
z _BasePathTest.test_is_fifo_false�mkfifozos.mkfifo() required�vxworksz%fifo requires special path on VxWorksc
Cs�|�td�}z	t�t|��Wnty(}z
|�d|�WYd}~nd}~ww|�|���|�	|�
��|�	|���|�|�td���d�|�|�td���d�dS)NZmyfifozos.mkfifo(): %su	myfifo�Fzmyfifo)
r_r�r�r�rmr�rr�r�r��	is_socketr�ro)rrgr�rrr�test_is_fifo_true�s��z_BasePathTest.test_is_fifo_truecCr�r�)r_r�r�r�ror�rrr�test_is_socket_false		r�z"_BasePathTest.test_is_socket_false�AF_UNIXzUnix sockets requiredc
Cs�|�td�}t�tjtj�}|�|j�z	|�t|��Wn&t	yC}zt
|t�s0dt|�vr9|�dt|��WYd}~nd}~ww|�
|���|�|���|�|���|�|�td���d�|�|�td���d�dS)NZmysockzAF_UNIX path too longzcannot bind Unix socket: u	mysock�Fzmysock)r_r��socketr�ZSOCK_STREAMr��closeZbindrmr
�
isinstancer�rr�r�r�r�r�ro)rrgZsockr�rrr�test_is_socket_true	s 
��z!_BasePathTest.test_is_socket_truecCr�r�)r_r�r��is_block_deviceror�rrr�test_is_block_device_false#	r�z(_BasePathTest.test_is_block_device_falsecCr�r�)r_r�r��is_char_deviceror�rrr�test_is_char_device_false,	r�z'_BasePathTest.test_is_char_device_falsecCsv|�d�}|��s|�d�|�|���|�|���|�|���|�|�d���d�|�|�d���d�dS)Nz	/dev/nullz/dev/null requiredu/dev/null�Fz
/dev/null)	r_r�rr�r�r�r�r�ror�rrr�test_is_char_device_true5	s

z&_BasePathTest.test_is_char_device_truecCsP|�td�}tdtjd�D]}t�||�}t�|�}|�|��|���qdS)Nr�rr�)	r_r�rrrr	r
rr�)rrarrrzrrrr
@	s
�z"_BasePathTest.test_pickling_commoncCsJ|j}|d�}|d�}|�|jd|jd�|�|jd|jd�dS)Nz/usr/bin/fooz/usr/local/binr�r�r�)r_rornr�rrr�test_parts_interningG	s
z"_BasePathTest.test_parts_interningc	Cs�|�t�}|�tj�dd�td��|�tj�dd�td��|�tj�dd�td��|�|td��|d��}|�||�|�t	|�t�|d��}|�||�|�t	|�t�|d��}|�||�|�t	|�t�|d��}|�||�|�t	|�t�t�
�}t�t�z\|�d���}|�||�|�t	|�t�|�d���}|�||�|�t	|�t�|�d���}|�||�|�t	|�t�|�d���}|�||�|�t	|�t�Wt�|�dSt�|�w)NZlink0Zlink1r�Zlink3)r_r�r�r�r�r�rArr�rmr�rU)rZlink0_targetrgraZold_pathrrr�_check_complex_symlinksP	sB

z%_BasePathTest._check_complex_symlinkscCs|�t�dSrj)r�r�rurrr�test_complex_symlinks_absolutey	�z,_BasePathTest.test_complex_symlinks_absolutecCs|�d�dS)Nr%)r�rurrr�test_complex_symlinks_relative}	r�z,_BasePathTest.test_complex_symlinks_relativecCs|�tj�dd��dS)Nr�r�)r�r�r�r�rurrr�&test_complex_symlinks_relative_dot_dot�	sz4_BasePathTest.test_complex_symlinks_relative_dot_dotN)T)br.r/r0rbr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r
r�skip_unless_symlinkrrr!r$r)r3r4r@rCrKrMrNrTrVrWr]�
only_posixr`rcrerfrirj�unittest�
skipUnlessrmr�rsr�rvrxrz�hasattrr�r��skipIfr�r�r�r�r�r�r�r�r�r�r��only_ntr�r�r�r�r�r�r�r�r�r��sys�platformr�r�r�r�r�r�r�r
r�r�r�r�r�rrrrr�cs�


	





$
<



	











	





	�	
			)

r�c@s2eZdZejZdd�Zdd�Zdd�Zdd�Z	d	S)
�PathTestcCs|�|jt|j�dSrj)ror_rmrurrr�test_class_getitem�	�zPathTest.test_class_getitemcCr�r�)r_rorpr�r�rFr�r�r`rrrr��	r�zPathTest.test_concrete_classcCs.tjdkr|�ttj�dS|�ttj�dS)Nr�)r�r�r�r�rFr�r�rurrr�test_unsupported_flavour�	s
z!PathTest.test_unsupported_flavourcCsH|��}|�td��t|�d��Wd�dS1swYdS)NzUnacceptable patternr)r_ZassertRaisesRegexr�r�rr`rrr�test_glob_empty_pattern�	s"�z PathTest.test_glob_empty_patternN)
r.r/r0rF�Pathr_r�r�r�r�rrrrr��	sr�c@s�eZdZejZdd�dd�Zdd�Zdd�Zd	d
�Z	e
jdd��Zd
d�Z
dd�Ze�eed�d�e�ejdkd�dd���Ze�ejdkd�dd��ZdS)�
PosixPathTestTrDcGsH|j|�}|�t��t|�|��Wd�dS1swYdSrj)r_r��RuntimeError�printrA)rrBrqr�rrr�_check_symlink_loop�	s
"�z!PosixPathTest._check_symlink_loopcCs�t�d�}|�tj|�|�t�}|d�d��Wd�n1s#wYt�td��}|�t�	|j
�d�t�d�|d�d��Wd�n1sPwYt�td��}|�t�	|j
�d�dS)Nr�new_filer����other_new_file�)r��umaskr�r_r�r�r�r�rr�rZ�rZold_maskrarbrrr�test_open_mode�	s

�
�zPosixPathTest.test_open_modec	CsNt��}zt�d�|�d�}|�t|���d�Wt�|�dSt�|�w)Nr
rFz/spam)r�r�rUr_rrmrA)rZcurrent_directoryrarrr�test_resolve_root�	s

zPosixPathTest.test_resolve_rootcCs�t�d�}|�tj|�|�t�}|d��t�td��}|�t�	|j
�d�t�d�|d��t�td��}|�t�	|j
�d�|djdd	�t�td��}|�t�	|j
�d�dS)
Nrr�r�r�r�r�Zmasked_new_filei�)r[)r�r�r�r_r�r;r�r�rr�rZr�rrr�test_touch_mode�	s


zPosixPathTest.test_touch_modecCs�t�dtd��|�td�t�dtd��|�td�t�dtd��|�td�|jtdddd�t�td	�td
��|�td
�t�td�td��|�td�t�td�td
��|�td
�|jtd
ddd�dS)NzlinkX/insiderHrIzlinkZ/../linkZZlinkZr�FrDzlinkU/insideZlinkUZlinkVzlinkW/../linkWZlinkW)r�r�r�r�r�rurrr�test_resolve_loop�	szPosixPathTest.test_resolve_loopcCsX|j}|t�}t|�d��}t�t�st�n|}|�||�|�t|�d��t��dS)N�FILEazFILEa*)r_r�rrr�fs_is_case_insensitiver�rrgrar'r(rrr�	test_glob�	szPosixPathTest.test_globcCsZ|j}|td�}t|�d��}t�t�st�n|}|�||�|�t|�d��t��dS)Nr��FILEdzFILEd*)r_r�rr#rr�rr�rrr�
test_rglob�	s
zPosixPathTest.test_rglob�getpwallz%pwd module does not expose getpwall()r�zno home directory on VxWorkscCsX|j}t�d�ddl}|�t���}|j}|j�	d�pd}|�
�D]}|j}|j�	d�}||kr5|r5nq"|}|}d}z|�|�rK|d7}|�|�sBWn	tyUYnw|d�}	|d|�d��}
|d|�d��}|d	|�d��}|d
|�d��}
|d�}|d|�d��}t
����}|�dd�|�|	��||�d
�|�|
��||�d
�|�|��||�d
�|�|��|�|�|
��|
�|�|��|�|�t|j�d|d<|�|	��|d��|�|
��||�d
�|�|��||�d
�|�|��|�|�|
��|
�|�|��|�|�t|j�Wd�dS1�s%wYdS)Nrmrr
ZfakeuserrPz~/Documentsr�z
/Documentsr�r�rr�Z	Documentsz/tmpz/tmp/Documents)r_r�
import_modulermrnr��getuidro�pw_dir�rstripr��getpwnamrprr�r�rr�r�r�)rrgrmZpwdentZusername�userhomeZ	othernameZ	otherhomeZfakename�p1�p2�p3�p4�p5�p6Zp7r�rrr�test_expanduser�	s`
�

���
$�zPosixPathTest.test_expanduser�darwinz1Bad file descriptor in /dev/fd affects only macOSc
Cs�z=tt�d��d��dd�}|s|�d�|D]"}|��|��|��|��|�	�|�
�|��|��qWdSt
yU}z|jtjkrP|�d��d}~ww)Nz/dev/fdr%r�z.no file descriptors - issue was not reproducedz Bad file descriptor not handled.)r�rFr�r#rr�r�r�r�r�r�r�r�r
r�ZEBADFZfail)rZfile_descriptorsrr�rrr�test_handling_bad_descriptor*
s(

�	
��z*PosixPathTest.test_handling_bad_descriptorN)r.r/r0rFr�r_r�r�r�r�rr�r�r�r�r�r�r�rmr�r�r�r	rrrrrr��	s*	
��5�r�c@r�)�WindowsPathTestcCs�|j}|t�}|�t|�d��|td�h�|�t|�d��|td�h�|�ttt|�d���|�d�h�|�ttt|�d���|�d�h�dS)Nr�r�zF*az\FILEaz\fileA)r_r�rrr�maprmrfrrrr�F
s$(zWindowsPathTest.test_globcCsV|j}|td�}|�t|�d��|td�h�|�ttt|�d���|�d�h�dS)Nr�r�r"z\dirD\FILEd)r_r�rrr#r
rmrfrrrr�N
s
(zWindowsPathTest.test_rglobc
sj�j�t�������dd���dd���dd���dd�d�d<�d���d���d	���d
���d���d����t�j���t�j���t�j�������������������������������f	d
d�}d�d<|�d�d<d�d<|���dd���dd�d�d<|�d�d<|�Wd�dS1s�wYdS)Nr�r�ZHOMEPATHZ	HOMEDRIVE�alice�USERNAMEz~/My Documentsz~alice/My Documentsz~bob/My Documentsz/~/My Documentszd:~/My Documentsrcs���dd�������d����t�j�d�d<������d��������d�����������������������dS)NrzC:/Users/alice/My DocumentsrzC:/Users/bob/My Documents)r�rr�r�r�r�	rgr�rrrrrrrrrr,k
s
�
�
�z.WindowsPathTest.test_expanduser.<locals>.checkzC:\Users\alicezC:\zUsers\alicezC:\Users\eve)r_rr�r�r�r�r�rr:rrrr	T
s@
"�zWindowsPathTest.test_expanduserN)	r.r/r0rFr�r_r�r�r	rrrrrB
s
rc@s,eZdZ	Gdd�d�Zdd�Zdd�ZdS)�CompatiblePathTestc@s&eZdZ	dd�Zdd�Zdd�ZdS)zCompatiblePathTest.CompatPathcCs
||_dSrj)�string)rrrrr�__init__�
s
z&CompatiblePathTest.CompatPath.__init__cCst|�|j�d|���Sr}�rpr�rr9rrr�__truediv__�
r�z)CompatiblePathTest.CompatPath.__truediv__cCst|�|�d|j���Sr}rrrrr�__rtruediv__�
r�z*CompatiblePathTest.CompatPath.__rtruediv__N)r.r/r0rrrrrrr�
CompatPath�
s
rcCsnt�d�|�d�}|�||j�|�|jd�|�t��t�d�dWd�dS1s0wYdS)N�test�rightz
test/rightr�)rFr�rrerrr�r��r�resultrrr�test_truediv�
�"�zCompatiblePathTest.test_truedivcCsn|�d�t�d�}|�||j�|�|jd�|�t��dt�d�Wd�dS1s0wYdS)N�leftrz	left/testr�)rrFr�rerrr�r�rrrr�
test_rtruediv�
rz CompatiblePathTest.test_rtruedivN)r.r/r0rrr rrrrr�
s
	r�__main__)1Zcollections.abcrr�r�r�r�rFrr�r�rLr�rZtest.supportrrZtest.support.os_helperrrrsrm�ImportError�objectrZTestCaser2rGrXrr'r�r��realpathr�r�r�r�r�r�r�r�r�r�r�r�rrr.�mainrrrr�<module>s��)$BL��+%G
)�