Your IP : 216.73.216.213


Current Path : /opt/alt/python37/lib64/python3.7/test/__pycache__/
Upload File :
Current File : //opt/alt/python37/lib64/python3.7/test/__pycache__/test_pathlib.cpython-37.pyc

B

� f�m�@sddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlmZddl
mZddlmZmZyddlZddlZWnek
r�dZZYnXGdd�de�ZGdd�deej�ZGd	d
�d
eej�ZGdd�de�ZGd
d�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)Gdd �d e)ej�Z*e&Gd!d"�d"e)ej��Z+e%Gd#d$�d$e)ej��Z,e-d%k�re�.�dS)&�N)�mock)�support)�TESTFN�FakePathc@seZdZdd�Zdd�ZdS)�_BaseFlavourTestcsd|jj}|jj�|jj�|�fdd�|D��}|�||��r`|�fdd�|D��}|�||�dS)Ncsg|]}|�d���qS)�/)�replace)�.0�x)�sep��6/opt/alt/python37/lib64/python3.7/test/test_pathlib.py�
<listcomp>sz7_BaseFlavourTest._check_parse_parts.<locals>.<listcomp>csg|]}|�d���qS)r)r)r	r
)�altseprr
r s)�flavourZparse_partsrr�assertEqual)�self�arg�expected�fZactualr)rrr
�_check_parse_partssz#_BaseFlavourTest._check_parse_partscCs�|j}|jj}|gddgf�|dgdddgf�|dgdddgf�|ddgddddgf�|dgddddgf�|dgddddgf�|dddgddddd	dgf�|dd
dgddddd	dgf�|dddgddddd	dgf�|dgddgf�|dddgdddgf�|dddgddddgf�|dddgdddgf�|d
gd||ddgf�|ddgd||ddgf�|ddgd||ddgf�|ddd	gd||dd	gf�|dddgd||d	gf�dS)N��aza/�bza/bza/b/zb/c�d�czb//czb/c/�.z/a/bz/az/a/z/bz/c)rrr)r�checkrrrr
�test_parse_parts_common#s(z(_BaseFlavourTest.test_parse_parts_commonN)�__name__�
__module__�__qualname__rrrrrr
rs
rc@s"eZdZejZdd�Zdd�ZdS)�PosixFlavourTestcCs�|j}|ddgdddddgf�|ddgdddddgf�|ddgdddddgf�|d	gddd	gf�|d
gddd
gf�|dgdddgf�dS)Nz//arrz//rz///arz////azc:azc:\az\a)r)rrrrr
�test_parse_partsCsz!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)rrrza/b)rrza/bza/b/)rrza/b/z/a)rrrz/a/b)rrza/bz/a/b/)rrza/b/z//a)rz//rz///az///a/bzc:/a/b)rrzc:/a/bz\/a/b)rrz\/a/bz\a\b)rrz\a\b)r�	splitrootr)rrrrr
�test_splitrootOszPosixFlavourTest.test_splitrootN)rr r!�pathlibZ_posix_flavourrr#r%rrrr
r"@sr"c@s"eZdZejZdd�Zdd�ZdS)�
NTFlavourTestcCs|j}|dgdddgf�|dgdddgf�|dgdddgf�|dgddddgf�|d	gddddgf�|d
gddddgf�|dgddd
gf�|dgddd
gf�|dgddd
dgf�|dddgdddddgf�|dddgdddddgf�|dddgddddgf�|dddgddddddgf�|dddgddddgf�|dgdddgf�|d gddddgf�|d d!gddddgf�|d"gd#dd$gf�|d%gd#dd$dgf�|dd!dgdddddgf�|d&d!dgdddddgf�|d'd!dgd(dd)ddgf�dS)*Nzc:rzc:/�\zc:\rzc:arzc:/az/az//a/bz\\a\bz\\a\b\z//a/b/z//a/b/crzZ:bzZ:rzZ:/bzZ:\z//b/crz\\b\cz\\b\c\z	Z://b//c/zd/z//b/c//z//?/c:/z\\?\c:z\\?\c:\z//?/c:/az/bz//?/UNC/b/cz\\?\UNC\b\cz\\?\UNC\b\c\z
//?/UNC/b/c/dzZ:/az//?/Z:/az\\?\Z:z\\?\Z:\)r)rrrrr
r#gs.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)Nr)rrrr)rrrza\b)rrza\bz\a)rr(rz\a\b)rr(za\bzc:a\b)zc:rza\bzc:\a\b)zc:r(za\bz\\az\\\a/b)rr(za/bzc:\\a)zc:r(rzc:\\\a/b)zc:r(za/bz\\a\b)z\\a\br(rz\\a\b\z	\\a\b\c\d)z\\a\br(zc\dz\\\a\b)rr$r)rrrrr
r%�s"zNTFlavourTest.test_splitrootN)rr r!r&Z_windows_flavourrr#r%rrrr
r'ds"r'c
@s.eZdZddddddddd	d
g
ddd
dddgd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Z	dd�Z
d d!�Zd"d#�Zd$d%�Z
d&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Zd4d5�Zd6d7�Zd8d9�Zd:d;�Zd<d=�Zd>d?�Zd@dA�ZdBdC�ZdDdE�ZdFdG�ZdHdI�ZdJdK�Z dLdM�Z!dNdO�Z"dPS)Q�_BasePurePathTest)rr)za/r)rzb/)za/zb/)za/b/)za//b)za//b//)rrr)rrr)rrr)rz/b/cr)rz///b//czd/)z/az/b/cr)rrrzc/d)rrzb/c/d)rz/b/c/d)za/bz/b/c/dcCs*|�d�}|j|_|jj|_|jj|_dS)Nr)�clsZ_flavourrrr)r�prrr
�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)Nrrrz/aza/b/cz/a/b/cza/b)r*�assertIsInstancerr)r�Pr+rrr
�test_constructor_common�sz)_BasePurePathTest.test_constructor_commoncs`Gdd�dt��|j}|�fdd�|D��}|�|||��x|jD]}|�t|�t�qDWdS)Nc@seZdZdS)z:_BasePurePathTest._check_str_subclass.<locals>.StrSubclassN)rr r!rrrr
�StrSubclass�sr0c3s|]}�|�VqdS)Nr)r	r
)r0rr
�	<genexpr>�sz8_BasePurePathTest._check_str_subclass.<locals>.<genexpr>)�strr*r�parts�assertIs�type)r�argsr.r+�partr)r0r
�_check_str_subclass�sz%_BasePurePathTest._check_str_subclasscCs6|�d�|�d�|�d�|�d�|�d�dS)Nrrrza/b.txtz/a/b.txt)r8)rrrr
�test_str_subclass_common�s




z*_BasePurePathTest.test_str_subclass_commoncCs�|j}|d�}|�d�}|�||d��|�t|�t|��|�dd�}|�||d��|�|d��}|�||d��|�d�}|�||d��dS)Nza/brza/b/crza/b/c/dz/c)r*�joinpathrr4r5)rr.r+�pprrr
�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)	Nza/brza/b/czc/dza/b/c/drzc/a/b/dz/c)r*rr4r5)rr.r+r;rrr
�test_div_common�sz!_BasePurePathTest.test_div_commoncCs(|j|�}|�t|�|�d|j��dS)Nr)r*rr2rr)rrr6r+rrr
�
_check_str�s
z_BasePurePathTest._check_strcCs,xdD]}|�||f�qW|�dd�dS)N)rza/bza/b/crz/a/bz/a/b/cr)r)r>)r�pathstrrrr
�test_str_commons
z!_BasePurePathTest.test_str_commoncCs,|j}x dD]}|�||���|�qWdS)N)rza/bza/b/crz/a/bz/a/b/c)r*r�as_posix)rr.r?rrr
�test_as_posix_commons
z&_BasePurePathTest.test_as_posix_commoncCs2t�|j�}|j}|�t|d��d|d�dS)Nza/b�a�b)�os�fsencoderr*r�bytes)rrr.rrr
�test_as_bytes_commonsz&_BasePurePathTest.test_as_bytes_commonc	CsL|j}|�t��|d���WdQRX|�t��|���WdQRXdS)Nr)r*�assertRaises�
ValueError�as_uri)rr.rrr
�test_as_uri_commons
z$_BasePurePathTest.test_as_uri_commoncCs�x�dD]�}|�|�}|jj}t|�}|�|�|d�|�|�|�d�|�|t|�dd�}|�t	|�|�
��t	|tj�}|�
|j|j�|�||�|�t|�|�qWdS)N)rza/bza/b/crz/a/bz/a/b/c�(�)����)r*�	__class__r�repr�
assertTrue�
startswith�endswith�lenr�evalrAr&�__dict__r4)rr?r+Zclsname�r�inner�qrrr
�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)Nza/brrz/a/brr)r*r�assertNotEqual�int)rr.rrr
�test_eq_common-sz _BasePurePathTest.test_eq_commoncCs&|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��dS)Nrrrzb.pyza/b.pyz/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/dz/b.pyz/*.pyz/a/*.pyz/ab.pyz	/a/b/c.py)r*rIrJ�matchrS�assertFalse)rr.rrr
�test_match_common:s8z#_BasePurePathTest.test_match_commonc	s��fdd�}�j}|d�}|d�}|d�}|d�}|||�|||�|||�|||�|||��j}|d�}|d�}|d	�}|d
�}|||�|||�|||�|||�|||���t��|�ikWdQRXdS)Ncs��||���||�dS)N)�
assertLessZ
assertGreater)rr)rrr
rc_sz:_BasePurePathTest.test_ordering_common.<locals>.assertLessrza/b�abcrz/az/a/bz/abcz/b)r*rI�	TypeError)rrcr.rrrrr)rr
�test_ordering_common]s.









z&_BasePurePathTest.test_ordering_commoncCsX|j}|j}|d�}|j}|�|d�|�||j�|d�}|j}|�||ddf�dS)Nza/b)rrz/a/brr)rr*r3rr4)rrr.r+r3rrr
�test_parts_commonysz#_BasePurePathTest.test_parts_commoncCs4|j}|d�}|�|��d�|�t�|�d�dS)Nza/b)za/b)r*r>�
__fspath__rE�fspath)rr.r+rrr
�test_fspath_common�sz$_BasePurePathTest.test_fspath_commonc	s�xƈj��D]�\}}|�d�j�}|��jd�}||krZ|�fdd�|D�}|�|f���|�}x^|D]V}�j|�}��||d�|����t|�t|����t	|�|���|�
�|�qjWqWdS)Nrcs"g|]}t�fdd�|D���qS)c3s|]}|�d�j�VqdS)rN)rr)r	r7)rrr
r1�szA_BasePurePathTest.test_equivalences.<locals>.<listcomp>.<genexpr>)�tuple)r	�t)rrr
r�sz7_BasePurePathTest.test_equivalences.<locals>.<listcomp>zfailed with args {})�equivalences�itemsrr�appendr*r�format�hashr2rA)r�kZtuplesZcanon�posixZpcanonrlr+r)rr
�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)Nza/b/cza/brz/a/b/cz/a/bz/ar)r*r�parent)rr.r+rrr
�test_parent_common�sz$_BasePurePathTest.test_parent_commonc	Csz|j}|d�}|j}|�t|�d�|�|d|d��|�|d|d��|�|d|d��|�t|�|d�|d�|d�g�|�t��|d	WdQRX|�t��|dWdQRX|�t��||d<WdQRX|d
�}|j}|�t|�d�|�|d|d��|�|d|d��|�|d|d
��|�t|�|d�|d�|d
�g�|�t��|dWdQRXdS)Nza/b/c�rza/brOr�rrPz/a/b/cz/a/bz/ar)r*�parentsrrV�listrI�
IndexErrorre)rr.r+�parrrr
�test_parents_common�s.""z%_BasePurePathTest.test_parents_commoncCs@|j}|�|d�jd�|�|d�jd�|�|d�jd�dS)Nza/brz/a/b)r*r�drive)rr.rrr
�test_drive_common�sz#_BasePurePathTest.test_drive_commoncCsX|j}|j}|�|d�jd�|�|d�jd�|�|d�j|�|�|d�j|�dS)Nrza/brz/a/b)r*rr�root)rr.rrrr
�test_root_common�sz"_BasePurePathTest.test_root_commoncCsX|j}|j}|�|d�jd�|�|d�jd�|�|d�j|�|�|d�j|�dS)Nrza/brz/a/b)r*rr�anchor)rr.rrrr
�test_anchor_common�sz$_BasePurePathTest.test_anchor_commoncCs�|j}|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd	�|�|d
�jd	�dS)Nrrrza/brz/a/bz/a/b/.za/b.pyzb.pyz/a/b.py)r*r�name)rr.rrr
�test_name_common�sz"_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)Nrrz..rza/bz/a/bz/a/b/.za/b.pyz.pyz/a/b.pyza/.hgrcz/a/.hgrcza/.hg.rcz.rcz	/a/.hg.rcz
a/b.tar.gzz.gzz/a/b.tar.gzza/Some name. Ending with a dot.z /a/Some name. Ending with a dot.)r*r�suffix)rr.rrr
�test_suffix_common�s$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)Nrrrza/bz/a/bz/a/b/.za/b.pyz.pyz/a/b.pyza/.hgrcz/a/.hgrcza/.hg.rcz.rcz	/a/.hg.rcz
a/b.tar.gzz.tarz.gzz/a/b.tar.gzza/Some name. Ending with a dot.z /a/Some name. Ending with a dot.)r*r�suffixes)rr.rrr
�test_suffixes_common�s"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)Nrrz..rza/brza/b.pyza/.hgrcz.hgrcza/.hg.rcz.hgz
a/b.tar.gzzb.tarza/Some name. Ending with a dot.zSome name. Ending with a dot.)r*r�stem)rr.rrr
�test_stem_commons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)Nza/bzd.xmlza/d.xmlz/a/bz/a/d.xmlza/b.pyz/a/b.pyz
a/Dot ending.z/a/Dot ending.rrrz/czc/zc/d)r*r�	with_namerIrJ)rr.rrr
�test_with_name_commonsz'_BasePurePathTest.test_with_name_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)Nza/bz.gzza/b.gzz/a/bz/a/b.gzza/b.pyz/a/b.pyrrr�gzz/.gzzc/dz.c/.dz./.dz.d/.r)r*r�with_suffixrIrJrr)rr.rrr
�test_with_suffix_common/s(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)Nza/brCrrrza/rza/b/cza/cz/az/a/brz/a/z/cz/a/b/cz/a/c)r*rIre�relative_torrJ)rr.r+rrr
�test_relative_to_commonHs<z)_BasePurePathTest.test_relative_to_commoncCs�|j}|d�}xrtdtjd�D]^}t�||�}t�|�}|�|j|j�|�||�|�t	|�t	|��|�t
|�t
|��q WdS)Nz/a/brrO)r*�range�pickle�HIGHEST_PROTOCOL�dumps�loadsr4rQrrqr2)rr.r+�proto�dumpedr;rrr
�test_pickling_commonks
z&_BasePurePathTest.test_pickling_commonN)#rr r!rmr,r/r8r9r<r=r>r@rBrHrLr\r_rbrfrgrjrtrvr}rr�r�r�r�r�r�r�r�r�r�rrrr
r)�sJ

##r)c@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)Nz/a/brz///a/bz//a/bz//)r*rr�)rr.rrr
�	test_rootzszPurePosixPathTest.test_rootcCsF|j}|�|d�|d��|�|d�|d��|�|d�|d��dS)Nza/bzA/bz/az///az//a)r*r]r)rr.rrr
�test_eq�szPurePosixPathTest.test_eqcCsF|j}|�|d���d�|�|d���d�|�|d���d�dS)Nrzfile:///z/a/b.cz
file:///a/b.cz/a/b%#czfile:///a/b%25%23c)r*rrK)rr.rrr
�test_as_uri�szPurePosixPathTest.test_as_uricCsfddlm}|j}yt�d�Wntk
r>|�d�YnX|�|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.parser�r*rErF�UnicodeEncodeError�skipTestrrK)rr�r.rrr
�test_as_uri_non_ascii�sz'PurePosixPathTest.test_as_uri_non_asciicCs|j}|�|d��d��dS)NzA.pyza.PY)r*rar`)rr.rrr
�
test_match�szPurePosixPathTest.test_matchcCs�|j}|�|����|�|d����|�|d����|�|d����|�|d����|�|d����|�|d����|�|d����dS)Nrza/b/rz/az/a/b/z//az//a/b)r*ra�is_absoluterS)rr.rrr
�test_is_absolute�sz"PurePosixPathTest.test_is_absolutecCsZ|j}|�d|d����|�d|d����|�d|d����|�d|d����dS)NFrrz/foo/barz/dev/con/PRN/NUL)r*r4�is_reserved)rr.rrr
�test_is_reserved�s
z"PurePosixPathTest.test_is_reservedcCsh|j}|d�}|�d�}|�||d��|d��d�}|�||d��|d��d�}|�||d��dS)Nz//arz//a/bz/az//cz/c)r*r:r)rr.r+r;rrr
�	test_join�s
zPurePosixPathTest.test_joincCsb|j}|d�}|d}|�||d��|d�d}|�||d��|d�d}|�||d��dS)Nz//arz//a/bz/az//cz/c)r*r)rr.r+r;rrr
�test_div�szPurePosixPathTest.test_divN)rr r!r&�
PurePosixPathr*r�r�r�r�r�r�r�r�r�rrrr
r�ws

r�c@s�eZdZejZej��Ze�	dddgdddddgd	gd
dgd��d
d�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Zd9d:�Z d;S)<�PureWindowsPathTest)zc:r)zc:za/)rzc:r)zc:/r)zc:rr)zc:z/a)z/zzc:/r)z//x/yzc:/r)z//a/b)z//a/br)z//a/b/r)zc:azc:/az//a/b/z//a/b/ccCs�|�d�}|�t|�d�|�d�}|�t|�d�|�d�}|�t|�d�|�d�}|�t|�d�|�d	�}|�t|�d
�dS)Nza/b/cza\b\czc:/a/b/czc:\a\b\cz//a/bz\\a\b\z//a/b/cz\\a\b\cz	//a/b/c/dz	\\a\b\c\d)r*rr2)rr+rrr
�test_str�s




zPureWindowsPathTest.test_strcCs^|�d�|�d�|�d�|�d�|�d�|�d�|�d�|�d�|�d	�dS)
Nzc:zc:az	c:a\b.txtzc:\zc:\az
c:\a\b.txtz\\some\sharez\\some\share\az\\some\share\a\b.txt)r8)rrrr
�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)Nzc:a/bzc:rrzd:a/bzc:/a/bz/a/bza/BzA/bzC:a/Bzc:A/bz//Some/SHARE/a/Bz//somE/share/A/b)r*rr])rr.rrr
r��szPureWindowsPathTest.test_eqc	Cs�|j}|�t��|d���WdQRX|�t��|d���WdQRX|�|d���d�|�|d���d�|�|d���d�|�|d	���d
�|�|d���d�|�|d
���d�|�|d���d�dS)Nz/a/bzc:a/bzc:/zfile:///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*rIrJrKr)rr.rrr
r��s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.pyz/*.pyzc:*.pyzc:/*.pyzd:/b.pyzb.pyzc:b.pyz/b.pyz//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*rSr`ra)rr.rrr
rbs&z%PureWindowsPathTest.test_match_commoncs��fdd�}�j}|d�}|d�}|||���||k���||k�|d�}|d�}|||���||k���||k�dS)Ncs��||���||�dS)N)ZassertLessEqual�assertGreaterEqual)rr)rrr
�assertOrderedEqual szDPureWindowsPathTest.test_ordering_common.<locals>.assertOrderedEqualzc:A/bzC:a/Bz//some/Share/A/bz//Some/SHARE/a/B)r*ra)rr�r.r+r[r)rr
rfs

z(PureWindowsPathTest.test_ordering_commoncCsX|j}|d�}|j}|�|d�|d�}|j}|�|d�|d�}|j}|�|d�dS)Nzc:a/b)zc:rrzc:/a/b)zc:\rrz	//a/b/c/d)z\\a\b\rr)r*r3r)rr.r+r3rrr
�
test_parts/s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/bzz:azz:zz:/a/b/czz:/a/bzz:/azz:/z	//a/b/c/dz//a/b/cz//a/b)r*rru)rr.r+rrr
�test_parent;szPureWindowsPathTest.test_parentc	Cs�|j}|d�}|j}|�t|�d�|�|d|d��|�|d|d��|�t|�|d�|d�g�|�t��|dWdQRX|d�}|j}|�t|�d�|�|d|d��|�|d|d	��|�t|�|d�|d	�g�|�t��|dWdQRX|d
�}|j}|�t|�d�|�|d|d��|�|d|d��|�t|�|d�|d�g�|�t��|dWdQRXdS)
Nzz:a/b/rxrzz:arOzz:zz:/a/b/zz:/azz:/z	//a/b/c/dz//a/b/cz//a/b)r*ryrrVrzrIr{)rr.r+r|rrr
�test_parentsMs2z PureWindowsPathTest.test_parentscCs�|j}|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�dS)	Nzc:zc:a/bzc:/zc:/a/b/z//a/bz\\a\bz//a/b/z	//a/b/c/d)r*rr~)rr.rrr
�
test_driveiszPureWindowsPathTest.test_drivecCs�|j}|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d	�jd�dS)
Nzc:rzc:a/bzc:/r(zc:/a/b/z//a/bz//a/b/z	//a/b/c/d)r*rr�)rr.rrr
r�sszPureWindowsPathTest.test_rootcCs�|j}|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d	�jd�dS)
Nzc:zc:a/bzc:/zc:\zc:/a/b/z//a/bz\\a\b\z//a/b/z	//a/b/c/d)r*rr�)rr.rrr
�test_anchor}szPureWindowsPathTest.test_anchorcCs�|j}|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d�jd�|�|d	�jd�|�|d
�jd�|�|d�jd�dS)Nzc:rzc:/zc:a/brzc:/a/bzc:a/b.pyzb.pyz	c:/a/b.pyz//My.py/Share.phpz//My.py/Share.php/a/b)r*rr�)rr.rrr
�	test_name�szPureWindowsPathTest.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)Nzc:rzc:/zc:a/bzc:/a/bzc:a/b.pyz.pyz	c:/a/b.pyz	c:a/.hgrcz
c:/a/.hgrcz
c:a/.hg.rcz.rczc:/a/.hg.rczc:a/b.tar.gzz.gzz
c:/a/b.tar.gzz!c:a/Some name. Ending with a dot.z"c:/a/Some name. Ending with a dot.z//My.py/Share.phpz//My.py/Share.php/a/b)r*rr�)rr.rrr
�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)Nzc:zc:/zc:a/bzc:/a/bzc:a/b.pyz.pyz	c:/a/b.pyz	c:a/.hgrcz
c:/a/.hgrcz
c:a/.hg.rcz.rczc:/a/.hg.rczc:a/b.tar.gzz.tarz.gzz
c:/a/b.tar.gzz//My.py/Share.phpz//My.py/Share.php/a/bz!c:a/Some name. Ending with a dot.z"c:/a/Some name. Ending with a dot.)r*rr�)rr.rrr
�
test_suffixes�s"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)Nzc:rzc:.zc:..z..zc:/zc:a/brzc:a/b.pyz	c:a/.hgrcz.hgrcz
c:a/.hg.rcz.hgzc:a/b.tar.gzzb.tarz!c:a/Some name. Ending with a dot.zSome name. Ending with a dot.)r*rr�)rr.rrr
�	test_stem�szPureWindowsPathTest.test_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
�dS)Nzc:a/bzd.xmlz	c:a/d.xmlzc:/a/bz
c:/a/d.xmlzc:a/Dot ending.zc:/a/Dot ending.zc:zc:/z
//My/Sharezd:zd:ezd:/e)r*rr�rIrJ)rr.rrr
�test_with_name�sz"PureWindowsPathTest.test_with_namecCs�|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)Nzc:a/bz.gzzc:a/b.gzzc:/a/bz	c:/a/b.gzzc:a/b.pyz	c:/a/b.pyrrrz
//My/Sharer�r(zc:z/.gzz\.gzzc:.gzzc/dzc\dz.c/dz.c\d)r*rr�rIrJ)rr.rrr
�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)'Nz	C:Foo/Barzc:zFoo/Barzc:foOZBarzc:foO/z	c:foO/baRrzd:rZFooz/FoozC:/Fooz
C:Foo/Bar/Bazz	C:Foo/Bazz
C:/Foo/Barz/Foo/Barz\Foo\Barzc:/zc:/foOzc:/foO/z
c:/foO/baRzC:/BazzC:/Foo/Bar/Bazz
C:/Foo/BazzC:Foozd:/z//C/Fooz//Server/Share/Foo/Barz//sErver/sHarez//sErver/sHare/z//sErver/sHare/Fooz//sErver/sHare/Foo/z//sErver/sHare/Foo/Barz/Server/Share/Foozc:/Server/Share/Fooz
//z/Share/Fooz//Server/z/Foo)r*rr�rIrJr2)rr.r+rrr
�test_relative_to�shz$PureWindowsPathTest.test_relative_tocCs(|j}|�|����|�|d����|�|d����|�|d����|�|d����|�|d����|�|d����|�|d����|�|d����|�|d	����|�|d
����|�|d����|�|d����|�|d
����|�|d����|�|d����dS)Nrza/b/rz/az/a/b/zc:zc:azc:a/b/zc:/zc:/azc:/a/b/z//a/bz//a/b/z//a/b/cz	//a/b/c/d)r*rar�rS)rr.rrr
r�&s"z$PureWindowsPathTest.test_is_absolutecCs�|j}|d�}|�d�}|�||d��|�d�}|�||d��|�d�}|�||d��|�d�}|�||d��|�d�}|�||d��|�d	�}|�||d��|�d
�}|�||d��dS)NzC:/a/bzx/yz
C:/a/b/x/yz/x/yzC:/x/yzD:x/yzD:/x/yz//host/share/x/yzc:x/yzc:/x/y)r*r:r)rr.r+r;rrr
r�;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)NzC:/a/bzx/yz
C:/a/b/x/yr
�yz/x/yzC:/x/yz/xzD:x/yzD:zD:/x/yz//host/share/x/yzc:x/yzc:/x/y)r*r)rr.r+rrr
r�QszPureWindowsPathTest.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����dS)NFrrz/foo/barTZconZNULzNUL.txtZcom1zcom9.barzbar.com9Zlpt1zlpt9.barzbar.lpt9zc:/NUL/con/bazz//my/share/nul/con/aux)r*r4r�)rr.rrr
r�esz$PureWindowsPathTest.test_is_reservedN)!rr r!r&�PureWindowsPathr*r)rm�copy�updater�r�r�r�rbrfr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr
r��s>



:r�c@s*eZdZejZdd�Zdd�Zdd�ZdS)�PurePathTestcCs0|�d�}|�t|�tjdkr$tjntj�dS)Nr�nt)r*r4r5rEr�r&r�r�)rr+rrr
�test_concrete_class{s

z PurePathTest.test_concrete_classcCs$t�d�}t�d�}|�||�dS)Nr)r&r�r�r])rr+r[rrr
�test_different_flavours_unequal�s

z,PurePathTest.test_different_flavours_unequalc	Cs�t�d�}t�d�}|�t��||kWdQRX|�t��||kWdQRX|�t��||kWdQRX|�t��||kWdQRXdS)Nr)r&r�r�rIre)rr+r[rrr
�!test_different_flavours_unordered�s

z.PurePathTest.test_different_flavours_unorderedN)	rr r!r&ZPurePathr*r�r�r�rrrr
r�xsr�cGstjjtf|��S)N)rE�path�join�BASE)r
rrr
�<lambda>��r�cGstjjtf|��S)N)rEr�r�r)r
rrr
r��r�r�z)test requires a Windows-compatible systemz'test requires a POSIX-compatible systemc@seZdZejZdS)�PosixPathAsPureTestN)rr r!r&�	PosixPathr*rrrr
r��sr�c@s"eZdZejZdd�Zdd�ZdS)�WindowsPathAsPureTestc	Cs,|j}|�t��|d���WdQRXdS)Nzc:/)r*rI�NotImplementedError�owner)rr.rrr
�
test_owner�sz WindowsPathAsPureTest.test_ownerc	Cs,|j}|�t��|d���WdQRXdS)Nzc:/)r*rIr��group)rr.rrr
�
test_group�sz WindowsPathAsPureTest.test_groupN)rr r!r&�WindowsPathr*r�r�rrrr
r��sr�c@s�eZdZdZdd�Zejdkr(dd�Zndd�Zdd	�Zd
d�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.d/��Zd0d1�Zejd2d3��Zd�d5d6�Z e Z!Z"ejd7d8��Z#ejd9d:��Z$d;d<�Z%d=d>�Z&d?d@�Z'ejdAdB��Z(dCdD�Z)e*�+e,dE�dFdG��Z-e*�+e.dH�dIdJ��Z/dKdL�Z0dMdN�Z1dOdP�Z2dQdR�Z3dSdT�Z4dUdV�Z5dWdX�Z6dYdZ�Z7d[d\�Z8d]d^�Z9d_d`�Z:e;dadb��Z<dcdd�Z=dedf�Z>dgdh�Z?ejdidj��Z@dkdl�ZAdmdn�ZBeCdodp��ZDdqdr�ZEdsdt�ZFe*�+eGedu�dv�dwdx��ZHdydz�ZIe*�+eGeJd{�d|�d}d~��ZKdd��ZLd�d��ZMd�d��ZNd�d��ZOd�d��ZPd�d��ZQejd�d���ZRejd�d���ZSejd�d���ZTd�S)��
_BasePathTestz?Tests for the FS-accessing functionalities of the Path classes.c	Cs�dd�}|�|�t�t�t�td��t�td��t�td��t�tdd��t�td��ttd�d	��}|�d
�WdQRXttdd�d	��}|�d�WdQRXttdd
�d	��}|�d�WdQRXttddd�d	��}|�d�WdQRXt�td�d�t�	��r�t�
dtd��t�
dtd��|�dtd��|�tj�dd�tdd��|�tj�dd�tdd��t�
dtd��dS)NcSst�td�d�t�t�dS)N�dirEi�)rE�chmodr�r�rmtreer�rrrr
�cleanup�sz$_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�linkAznon-existing�
brokenLink�linkBz..�linkC�linkD�brokenLinkLoop)
�
addCleanuprE�mkdirr�r��open�writer�r�can_symlink�symlink�dirlinkr�)rr�rrrr
r,�s0


z_BasePathTest.setUpr�cCstj||dd�dS)NT)�target_is_directory)rEr�)r�src�destrrr
r��sz_BasePathTest.dirlinkcCst�||�dS)N)rEr�)rr�r�rrr
r��scCs*|�tj�t|�t|��d||f�dS)Nz&%r and %r don't point to the same file)rSrEr��samefiler2)r�path_a�path_brrr
�
assertSame�sz_BasePathTest.assertSamec	Os6|�t��}|||�WdQRX|�|jjtj�dS)N)rI�FileNotFoundErrorr�	exception�errno�ENOENT)r�funcr6�kwargs�cmrrr
�assertFileNotFound�sz _BasePathTest.assertFileNotFoundcCs |�tj�|�tj�|��dS)N)rrEr��normcase)rr�r�rrr
�assertEqualNormCase�sz!_BasePathTest.assertEqualNormCasecCsT|�t���}|�||�|�t|�t|��|�t|�t|��|�|�	��dS)N)
r*rE�getcwdrr�r2r4r5rSr�)rr+r[rrr
�	_test_cwd�s
z_BasePathTest._test_cwdcCs|j��}|�|�dS)N)r*�cwdr�)rr+rrr
�test_cwds
z_BasePathTest.test_cwdcCsX|�tj�d��}|�||�|�t|�t|��|�t|�t|��|�	|�
��dS)N�~)r*rEr��
expanduserrr�r2r4r5rSr�)rr+r[rrr
�
_test_homes
z_BasePathTest._test_homecCs|j��}|�|�dS)N)r*�homer)rr+rrr
�	test_homes
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)
rEr�r�r�r*rSr�rarIr�)rZ
fileA_pathZ
fileB_pathr+r;r[Znon_existentrYrrr
�
test_samefiles"



z_BasePathTest.test_samefilecCs$|�d�}|�|��t�d��dS)Nrr)r*r�statrE)rr+rrr
�test_empty_path's
z_BasePathTest.test_empty_pathcCs�|j}|d�}|�|��|tj�d���|d�}|�|��|�|d�}|�|��|�|d�}|�|��|�||d���j�d}|�|��|�dS)Nrrz/~z../~r)r*rrrEr��absoluter�)rr.r+rrr
�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
����dS)NTr�r�F�bahr�r�r�rz/xyzzy)r*r�r4�existsrr�)rr.r+rrr
�test_exists9sz_BasePathTest.test_existsc	Cs�|�t�}|d�d��$}|�|tj�|�|��d�WdQRX|d�d��(}|�|tj�|�|���	�d�WdQRX|djddd��(}|�|tj
�|�|���	�d�WdQRXdS)Nr�rYzthis is file A
�rbsthis is file Ar)�	buffering)r*r�r�r-�io�
TextIOBaser�read�BufferedIOBase�strip�	RawIOBase)rr+rrrr
�test_open_commonHs
z_BasePathTest.test_open_commoncCsX|�t�}|d�d�|�|d��d�|�t|djd�|�|d��d�dS)Nr�sabcdefgZsomestr)r*r�Zwrite_bytesrZ
read_bytesrIre)rr+rrr
�test_read_write_bytesTs

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�Z
write_textrZ	read_textrIre)rr+rrr
�test_read_write_text\s
z"_BasePathTest.test_read_write_textcsb|j��t�}|��}t|�}dddddg}t��rD|dddd	g7}|�|�fd
d�|D��dS)Nr�r�r�r�r�r�r�r�r�csh|]}�t|��qSr)r�)r	r[)r.rr
�	<setcomp>msz-_BasePathTest.test_iterdir.<locals>.<setcomp>)r*r��iterdir�setrr�r)rr+�it�pathsrr)r.r
�test_iterdiresz_BasePathTest.test_iterdircs>|j��td�}t|���}�fdd�dD�}|�||�dS)Nr�csh|]}�td|��qS)r�)r�)r	r[)r.rr
rusz5_BasePathTest.test_iterdir_symlink.<locals>.<setcomp>)r�r�)r*r�rrr)rr+r!rr)r.r
�test_iterdir_symlinkos

z"_BasePathTest.test_iterdir_symlinkc	CsN|�td�}|�t��}t|���WdQRX|�|jjtj	tj
tjf�dS)Nr�)r*r�rI�OSError�nextr�assertInr�r�ZENOTDIRr�ZEINVAL)rr+r�rrr
�test_iterdir_nodirxs
z _BasePathTest.test_iterdir_nodircs��fdd�}�j��t�}|�d�}��|tjj�||dg�||�d�g�||�d�ddg�t��s�||�d�d	dg�n||�d�d	dd
g�t��s�||�d�dg�n||�d�ddd
dg�t��s�||�d�dg�n||�d�dd
g�dS)Ncs"��t|��fdd�|D��dS)Ncsh|]}�t|��qSr)r�)r	r[)r.rr
r�szA_BasePathTest.test_glob_common.<locals>._check.<locals>.<setcomp>)rr)�globr)r.rrr
�_check�sz._BasePathTest.test_glob_common.<locals>._checkr�r�z
dir*/file*z
dirB/fileBz
dirC/fileCz*Ar�r�z*B/*z
dirB/linkDzlinkB/fileBzlinkB/linkDz*/fileB)	r*r�r(r-�collectionsrd�Iteratorrr�)rr)r+r r)r.rr
�test_glob_common�s$

z_BasePathTest.test_glob_commoncs���fdd�}�j��t�}|�d�}��|tjj�||dg�||�d�dg�||�d�g�t��s�||�d�dg�n||�d�ddd	d
g�||�d�dddd
g��td�}||�d�dd
g�||�d�d
g�dS)Ncs"��t|��fdd�|D��dS)Ncsh|]}�t|��qSr)r�)r	r[)r.rr
r�szB_BasePathTest.test_rglob_common.<locals>._check.<locals>.<setcomp>)rr)r(r)r.rrr
r)�sz/_BasePathTest.test_rglob_common.<locals>._checkr�r�z
dirB/fileBz*/fileAz*/fileBzdirB/linkD/fileBzlinkB/fileBzdirA/linkC/fileBzfile*z
dirC/fileCzdirC/dirD/fileDr�z*/*)	r*r��rglobr-r*rdr+rr�)rr)r+r r)r.rr
�test_rglob_common�s"



z_BasePathTest.test_rglob_commoncs\|j}|t��t��d��}dddddddd	d
ddd
dddh}|�|�fdd�|D��dS)N�*r�r�z
dirA/linkCr�z
dirB/fileBz
dirB/linkDr�z	dirC/dirDzdirC/dirD/fileDz
dirC/fileCr�r�r�r�r�csh|]}�|�qSrr)r	r
)r+rr
r�sz8_BasePathTest.test_rglob_symlink_loop.<locals>.<setcomp>)r*r�rr-r)rr.�given�expectr)r+r
�test_rglob_symlink_loop�sz%_BasePathTest.test_rglob_symlink_loopcCsf|j}|t�}|�t|�d��|td�h�|�t|�d��|td�h�|�t|�d��t��dS)Nz..z
dirA/../file*z
dirA/../fileAz../xyzzy)r*r�rrr()rr.r+rrr
�test_glob_dotdot�s
z_BasePathTest.test_glob_dotdotc	Cs.|j}|t�d}|��|d}|��|d}|��|d}|d}|�|d�t�d��0}tt�	|��|_
|�tt
|�d���d	�WdQRX|��t�d��0}tt�	|��|_
|�tt
|�d���d
�WdQRX|�d�t�d��0}tt�	|��|_
|�tt
|�d���d
�WdQRXdS)NZpermissions�file1�file2�subdir�file3�otherz
os.scandirr/rw�r)r*r�r��touch�
symlink_tor�patch�sortedrE�scandirZreturn_valuerrVrr(r�)rr.�baser4r5r6r7r>rrr
�test_glob_permissions�s*$$
z#_BasePathTest.test_glob_permissionsTcCs|�|�}|�||�dS)N)�resolver)rr+r�strictr[rrr
�_check_resolve�s
z_BasePathTest._check_resolvec
Cs�|j}|td�}|�t��}|jdd�WdQRX|�|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�}tjdk�r�|�||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�r�|�|||ddd�d�n|�||tddd�d�dS)NrT)rBF�inZspamz..r�r�r�r�r�r�r�r�z-dirD)r��dir�linkX�linkY)r*r�rIr$rArr�r�r�r�r2rEr�r��abspath�_check_resolve_relativer�rZ	_longpath�tempfileZmkdtempr�r�r�r��_check_resolve_absolute)rr.r+r�rrrr
�test_resolve_common�sT


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�2T)rB�3�4F)
r*r�r�r�rEr�rrArIr�)rr+r[rYrrr
�test_resolve_dot1s
z_BasePathTest.test_resolve_dotc	Cs�|�t�}|��}|��}t|�|�WdQRX|�tt|�|�tt|�|�t|j�|�t|j�|�t|j�|�t|j	�dS)N)
r*r�rr%rIrJr�rAr
�	__enter__)rr+r Zit2rrr
�	test_with?s

z_BasePathTest.test_withcCsd|�t�d}|��j}|d@}|�|�|�|��j|�|dB}|�|�|�|��j|�dS)Nr�im����)r*r�r�st_moder�r)rr+�modeZnew_moderrr
�
test_chmodNs


z_BasePathTest.test_chmodcCsZ|�t�d}|��}|�|��|�|�|jdA�|�|j|j�|�|��|�dS)Nr�rU)r*r�rrr�rVr�r])rr+�strrr
�	test_stat\sz_BasePathTest.test_statcCs*|�t�d}|��}|�||���dS)Nr�)r*r�rr]�lstat)rr+rYrrr
�
test_lstatesz_BasePathTest.test_lstatcCs*|�t�d}|��}|�||���dS)Nr�)r*r�rrr[)rr+rYrrr
�test_lstat_nosymlinkksz"_BasePathTest.test_lstat_nosymlinkz&the pwd module is needed for this testcCs`|�t�d}|��j}yt�|�j}Wn"tk
rJ|�d|�YnX|�	||�
��dS)Nr�z4user %d doesn't have an entry in the system database)r*r�r�st_uid�pwd�getpwuid�pw_name�KeyErrorr�rr�)rr+Zuidr�rrr
r�ps
z_BasePathTest.test_ownerz&the grp module is needed for this testcCs`|�t�d}|��j}yt�|�j}Wn"tk
rJ|�d|�YnX|�	||�
��dS)Nr�z5group %d doesn't have an entry in the system database)r*r�r�st_gid�grpZgetgrgidZgr_namerbr�rr�)rr+�gidr�rrr
r�{s
z_BasePathTest.test_groupcCs2|�t�d}|��|�|j�|�|j�dS)Nr�)r*r��unlinkr�r)rr+rrr
�test_unlink�sz_BasePathTest.test_unlinkcCsL|�t�d}x|��D]}|��qW|��|�|j�|�|j�dS)Nr�)r*r�rrf�rmdirr�r)rr+r[rrr
�
test_rmdir�sz_BasePathTest.test_rmdircCs�|�t�}|d}|��j}|dd}|�|�|�|��j|�|�|j�td�}|�|�|�t�|�j|�|�|j�dS)Nr�r��fileAAZfileAAA)	r*r�r�st_size�renamerr��rel_joinrE)rr.r+�sizer[rYrrr
�test_rename�s



z_BasePathTest.test_renamecCs�|�t�}|d}|��j}|dd}|�|�|�|��j|�|�|j�tdd�}|�|�|�t�|�j|�|�|j�dS)Nr�r�rjr�r�)	r*r�rrkrrr�rmrE)rr.r+rnr[rYrrr
�test_replace�s




z_BasePathTest.test_replacecCs�|�t�}|d}|�|���|��|�|���|��}|j}|j}t	�
t|�|d|df�|��|��}|�|j|�|�|j|�|d}|�|���|jddd�|�|���|j
t|jdd�dS)NZnewfileA�
ZnewfileBi�F)rW�exist_ok)rr)r*r�rar
r:rSr�st_mtime�st_mtime_nsrE�utimer2r�rIr$)rr.r+rYZ	old_mtimeZold_mtime_nsrrr
�test_touch_common�s$
z_BasePathTest.test_touch_commonc	CsH|�t�}|d}|��|�d��}|�|����d�WdQRXdS)Nr�rsthis is file A)r*r�r:r�rrr)rr.r+rrrr
�test_touch_nochange�s

z!_BasePathTest.test_touch_nochangec	Csx|�t�}|d}|�|���|��|�|���|�|���|�t��}|��WdQRX|�	|j
jtj�dS)NZnewdirA)
r*r�rar
r�rS�is_dirrIr$rr�r��EEXIST)rr.r+r�rrr
�
test_mkdir�s
z_BasePathTest.test_mkdirc	Cs6|�tdd�}|�|���|�t��}|��WdQRX|�|jj	t	j
�|jdd�|�|���|�|���|�t��}|jdd�WdQRX|�|jj	t	j
�t�|��j�}|�tdd�}|jddd�|�|���|�|���tjdk�r|�t�|��j�d	|@�|�t�|j��j�|�dS)
NZnewdirB�newdirCT)ryZnewdirDZnewdirEimr�im)r*r�rar
rIr$r�rr�r�r�rSrxryr�S_IMODErVrEr�ru)rr+r�rWrrr
�test_mkdir_parents�s&z _BasePathTest.test_mkdir_parentsc	Cs�|�td�}|��j}|�|���|�|���|�t��}|�	�WdQRX|�
|jjtj
�|j	dd�|�|���|�
|��j|�dS)Nr�T)rr)r*r�r�st_ctimerSr
rxrI�FileExistsErrorr�rr�r�ry)rr+�st_ctime_firstr�rrr
�test_mkdir_exist_ok�s
z!_BasePathTest.test_mkdir_exist_okc	Cs�|�td�}|�|���|�t��}|��WdQRX|�|jj	t	j
�|d}|jdd�|��j}|�|���|�t��}|jdd�WdQRX|�|jj	t	j
�|jddd�|�|���|�|��j|�dS)Nr�r{T)ry)ryrr)
r*r�rSr
rIrr�rr�r�ryrr~)rr+r�r�rrr
�test_mkdir_exist_ok_with_parents
z-_BasePathTest.test_mkdir_exist_ok_with_parentcCs2|�d���jdd�|�d���jddd�dS)NrT)rr)ryrr)r*rAr�)rrrr
�test_mkdir_exist_ok_rootsz&_BasePathTest.test_mkdir_exist_ok_rootc	Cs^x.dD]}|�|d�}|��sPqW|�d�|�t��|ddjdd�WdQRXdS)NZZYXWVUTSRQPONMLKJIHGFEDCBAz:\z&cannot find a drive that doesn't existZchildr�T)ry)r*rxr�rIr$r�)rrr+rrr
�test_mkdir_with_unknown_drives

z+_BasePathTest.test_mkdir_with_unknown_drivec	Cs�|�tdd�}|�|���|�t��}|jdd�WdQRX|�|jj	t	j
�|�t��}|jddd�WdQRX|�|jj	t	j
�dS)Nr�r�T)ry)ryrr)r*r�rSr
rIrr�rr�r�ry)rr+r�rrr
�test_mkdir_with_child_file"sz(_BasePathTest.test_mkdir_with_child_filec	Cs�|�td�}|�|���|�t��}|��WdQRX|�|jj	t	j
�|�t��}|jdd�WdQRX|�|jj	t	j
�dS)Nr�T)rr)r*r�rSr
rIrr�rr�r�ry)rr+r�rrr
�test_mkdir_no_parents_file.sz(_BasePathTest.test_mkdir_no_parents_filec
s�x�td�D]ȉ|�td��}|�|���d��fdd�	}�fdd�td�D��t��|d	d
}y*t�d|��|jdd
d�WdQRXWn$t	k
r�|�
t|���YnX|�t|���|�
|���q
WdS)N� zdirCPC%d�cs6t|�}���r&t�||���|�t�||�dS)N)r2�poprEr��add)r�rW)�concurrently_created�patternrr
�my_mkdir?s

zE_BasePathTest.test_mkdir_concurrent_parent_creation.<locals>.my_mkdircsg|]}t�d|>@��qS)rO)�bool)r	�n)�pattern_numrr
rKszG_BasePathTest.test_mkdir_concurrent_parent_creation.<locals>.<listcomp>�Zdir1Zdir2zpathlib._normal_accessor.mkdirTF)ryrr)r�)r�r*r�rar
rrr<r�rr&r2ZassertNotInrS)rr+r�Zp12r)r�r�r�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�ZlinkAAAAT)r�)
r*r�r;rrr]r[r2rarxrSrzr)rr.�target�linkrrr
�test_symlink_toWs$

z_BasePathTest.test_symlink_tocCs�|�t�}|�|d���|�|d���|�|d���|�|dd���t��r�|�|d���|�|d���|�|d���dS)Nr�r�znon-existingrr�r�r�)r*r�rSrxrarr�)rr.rrr
�test_is_diros
z_BasePathTest.test_is_dircCs�|�t�}|�|d���|�|d���|�|d���|�|dd���t��r�|�|d���|�|d���|�|d���dS)Nr�r�znon-existingrr�r�r�)r*r�rS�is_filerarr�)rr.rrr
�test_is_filezs
z_BasePathTest.test_is_filecCs�|�t�}|�d�}|�|d���|�|d���|�|d���|�|dd���|�|���t��r�|�|d���dS)Nrr�r�znon-existingrr�)r*r�raZis_mountrSrr�)rr.�Rrrr
�
test_is_mount�s

z_BasePathTest.test_is_mountcCs�|�t�}|�|d���|�|d���|�|d���|�|dd���t��r�|�|d���|�|d���|�|d���dS)Nr�r�znon-existingrr�r�r�)r*r�ra�
is_symlinkrr�rS)rr.rrr
�test_is_symlink�s
z_BasePathTest.test_is_symlinkcCsZ|�t�}|�|d���|�|d���|�|d���|�|dd���dS)Nr�r�znon-existingr)r*r�ra�is_fifo)rr.rrr
�test_is_fifo_false�s

z _BasePathTest.test_is_fifo_false�mkfifozos.mkfifo() requiredc
Cs~|�td�}yt�t|��Wn0tk
rN}z|�d|�Wdd}~XYnX|�|���|�	|�
��|�	|���dS)NZmyfifozos.mkfifo(): %s)r*r�rEr�r2�PermissionErrorr�rSr�ra�	is_socketr�)rr.�errr
�test_is_fifo_true�s z_BasePathTest.test_is_fifo_truecCsZ|�t�}|�|d���|�|d���|�|d���|�|dd���dS)Nr�r�znon-existingr)r*r�rar�)rr.rrr
�test_is_socket_false�s

z"_BasePathTest.test_is_socket_false�AF_UNIXzUnix sockets requiredc
Cs�|�td�}t�tjtj�}|�|j�y|�t|��WnJt	k
r�}z,t
|t�sbdt|�krt|�dt|��Wdd}~XYnX|�
|���|�|���|�|���dS)NZmysockzAF_UNIX path too longzcannot bind Unix socket: )r*r��socketr�ZSOCK_STREAMr��closeZbindr2r$�
isinstancer�r�rSr�rar�r�)rr.Zsockr�rrr
�test_is_socket_true�s
$z!_BasePathTest.test_is_socket_truecCsZ|�t�}|�|d���|�|d���|�|d���|�|dd���dS)Nr�r�znon-existingr)r*r�ra�is_block_device)rr.rrr
�test_is_block_device_false�s

z(_BasePathTest.test_is_block_device_falsecCsZ|�t�}|�|d���|�|d���|�|d���|�|dd���dS)Nr�r�znon-existingr)r*r�ra�is_char_device)rr.rrr
�test_is_char_device_false�s

z'_BasePathTest.test_is_char_device_falsecCsJ|�d�}|��s|�d�|�|���|�|���|�|���dS)Nz	/dev/nullz/dev/null required)r*r
r�rSr�rar�r�)rr.rrr
�test_is_char_device_true�s

z&_BasePathTest.test_is_char_device_truecCsT|�td�}xBtdtjd�D].}t�||�}t�|�}|�|��|���qWdS)Nr�rrO)	r*r�r�r�r�r�r�rr)rr+r�r�r;rrr
r��s

z"_BasePathTest.test_pickling_commoncCsJ|j}|d�}|d�}|�|jd|jd�|�|jd|jd�dS)Nz/usr/bin/fooz/usr/local/binrOrxrw)r*r4r3)rr.r+r[rrr
�test_parts_interning�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�Wdt�|�XdS)NZlink0Zlink1Zlink2Zlink3)r*r�r�rEr�r�rArr�r2r��chdir)rZlink0_targetr.r+Zold_pathrrr
�_check_complex_symlinks�sB

z%_BasePathTest._check_complex_symlinkscCs|�t�dS)N)r�r�)rrrr
�test_complex_symlinks_absolutesz,_BasePathTest.test_complex_symlinks_absolutecCs|�d�dS)Nr)r�)rrrr
�test_complex_symlinks_relativesz,_BasePathTest.test_complex_symlinks_relativecCs|�tj�dd��dS)Nr�z..)r�rEr�r�)rrrr
�&test_complex_symlinks_relative_dot_dotsz4_BasePathTest.test_complex_symlinks_relative_dot_dotN)T)Urr r!�__doc__r,rEr�r�r�r�r�r�rrrrr	rrrrrr"r�skip_unless_symlinkr#r'r,r.r2r3r@rCrIrKrLrRrTrXrZr\r]�unittest�
skipUnlessr_r�rdr�rgrirorprvrwrzr}r�r�r��only_ntr�r�r�r�r�r�r��
only_posixr�r�r��hasattrr�r�r�r�r�r�r�r�r�r�r�r�r�rrrr
r��s�


	
	
%
<			)r�c@s*eZdZejZdd�Zdd�Zdd�ZdS)�PathTestcCs0|�d�}|�t|�tjdkr$tjntj�dS)Nrr�)r*r4r5rEr�r&r�r�)rr+rrr
r�$s

zPathTest.test_concrete_classcCs,tjdkr|�ttj�n|�ttj�dS)Nr�)rEr�rIr�r&r�r�)rrrr
�test_unsupported_flavour)s
z!PathTest.test_unsupported_flavourc	Cs2|��}|�td��t|�d��WdQRXdS)NzUnacceptable patternr)r*ZassertRaisesRegexrJrzr()rr+rrr
�test_glob_empty_pattern/sz PathTest.test_glob_empty_patternN)	rr r!r&�Pathr*r�r�r�rrrr
r�!sr�c@s�eZdZejZdd�dd�Zdd�Zdd�Ze	j
d	d
��Zdd�Zd
d�Z
e�eed�d�dd��Ze�ejdkd�dd��ZdS)�
PosixPathTestT)rBc	Gs2|j|�}|�t��t|�|��WdQRXdS)N)r*rI�RuntimeError�printrA)rrBr6r�rrr
�_check_symlink_loop9s
z!PosixPathTest._check_symlink_loopc	Cs�t�d�}|�tj|�|�t�}|d�d��WdQRXt�td��}|�t�	|j
�d�t�d�|d�d��WdQRXt�td��}|�t�	|j
�d�dS)Nr�new_filer�i���other_new_filei�)rE�umaskr�r*r�r�rr�rr|rV)r�old_maskr+rYrrr
�test_open_mode>s




zPosixPathTest.test_open_modecCs�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�i�r�r�i�Zmasked_new_filei�)rW)rEr�r�r*r�r:rr�rr|rV)rr�r+rYrrr
�test_touch_modeLs


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/insiderFrGzlinkZ/../linkZZlinkZrF)rBzlinkU/insideZlinkUZlinkVzlinkW/../linkWZlinkW)rEr�r�r�r�)rrrr
�test_resolve_loop[szPosixPathTest.test_resolve_loopcCsX|j}|t�}t|�d��}t�t�s,t�n|}|�||�|�t|�d��t��dS)N�FILEazFILEa*)r*r�rr(r�fs_is_case_insensitiver)rr.r+r0r1rrr
�	test_globpszPosixPathTest.test_globcCsZ|j}|td�}t|�d��}t�t�s.t�n|}|�||�|�t|�d��t��dS)Nr��FILEdzFILEd*)r*r�rr-rr�r)rr.r+r0r1rrr
�
test_rglobxs
zPosixPathTest.test_rglob�getpwallz%pwd module does not expose getpwall()c	Cs|j}t�d�ddl}|�t���}|j}|j�	d�p:d}x8|�
�D]$}|j}|j�	d�}||krF|rFPqFW|}|}|d�}|d|d�}	|d|d�}
|d|d�}|d|d�}|d	�}
|d
�}t����"}|�dd�|�
|��||�d�|�
|	��||�d�|�
|
��||�d�|�
|��|�|�
|��|�|�
|
��|
�|�t|j�d
|d<|�
|��|d��|�
|	��||�d�|�
|
��||�d�|�
|��|�|�
|��|�|�
|
��|
�|�t|j�WdQRXdS)Nr_rrz~/Documentsrz
/Documentsz../~z/~rz~fakeuser/Documents�HOMEZ	Documentsz/tmpz/tmp/Documents)r*r�
import_moduler_r`rE�getuidra�pw_dir�rstripr��EnvironmentVarGuardr�rrrIr�)rr.r_ZpwdentZusername�userhomeZ	othernameZ	otherhome�p1�p2�p3�p4�p5�p6Zp7�envrrr
�test_expanduser�sJ
zPosixPathTest.test_expanduser�darwinz1Bad file descriptor in /dev/fd affects only macOSc
Cs�y|tt�d��d��dd�}|s,|�d�xL|D]D}|��|��|��|��|�	�|�
�|��|��q2WWn:t
k
r�}z|jtjkr�|�d��Wdd}~XYnXdS)Nz/dev/fdr/rwz.no file descriptors - issue was not reproducedz Bad file descriptor not handled.)rzr&r�r-r�r
rxr�r�r�r�r�r�r$r�ZEBADFZfail)rZfile_descriptorsrr�rrr
�test_handling_bad_descriptor�s"


z*PosixPathTest.test_handling_bad_descriptorN)rr r!r&r�r*r�r�r�rr�r�r�r�r�r�r�r_r��skipIf�sys�platformr�rrrr
r�5s.r�c@s*eZdZejZdd�Zdd�Zdd�ZdS)�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(�mapr2)rr.r+rrr
r��s$zWindowsPathTest.test_globcCsV|j}|td�}|�t|�d��|td�h�|�ttt|�d���|�d�h�dS)Nr�r�zdirC/dirD/fileDz\dirD\FILEd)r*r�rrr-r�r2)rr.r+rrr
r��s
zWindowsPathTest.test_rglobc
sb�j�t����H���dd���dd���dd���dd�d�d<�d���d���d	���d
���d���d����t�j���t�j���t�j�������������������������������f	d
d�}d�d<|���dd�d�d<|�d�d<d�d<|���dd���dd�d�d<|�WdQRXdS)Nr�ZUSERPROFILEZHOMEPATHZ	HOMEDRIVE�alice�USERNAMEz~/My Documentsz~alice/My Documentsz~bob/My Documentsz/~/My Documentszd:~/My Documentsrcs���dd�������d����t�j�d�d<������d��������d�����������������������dS)Nr�zC:/Users/alice/My Documentsr�zC:/Users/bob/My Documents)r�rrrIrbr)	r.r�r�r�r�r�r�r�rrr
r�s





z.WindowsPathTest.test_expanduser.<locals>.checkzC:\Users\alicezC:\zUsers\alice)r*rr�r�rIr�rr)rrr)	r.r�r�r�r�r�r�r�rr
r��s@zWindowsPathTest.test_expanduserN)	rr r!r&r�r*r�r�r�rrrr
r��sr��__main__)/Zcollections.abcr*rrEr�r�r&r�r�rrJr�rZtestrZtest.supportrrrdr_�ImportError�objectrZTestCaser"r'r)r�r�r�r��realpathr�r�rmr�r�r�r�r�r�r�r�r�r�r�mainrrrr
�<module>sp)$BTL8tI