Your IP : 216.73.216.213


Current Path : /opt/alt/python34/lib64/python3.4/test/__pycache__/
Upload File :
Current File : //opt/alt/python34/lib64/python3.4/test/__pycache__/test_pathlib.cpython-34.pyc

�
g f_*�@s�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm
Z
ddlmZejZyddlZddlZWnek
r�dZZYnXGdd�de�ZGdd�deej�ZGdd	�d	eej�ZGd
d�de�ZGdd
�d
eej�ZGdd�deej�ZGdd�deej�Zejje�Zdd�Z dd�Z!dd�Z"e"�Z"ej#ej$dkd�Z%ej#ej$dkd�Z&ej#e"e"�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-e.d&kr�ej/�ndS)'�N)�contextmanager)�supportc@s(eZdZdd�Zdd�ZdS)�_BaseFlavourTestcs�|jj}|jj�|jj�|�fdd�|D��}|j||��r�|�fdd�|D��}|j||�ndS)Ncs"g|]}|jd���qS)�/)�replace)�.0�x)�sep��6/opt/alt/python34/lib64/python3.4/test/test_pathlib.py�
<listcomp>s	z7_BaseFlavourTest._check_parse_parts.<locals>.<listcomp>cs"g|]}|jd���qS)r)r)rr)�altsepr
rr!s	)�flavourZparse_partsr	r
�assertEqual)�self�arg�expected�fZactualr
)r
r	r�_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�checkr	r
r
r�test_parse_parts_common$s(	"+++"%""%%(z(_BaseFlavourTest.test_parse_parts_commonN)�__name__�
__module__�__qualname__rrr
r
r
rrs
rc@s1eZdZejZdd�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_partsDs	%%%z!PosixFlavourTest.test_parse_partscCs.|jj}|j|d�d�|j|d�d�|j|d�d�|j|d�d�|j|d�d�|j|d�d�|j|d�d�|j|d	�d�|j|d�d�|j|d�d�|j|d
�d�|j|d�d�|j|d�d�dS)Nrr�a/b�a/b/z/arz/a/bz/a/b/z//a�//z///az///a/b�c:/a/b�\/a/b�\a\b)rrr)rrr)rrr")rrr#)rrr)rrr")rrr#)rr$r)rrr)rrr")rrr%)rrr&)rrr')r�	splitrootr)rrr
r
r�test_splitrootPszPosixFlavourTest.test_splitrootN)rrr�pathlibZ_posix_flavourrr!r)r
r
r
rr As	r c@s1eZdZejZdd�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
rr!hs.	((%+%"((zNTFlavourTest.test_parse_partscCsp|jj}|j|d�d�|j|d�d�|j|d�d�|j|d�d�|j|d�d�|j|d�d�|j|d	�d�|j|d
�d�|j|d�d�|j|d
�d�|j|d�d�|j|d�d�|j|d�d �|j|d�d!�|j|d�d"�|j|d
�d#�dS)$Nrr�a\bz\ar,z\a\bzc:a\b�c:zc:\a\bz\\az\\\a/b�a/bzc:\\azc:\\\a/b�\\a\bz\\a\b\z	\\a\b\c\d�c\dz\\\a\b)rrr)rrr)rrr-)rr,r)rr,r-)r.rr-)r.r,r-)rr,r)rr,r/)r.r,r)r.r,r/)r0r,r)r0r,r)r0r,r1)rr,r-)rr,r)rr(r)rrr
r
rr)�s"zNTFlavourTest.test_splitrootN)rrrr*Z_windows_flavourrr!r)r
r
r
rr+es	"r+c
@s�eZdZidPdQdRdSdTdUdVdWdXdYg
d	6dZd[d\d]d^d_gd6Zdd�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/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Zd9d:�Zd;d<�Zd=d>�Zd?d@�ZdAdB�ZdCdD�ZdEdF�ZdGdH�ZdIdJ�ZdKdL�Z dMdN�Z!dOS)`�_BasePurePathTestrr�a/�b/�a/b/�a//b�a//b//rza/b�/b/cr�///b//c�d/�/ar�c/d�b/c/d�/b/c/dcCs=|jd�}|j|_|jj|_|jj|_dS)Nr)�clsZ_flavourrr	r
)r�pr
r
r�setUp�sz_BasePurePathTest.setUpcCs�|j}|d�}|j||�|ddd�|ddd�|d�|d�|j||d��|d��|j||d�d�|d��|j||d�|d��|d��dS)Nrrrz/aza/b/cz/a/b/cza/b)r?�assertIsInstancer)r�Pr@r
r
r�test_constructor_common�s	

"%z)_BasePurePathTest.test_constructor_commoncs�Gdd�dt��|j}|�fdd�|D��}|j|||��x'|jD]}|jt|�t�q^WdS)Nc@seZdZdS)z:_BasePurePathTest._check_str_subclass.<locals>.StrSubclassN)rrrr
r
r
r�StrSubclass�srEc3s|]}�|�VqdS)Nr
)rr)rEr
r�	<genexpr>�sz8_BasePurePathTest._check_str_subclass.<locals>.<genexpr>)�strr?r�parts�assertIs�type)r�argsrCr@�partr
)rEr�_check_str_subclass�s	z%_BasePurePathTest._check_str_subclasscCsE|jd�|jd�|jd�|jd�|jd�dS)Nrrrza/b.txtz/a/b.txt)rM)rr
r
r�test_str_subclass_common�s




z*_BasePurePathTest.test_str_subclass_commoncCs�|j}|d�}|jd�}|j||d��|jt|�t|��|jdd�}|j||d��|j|d��}|j||d��|jd�}|j||d��dS)Nza/brza/b/crza/b/c/dz/c)r?�joinpathrrIrJ)rrCr@�ppr
r
r�test_join_common�s	z"_BasePurePathTest.test_join_commoncCs|j}|d�}|d}|j||d��|jt|�t|��|d}|j||d��|dd}|j||d��d|d}|j||d��||d�}|j||d��|d}|j||d��dS)	Nza/brza/b/czc/dza/b/c/drzc/a/b/dz/c)r?rrIrJ)rrCr@rPr
r
r�test_div_common�s	


z!_BasePurePathTest.test_div_commoncCs8|j|�}|jt|�|jd|j��dS)Nr)r?rrGrr	)rrrKr@r
r
r�
_check_str�sz_BasePurePathTest._check_strcCs8x!d	D]}|j||f�qW|jdd
�dS)Nr�a/b�a/b/cr�/a/b�/a/b/crr)rrTrUrrVrW)r)rS)r�pathstrr
r
r�test_str_commons
z!_BasePurePathTest.test_str_commoncCs:|j}x*dD]"}|j||�j�|�qWdS)Nr�a/b�a/b/cr�/a/b�/a/b/c)rrZr[rr\r])r?r�as_posix)rrCrXr
r
r�test_as_posix_common
s	
z&_BasePurePathTest.test_as_posix_commoncCsCtj|j�}|j}|jt|d��d|d�dS)Nza/b�a�b)�os�fsencoder	r?r�bytes)rr	rCr
r
r�test_as_bytes_commons	z&_BasePurePathTest.test_as_bytes_commoncCsV|j}|jt��|d�j�WdQX|jt��|�j�WdQXdS)Nr)r?�assertRaises�
ValueError�as_uri)rrCr
r
r�test_as_uri_commons
	z$_BasePurePathTest.test_as_uri_commoncCs�x�d
D]�}|j|�}|jj}t|�}|j|j|d�|�|j|jd�|�|t|�d	d�}|jt	|�|j
��t	|tj�}|j
|j|j�|j||�|jt|�|�qWdS)Nr�a/b�a/b/cr�/a/b�/a/b/c�(�)�)rrjrkrrlrm���)r?�	__class__r�repr�
assertTrue�
startswith�endswith�lenr�evalr^r*�__dict__rI)rrXr@Zclsname�r�inner�qr
r
r�test_repr_commons
z"_BasePurePathTest.test_repr_commoncCs|j}|j|d�|d��|j|d�|dd��|j|d�|d��|j|d�|d��|j|d�|��|j|d�|d��|j|�|d��|j|�d�|j|�i�|j|�t�dS)Nza/brrz/a/brr)r?r�assertNotEqual�int)rrCr
r
r�test_eq_common,s	z _BasePurePathTest.test_eq_commoncCs|j}|jt|d�jd�|jt|d�jd�|j|d�jd��|j|d�jd��|j|d�jd��|j|d�jd��|j|d�jd��|j|d	�jd��|j|d
�jd��|j|d�jd��|j|d�jd��|j|d�jd��|j|d�jd��|j|d
�jd��|j|d
�jd��|j|d�jd��|j|d�jd��|j|d�jd��|j|d�jd��|j|d�jd��|j|d�jd��|j|d�jd��|j|d�jd��|j|d�jd��|j|d�jd��|j|d�jd��|j|d�jd��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?rfrg�matchrt�assertFalse)rrCr
r
r�test_match_common9s8	z#_BasePurePathTest.test_match_commonc	s-�fdd�}�j}|d�}|d�}|d�}|d�}|||�|||�|||�|||�|||��j}|d�}|d�}|d	�}|d
�}|||�|||�|||�|||�|||��jt��|�ikWdQXdS)Ncs$�j||��j||�dS)N)�
assertLessZ
assertGreater)rr)rr
rr�^sz:_BasePurePathTest.test_ordering_common.<locals>.assertLessrza/b�abcrz/az/a/bz/abcz/b)r?rf�	TypeError)rr�rCrrrrr
)rr�test_ordering_common\s.	




	




z&_BasePurePathTest.test_ordering_commoncCs||j}|j}|d�}|j}|j|d�|j||j�|d�}|j}|j||ddf�dS)Nza/brrz/a/b)rr)r	r?rHrrI)rr	rCr@rHr
r
r�test_parts_commonxs				z#_BasePurePathTest.test_parts_commoncsx�jj�D]\}}|jd�j�}|j�jd�}||kr�|�fdd�|D�}|j|f�n�j|�}x�|D]y}�j|�}�j||dj|���jt|�t|���jt	|�|��j|j
�|�q�WqWdS)Nrcs/g|]%}t�fdd�|D���qS)c3s$|]}|jd�j�VqdS)rN)rr	)rrL)rr
rrF�szA_BasePurePathTest.test_equivalences.<locals>.<listcomp>.<genexpr>)�tuple)r�t)rr
rr�s	z7_BasePurePathTest.test_equivalences.<locals>.<listcomp>zfailed with args {})�equivalences�itemsrr	�appendr?r�format�hashrGr^)r�kZtuplesZcanon�posixZpcanonr�r@r
)rr�test_equivalences�s
z#_BasePurePathTest.test_equivalencescCs|j}|d�}|j|j|d��|j|jj|d��|j|jjj|��|j|jjjj|��|d�}|j|j|d��|j|jj|d��|j|jjj|d��|j|jjjj|d��dS)Nza/b/cza/brz/a/b/cz/a/bz/ar)r?r�parent)rrCr@r
r
r�test_parent_common�s	z$_BasePurePathTest.test_parent_commoncCs�|j}|d�}|j}|jt|�d�|j|d|d��|j|d|d��|j|d|d��|jt|�|d�|d�|d�g�|jt��
|d
WdQX|jt��
|dWdQX|jt��||d<WdQX|d	�}|j}|jt|�d�|j|d|d
��|j|d|d��|j|d|d��|jt|�|d
�|d�|d�g�|jt��
|dWdQXdS)Nza/b/c�rza/brpr�rz/a/b/cz/a/bz/arrq)r?�parentsrrw�listrf�
IndexErrorr�)rrCr@�parr
r
r�test_parents_common�s.		1	1z%_BasePurePathTest.test_parents_commoncCsX|j}|j|d�jd�|j|d�jd�|j|d�jd�dS)Nza/brz/a/b)r?r�drive)rrCr
r
r�test_drive_common�s	z#_BasePurePathTest.test_drive_commoncCsz|j}|j}|j|d�jd�|j|d�jd�|j|d�j|�|j|d�j|�dS)Nrza/brz/a/b)r?r	r�root)rrCr	r
r
r�test_root_common�s		z"_BasePurePathTest.test_root_commoncCsz|j}|j}|j|d�jd�|j|d�jd�|j|d�j|�|j|d�j|�dS)Nrza/brz/a/b)r?r	r�anchor)rrCr	r
r
r�test_anchor_common�s		z$_BasePurePathTest.test_anchor_commoncCs�|j}|j|d�jd�|j|d�jd�|j|d�jd�|j|d�jd�|j|d�jd�|j|d�jd�|j|d�jd	�|j|d
�jd	�dS)Nrrrza/brz/a/bz/a/b/.za/b.pyzb.pyz/a/b.py)r?r�name)rrCr
r
r�test_name_common�s	z"_BasePurePathTest.test_name_commoncCs�|j}|j|d�jd�|j|d�jd�|j|d�jd�|j|d�jd�|j|d�jd�|j|d�jd�|j|d�jd�|j|d�jd	�|j|d
�jd	�|j|d�jd�|j|d�jd�|j|d
�jd�|j|d�jd�|j|d�jd�|j|d�jd�|j|d�jd�|j|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)rrCr
r
r�test_suffix_common�s$	z$_BasePurePathTest.test_suffix_commoncCs�|j}|j|d�jg�|j|d�jg�|j|d�jg�|j|d�jg�|j|d�jg�|j|d�jg�|j|d�jdg�|j|d	�jdg�|j|d
�jg�|j|d�jg�|j|d�jd
g�|j|d�jd
g�|j|d�jddg�|j|d�jddg�|j|d�jg�|j|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)rrCr
r
r�test_suffixes_common�s"	z&_BasePurePathTest.test_suffixes_commoncCs|j}|j|d�jd�|j|d�jd�|j|d�jd�|j|d�jd�|j|d�jd�|j|d�jd�|j|d�jd	�|j|d
�jd�|j|d�jd
�|j|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)rrCr
r
r�test_stem_common
s	z"_BasePurePathTest.test_stem_commoncCs�|j}|j|d�jd�|d��|j|d�jd�|d��|j|d�jd�|d��|j|d�jd�|d��|j|d�jd�|d��|j|d	�jd�|d��|jt|d
�jd�|jt|d�jd�|jt|d�jd�|jt|d�jd
�|jt|d�jd
�|jt|d�jd�|jt|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_namerfrg)rrCr
r
r�test_with_name_commons	%%%%%%z'_BasePurePathTest.test_with_name_commoncCs|j}|j|d�jd�|d��|j|d�jd�|d��|j|d�jd�|d��|j|d�jd�|d��|j|d�jd�|d��|j|d�jd�|d��|jt|d�jd�|jt|d	�jd�|jt|d
�jd�|jt|d�jd�|jt|d�jd
�|jt|d�jd	�|jt|d�jd�|jt|d�jd
�|jt|d�jd�|jt|d�jd�|jt|d�jd�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�with_suffixrfrg)rrCr
r
r�test_with_suffix_common(s$	%%%%%%z)_BasePurePathTest.test_with_suffix_commoncCsC|j}|d�}|jt|j�|jt|jd�|j|j|��|d��|j|jd�|d��|j|j|d��|d��|j|jd�|d��|j|jd�|d��|j|j|d��|��|j|jd�|��|j|jdd�|��|jt|j|d��|jt|j|d��|jt|j|d	��|jt|j|d
��|d�}|j|j|d��|d��|j|jd�|d��|j|j|d
��|d��|j|jd
�|d��|j|jd
�|d��|j|j|d��|��|j|jd�|��|jt|j|d��|jt|j|d��|jt|j|d��|jt|j|��|jt|jd�|jt|j|d��dS)Nza/br`rrrza/rza/b/cza/cz/az/a/brz/a/z/cz/a/b/cz/a/c)r?rfr��relative_torrg)rrCr@r
r
r�test_relative_to_common?s<	"%"%%"z)_BasePurePathTest.test_relative_to_commoncCs�|j}|d�}x�tdtjd�D]�}tj||�}tj|�}|j|j|j�|j||�|jt	|�t	|��|jt
|�t
|��q,WdS)Nz/a/brrp)r?�range�pickle�HIGHEST_PROTOCOL�dumps�loadsrIrrrr�rG)rrCr@�proto�dumpedrPr
r
r�test_pickling_commonbs	z&_BasePurePathTest.test_pickling_commonN)rr)r3r)rr4)r3r4)r5)r6)r7)rrr)rrr)rrr)rr8r)rr9r:)r;r8r)rrrr<)rrr=)rr>)"rrrr�rArDrMrNrQrRrSrYr_rerir}r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r
r
r
rr2�sJ	

##r2c@s�eZdZejZdd�Zdd�Zdd�Zdd�Z	d	d
�Z
dd�Zd
d�Zdd�Z
dd�ZdS)�PurePosixPathTestcCsX|j}|j|d�jd�|j|d�jd�|j|d�jd�dS)Nz/a/brz///a/bz//a/bz//)r?rr�)rrCr
r
r�	test_rootqs	zPurePosixPathTest.test_rootcCsa|j}|j|d�|d��|j|d�|d��|j|d�|d��dS)Nza/bzA/bz/az///az//a)r?r~r)rrCr
r
r�test_eqxs	zPurePosixPathTest.test_eqcCsa|j}|j|d�j�d�|j|d�j�d�|j|d�j�d�dS)Nrzfile:///z/a/b.cz
file:///a/b.cz/a/b%#czfile:///a/b%25%23c)r?rrh)rrCr
r
r�test_as_uri~s	zPurePosixPathTest.test_as_uricCsddlm}|j}ytjd�Wntk
rK|jd�YnX|j|d�j�d|tjd���dS)Nr)�quote_from_bytes�éz1\xe9 cannot be encoded to the filesystem encodingu/a/bézfile:///a/b)	�urllib.parser�r?rbrc�UnicodeEncodeError�skipTestrrh)rr�rCr
r
r�test_as_uri_non_ascii�s	
z'PurePosixPathTest.test_as_uri_non_asciicCs)|j}|j|d�jd��dS)NzA.pyza.PY)r?r�r�)rrCr
r
r�
test_match�s	zPurePosixPathTest.test_matchcCs�|j}|j|�j��|j|d�j��|j|d�j��|j|d�j��|j|d�j��|j|d�j��|j|d�j��|j|d�j��dS)Nrza/b/rz/az/a/b/z//az//a/b)r?r��is_absolutert)rrCr
r
r�test_is_absolute�s	z"PurePosixPathTest.test_is_absolutecCs}|j}|jd|d�j��|jd|d�j��|jd|d�j��|jd|d�j��dS)NFrrz/foo/barz/dev/con/PRN/NUL)r?rI�is_reserved)rrCr
r
r�test_is_reserved�s
	z"PurePosixPathTest.test_is_reservedcCs�|j}|d�}|jd�}|j||d��|d�jd�}|j||d��|d�jd�}|j||d��dS)Nz//arz//a/bz/az//cz/c)r?rOr)rrCr@rPr
r
r�	test_join�s	zPurePosixPathTest.test_joincCs�|j}|d�}|d}|j||d��|d�d}|j||d��|d�d}|j||d��dS)Nz//arz//a/bz/az//cz/c)r?r)rrCr@rPr
r
r�test_div�s	
zPurePosixPathTest.test_divN)rrrr*�
PurePosixPathr?r�r�r�r�r�r�r�r�r�r
r
r
rr�ns	

r�c	@s�eZdZejZejj�Zej	id>d?d@gd6dAdBdCdDdEgd
6dFgd6dGdHgd6�dd�Z
dd�Zdd�Zdd�Z
dd�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:�Zd;d<�Z d=S)I�PureWindowsPathTest�c:r�a/rzc:a�c:/�/a�/z�//x/yzc:/a�//a/b�//a/b/rz//a/b/ccCs�|jd�}|jt|�d�|jd�}|jt|�d�|jd�}|jt|�d�|jd�}|jt|�d�|jd	�}|jt|�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?rrG)rr@r
r
r�test_str�szPureWindowsPathTest.test_strcCsy|jd�|jd�|jd�|jd�|jd�|jd�|jd�|jd�|jd	�dS)
Nzc:zc:az	c:a\b.txtzc:\zc:\az
c:\a\b.txtz\\some\sharez\\some\share\az\\some\share\a\b.txt)rM)rr
r
r�test_str_subclass�s







z%PureWindowsPathTest.test_str_subclasscCs�|j}|j|d�|d��|j|d�|ddd��|j|d�|d��|j|d�|d��|j|d�|d��|j|d�|d	��|j|d
�|d��|j|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~)rrCr
r
rr��s	"zPureWindowsPathTest.test_eqcCs-ddlm}|j}|jt��|d�j�WdQX|jt��|d�j�WdQX|j|d�j�d�|j|d�j�d�|j|d	�j�d
�|j|d�j�d�|j|d
�j�d�|j|d�j�d�|j|d�j�d�dS)Nr)r�z/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�r�r?rfrgrhr)rr�rCr
r
rr��s	zPureWindowsPathTest.test_as_uricCs|j}|j|d�jd��|j|d�jd��|j|d�jd��|j|d�jd��|j|d�jd��|j|d�jd��|j|d�jd��|j|d�jd��|j|d�jd��|j|d�jd��|j|d�jd��|j|d	�jd��|j|d	�jd
��|j|d�jd
��|j|d�jd
��|j|d
�jd��|j|d�jd��|j|d�jd��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?rtr�r�)rrCr
r
rr��s&	z%PureWindowsPathTest.test_match_commoncs��fdd�}�j}|d�}|d�}|||��j||k��j||k�|d�}|d�}|||��j||k��j||k�dS)Ncs$�j||��j||�dS)N)ZassertLessEqual�assertGreaterEqual)rr)rr
r�assertOrderedEqualszDPureWindowsPathTest.test_ordering_common.<locals>.assertOrderedEqualzc:A/bzC:a/Bz//some/Share/A/bz//Some/SHARE/a/B)r?r�)rr�rCr@r|r
)rrr�s	

z(PureWindowsPathTest.test_ordering_commoncCs||j}|d�}|j}|j|d�|d�}|j}|j|d�|d�}|j}|j|d
�dS)Nzc:a/b�c:rrzc:/a/b�c:\z	//a/b/c/d�\\a\b\rr)r�rr)r�rr)r�rr)r?rHr)rrCr@rHr
r
r�
test_parts's				zPureWindowsPathTest.test_partscCsq|j}|d�}|j|j|d��|j|jj|d��|j|jjj|d��|j|jjjj|d��|d�}|j|j|d��|j|jj|d��|j|jjj|d��|j|jjjj|d��|d	�}|j|j|d
��|j|jj|d��|j|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?rr�)rrCr@r
r
r�test_parent3s	""zPureWindowsPathTest.test_parentcCs�|j}|d�}|j}|jt|�d�|j|d|d��|j|d|d��|jt|�|d�|d�g�|jt��
|dWdQX|d�}|j}|jt|�d�|j|d|d��|j|d|d	��|jt|�|d�|d	�g�|jt��
|dWdQX|d
�}|j}|jt|�d�|j|d|d��|j|d|d��|jt|�|d�|d�g�|jt��
|dWdQXdS)
Nzz:a/b/r�rzz:arpzz:zz:/a/b/zz:/azz:/z	//a/b/c/dz//a/b/cz//a/b)r?r�rrwr�rfr�)rrCr@r�r
r
r�test_parentsEs2		(	(	(z PureWindowsPathTest.test_parentscCs�|j}|j|d�jd�|j|d�jd�|j|d�jd�|j|d�jd�|j|d�jd�|j|d�jd�|j|d�jd�dS)	Nzc:zc:a/bzc:/zc:/a/b/z//a/bz\\a\bz//a/b/z	//a/b/c/d)r?rr�)rrCr
r
r�
test_driveas	zPureWindowsPathTest.test_drivecCs�|j}|j|d�jd�|j|d�jd�|j|d�jd�|j|d�jd�|j|d�jd�|j|d�jd�|j|d	�jd�dS)
Nzc:rzc:a/bzc:/r,zc:/a/b/z//a/bz//a/b/z	//a/b/c/d)r?rr�)rrCr
r
rr�ks	zPureWindowsPathTest.test_rootcCs�|j}|j|d�jd�|j|d�jd�|j|d�jd�|j|d�jd�|j|d�jd�|j|d�jd�|j|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�)rrCr
r
r�test_anchorus	zPureWindowsPathTest.test_anchorcCs�|j}|j|d�jd�|j|d�jd�|j|d�jd�|j|d�jd�|j|d�jd�|j|d	�jd�|j|d
�jd�|j|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�)rrCr
r
r�	test_names	zPureWindowsPathTest.test_namecCs�|j}|j|d�jd�|j|d�jd�|j|d�jd�|j|d�jd�|j|d�jd�|j|d�jd�|j|d	�jd�|j|d
�jd�|j|d�jd�|j|d
�jd�|j|d�jd�|j|d�jd�|j|d�jd�|j|d�jd�|j|d�jd�|j|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�)rrCr
r
r�test_suffix�s"	zPureWindowsPathTest.test_suffixcCs�|j}|j|d�jg�|j|d�jg�|j|d�jg�|j|d�jg�|j|d�jdg�|j|d�jdg�|j|d�jg�|j|d	�jg�|j|d
�jdg�|j|d�jdg�|j|d
�jddg�|j|d�jddg�|j|d�jg�|j|d�jg�|j|d�jg�|j|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�)rrCr
r
r�
test_suffixes�s"	z!PureWindowsPathTest.test_suffixescCs|j}|j|d�jd�|j|d�jd�|j|d�jd�|j|d�jd�|j|d�jd�|j|d	�jd�|j|d
�jd�|j|d�jd
�|j|d�jd�|j|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�)rrCr
r
r�	test_stem�s	zPureWindowsPathTest.test_stemcCse|j}|j|d�jd�|d��|j|d�jd�|d��|j|d�jd�|d��|j|d�jd�|d��|jt|d�jd�|jt|d	�jd�|jt|d
�jd�|jt|d�jd�|jt|d�jd�|jt|d�jd
�|jt|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�rfrg)rrCr
r
r�test_with_name�s	%%%%z"PureWindowsPathTest.test_with_namecCsE|j}|j|d�jd�|d��|j|d�jd�|d��|j|d�jd�|d��|j|d�jd�|d��|jt|d�jd�|jt|d	�jd�|jt|d
�jd�|jt|d�jd�|jt|d�jd�|jt|d�jd
�|jt|d�jd
�|jt|d�jd�|jt|d�jd�|jt|d�jd�|jt|d�jd�|jt|d�jd�|jt|d�jd�|jt|d�jd�|jt|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�rfrg)rrCr
r
r�test_with_suffix�s(	%%%%z$PureWindowsPathTest.test_with_suffixcCs�|j}|d�}|j|j|d��|d��|j|jd�|d��|j|j|d��|d��|j|jd�|d��|j|jd�|d��|j|j|d��|��|j|jd�|��|jt|j|��|jt|jd�|jt|j|d	��|jt|j|d
��|jt|j|d��|jt|j|d��|jt|j|d
��|jt|j|d��|jt|j|d��|d�}|j|j|d��|d��|j|jd�|d��|jt|j|d���d�|jt|jd��d�|j|j|d��|d��|j|jd�|d��|j|j|d��|d��|j|jd�|d��|j|jd�|d��|j|j|d��|��|j|jd�|��|jt|j|d��|jt|j|d��|jt|j|d��|jt|j|d��|jt|j|d	��|jt|j|d��|jt|j|d
��|jt|j|d��|jt|j|d��|d�}|j|j|d��|d��|j|jd�|d��|j|jd�|d��|j|j|d ��|d��|j|jd �|d��|j|jd!�|d��|j|j|d"��|��|j|jd"�|��|jt|j|d#��|jt|j|d$��|jt|j|d%��|jt|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�rfrgrG)rrCr@r
r
r�test_relative_to�sh	%%"%%%%"%%"z$PureWindowsPathTest.test_relative_tocCs�|j}|j|�j��|j|d�j��|j|d�j��|j|d�j��|j|d�j��|j|d�j��|j|d�j��|j|d�j��|j|d�j��|j|d	�j��|j|d
�j��|j|d�j��|j|d�j��|j|d
�j��|j|d�j��|j|d�j��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?r�r�rt)rrCr
r
rr�s"	z$PureWindowsPathTest.test_is_absolutecCs|j}|d�}|jd�}|j||d��|jd�}|j||d��|jd�}|j||d��|jd�}|j||d��|jd�}|j||d��|jd	�}|j||d��|jd
�}|j||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?rOr)rrCr@rPr
r
rr�3s 	zPureWindowsPathTest.test_joincCsG|j}|d�}|j|d|d��|j|dd|d��|j|d|d��|j|dd|d��|j|d	|d	��|j|d
d|d	��|j|d|d��|j|d
d|d��|j|d|d��|j|d
|d��|j|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)rrCr@r
r
rr�Is	zPureWindowsPathTest.test_divcCs�|j}|jd|d�j��|jd|d�j��|jd|d�j��|jd|d�j��|jd|d�j��|jd|d�j��|jd|d	�j��|jd|d
�j��|jd|d�j��|jd|d�j��|jd|d
�j��|jd|d�j��|jd|d�j��|jd|d�j��dS)NFrrz/foo/barTZconZNULzNUL.txtZcom1zcom9.barzbar.com9Zlpt1zlpt9.barzbar.lpt9zc:/NUL/con/bazz//my/share/nul/con/aux)r?rIr�)rrCr
r
rr�]s	z$PureWindowsPathTest.test_is_reservedN)r�r)r�r�)rr�r)r�r)r�rr)r�r�)r�r�r)r�r�r)r�)r�r)r�r)!rrrr*�PureWindowsPathr?r2r��copy�updater�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
rr��s>			




:r�c@s=eZdZejZdd�Zdd�Zdd�ZdS)�PurePathTestcCsD|jd�}|jt|�tjdkr6tjntj�dS)Nr�nt)r?rIrJrbr�r*r�r�)rr@r
r
r�test_concrete_classtsz PurePathTest.test_concrete_classcCs2tjd�}tjd�}|j||�dS)Nr)r*r�r�r~)rr@r|r
r
r�test_different_flavours_unequalysz,PurePathTest.test_different_flavours_unequalcCs�tjd�}tjd�}|jt��||kWdQX|jt��||kWdQX|jt��||kWdQX|jt��||kWdQXdS)Nr)r*r�r�rfr�)rr@r|r
r
r�!test_different_flavours_unordered~sz.PurePathTest.test_different_flavours_unorderedN)	rrrr*ZPurePathr?r�r�r�r
r
r
rr�qs	r�cGstjjt|�S)N)rb�path�join�BASE)rr
r
r�<lambda>�sr�cGstjjt|�S)N)rbr�r��TESTFN)rr
r
rr��scCsdtjs
dSytjtt�Wn/tk
rR}zt|�SWYdd}~XnXtj	t�dS)Nzno system support for symlinks)
r*Zsupports_symlinksrb�symlink�__file__r��OSErrorrGr�unlink)�er
r
r�symlink_skip_reason�s	
r�r�z)test requires a Windows-compatible systemz'test requires a POSIX-compatible systemc@seZdZejZdS)�PosixPathAsPureTestN)rrrr*�	PosixPathr?r
r
r
rr��sr�c@seZdZejZdS)�WindowsPathAsPureTestN)rrrr*�WindowsPathr?r
r
r
rr��sr�c@s4eZdZdZdd�Zejdkr<dd�Zndd�Zdd	�Zd
d�Z	dd
�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zedd��Zdd�Zdd�Zdd�Zed d!��Zd"d#�Zd$d%�Zd&d'�Zed(d)��Zed*d+��Zd,d-�Zd.d/�Zd0d1�Zed2d3��Zd4d5�Ze j!e"d6�d7d8��Z#e j!e$d9�d:d;��Z%d<d=�Z&d>d?�Z'd@dA�Z(dBdC�Z)dDdE�Z*dFdG�Z+dHdI�Z,dJdK�Z-edLdM��Z.dNdO�Z/dPdQ�Z0dRdS�Z1dTdU�Z2e j!e3edV�dW�dXdY��Z4dZd[�Z5e j!e3e6d\�d]�d^d_��Z7d`da�Z8dbdc�Z9ddde�Z:dfdg�Z;dhdi�Z<djdk�Z=edldm��Z>edndo��Z?edpdq��Z@drS)s�
_BasePathTestz?Tests for the FS-accessing functionalities of the Path classes.cCs�dd�}|j|�tjt�tjtd��tjtd��tjtd��tjtdd��tjtd��ttd�d	��}|jd
�WdQXttdd�d	��}|jd�WdQXttdd
�d	��}|jd�WdQXttddd�d	��}|jd�WdQXtjtd�d�ts�tj	dtd��tj	dtd��|j
dtd��|j
tjjdd�tdd��|j
tjjdd�tdd��ndS)NcSs'tjtd�d�tjt�dS)N�dirEi�)rb�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)�
addCleanuprb�mkdirr�r��open�writerr�r��dirlinkr�)rrrr
r
rrA�s.

(z_BasePathTest.setUpr�cCstj||dd�dS)N�target_is_directoryT)rbr�)r�src�destr
r
rr�sz_BasePathTest.dirlinkcCstj||�dS)N)rbr�)rrrr
r
rr�scCs9|jtjjt|�t|��d||f�dS)Nz&%r and %r don't point to the same file)rtrbr��samefilerG)rZpath_aZpath_br
r
r�
assertSame�s$z_BasePathTest.assertSamec
OsB|jt��}|||�WdQX|j|jjtj�dS)N)rf�FileNotFoundErrorr�	exception�errno�ENOENT)r�funcrK�kwargs�cmr
r
r�assertFileNotFound�sz _BasePathTest.assertFileNotFoundcCst|jtj��}|j||�|jt|�t|��|jt|�t|��|j|j��dS)N)	r?rb�getcwdrrGrIrJrtr�)rr@r|r
r
r�	_test_cwd�s
z_BasePathTest._test_cwdcCs |jj�}|j|�dS)N)r?�cwdr")rr@r
r
r�test_cwd�sz_BasePathTest.test_cwdcCs2|jd�}|j|j�tjd��dS)Nrr)r?r�statrb)rr@r
r
r�test_empty_pathsz_BasePathTest.test_empty_pathcCs0|j}|t�}|jd|j��|jd|dj��|jd|dj��|jd|ddj��ts�|jd|dj��|jd|dj��|jd|ddj��|jd|ddj��n|jd|d	j��|jd|d
�j��dS)NTrrF�bahr
rr	�fooz/xyzzy)r?r�rI�existsr�)rrCr@r
r
r�test_existss	!z_BasePathTest.test_existscCs�|jt�}|djd��0}|j|tj�|j|j�d�WdQX|djd��6}|j|tj�|j|j�j	�d�WdQX|djddd��6}|j|tj
�|j|j�j	�d�WdQXdS)Nrrzzthis is file A
�rbsthis is file A�	bufferingr)r?r�rrB�io�
TextIOBaser�read�BufferedIOBase�strip�	RawIOBase)rr@rr
r
r�test_open_commons"z_BasePathTest.test_open_commoncs�|j��t�}|j�}t|�}dddddg}ts^|dddg7}n|j|�fd	d
�|D��dS)Nrrrrrr
rrcsh|]}�t|��qSr
)r�)rr|)rCr
r�	<setcomp>(s	z-_BasePathTest.test_iterdir.<locals>.<setcomp>)r?r��iterdir�setr�r)rr@�it�pathsrr
)rCr�test_iterdir s	z_BasePathTest.test_iterdircs]|j��td�}t|j��}�fdd�ddgD�}|j||�dS)Nrcs"h|]}�td|��qS)r)r�)rr|)rCr
rr40s	z5_BasePathTest.test_iterdir_symlink.<locals>.<setcomp>r	r)r?r�r6r5r)rr@r8rr
)rCr�test_iterdir_symlink*s
	z"_BasePathTest.test_iterdir_symlinkcCsf|jtd�}|jt��}t|j��WdQX|j|jjtj	tj
tjf�dS)Nr)r?r�rfr��nextr5ZassertInrr�ENOTDIRrZEINVAL)rr@rr
r
r�test_iterdir_nodir3s
z _BasePathTest.test_iterdir_nodircsX��fdd�}�j��t�}|jd�}�j|tj�||dg�||jd�g�||jd�ddg�tr�||jd�d	dg�n||jd�d	dd
g�tr�||jd�dg�n"||jd�ddd
dg�tr8||jd�dg�n||jd�dd
g�dS)Ncs-�jt|��fdd�|D��dS)Ncsh|]}�t|��qSr
)r�)rr|)rCr
rr4?s	zA_BasePathTest.test_glob_common.<locals>._check.<locals>.<setcomp>)rr6)�globr)rCrr
r�_check>sz._BasePathTest.test_glob_common.<locals>._checkrr	z
dir*/file*z
dirB/fileBz
dirC/fileCz*Arr
z*B/*z
dirB/linkDzlinkB/fileBzlinkB/linkDz*/fileB)r?r�r>rB�collections�Iteratorr�)rr?r@r7r
)rCrr�test_glob_common=s$	
z_BasePathTest.test_glob_commoncs9��fdd�}�j��t�}|jd�}�j|tj�||dg�||jd�dg�||jd�g�tr�||jd�dg�n"||jd�ddd	d
g�||jd�dddd
g��td�}||jd�dd
g�||jd�d
g�dS)Ncs-�jt|��fdd�|D��dS)Ncsh|]}�t|��qSr
)r�)rr|)rCr
rr4Ws	zB_BasePathTest.test_rglob_common.<locals>._check.<locals>.<setcomp>)rr6)r>r)rCrr
rr?Vsz/_BasePathTest.test_rglob_common.<locals>._checkrr	z
dirB/fileBz*/fileAz*/fileBzdirB/linkD/fileBzlinkB/fileBzdirA/linkC/fileBzfile*z
dirC/fileCzdirC/dirD/fileDrz*/*)r?r��rglobrBr@rAr�)rr?r@r7r
)rCrr�test_rglob_commonUs"	

z_BasePathTest.test_rglob_commoncs�|j}|t��t�jd��}dddddddd	d
ddd
ddh}|j|�fdd�|D��dS)N�*rrz
dirA/linkCrz
dirB/fileBz
dirB/linkDrz	dirC/dirDzdirC/dirD/fileDz
dirC/fileCrrr
rcsh|]}�|�qSr
r
)rr)r@r
rr4ys	z8_BasePathTest.test_rglob_symlink_loop.<locals>.<setcomp>)r?r�r6rCr)rrC�given�expectr
)r@r�test_rglob_symlink_loopjs			z%_BasePathTest.test_rglob_symlink_loopcCs�|j}|t�}|jt|jd��|td�h�|jt|jd��|td�h�|jt|jd��t��dS)Nz..z
dirA/../file*z
dirA/../fileAz../xyzzy)r?r�rr6r>)rrCr@r
r
r�test_glob_dotdot{s
	++z_BasePathTest.test_glob_dotdotcCs |j�}|j||�dS)N)�resolver)rr@rr|r
r
r�_check_resolve_relative�sz%_BasePathTest._check_resolve_relativecCs |j�}|j||�dS)N)rJr)rr@rr|r
r
r�_check_resolve_absolute�sz%_BasePathTest._check_resolve_absolutecCs�|j}|td�}|jt��}|j�WdQX|j|jjtj�|tdd�}|j	||�|td�}|j	||td��|tddd�}|j	||tdd��|tddd�}|j	||tdd��t
jd	d
�}|jt
j|�tjtjj|�tdd��tjtd�tjj|d��|tdddd�}|j||tdd��dS)
Nr(rr	r
rrr
rr�z-dirD�linkX�linkY)r?r�rfr�rJrrrrrK�tempfileZmkdtemprrrrbr�r�r�rL)rrCr@rrr
r
r�test_resolve_common�s&	%%z!_BasePathTest.test_resolve_commoncCs�|jt�}|jdtd��|jtjjdd�td��|jtjjdd�td��|d}|j|j�|�dS)Nr�0�1�2)r?r�rr�rbr�rrJ)rr@r|r
r
r�test_resolve_dot�s%%
z_BasePathTest.test_resolve_dotc
Cs�|jt�}|j�}|j�}t|�|�WdQX|jtt|�|jtt|�|jt|j�|jt|j�|jt|j�|jt|j	�dS)N)
r?r�r5r;rfrgrrJZabsolute�	__enter__)rr@r7Zit2r
r
r�	test_with�s
z_BasePathTest.test_withcCs�|jt�d}|j�j}|d@}|j|�|j|j�j|�|dB}|j|�|j|j�j|�dS)Nr�im���)r?r�r%�st_moderr)rr@�modeZnew_moder
r
r�
test_chmod�s



z_BasePathTest.test_chmodcCsy|jt�d}|j�}|j|j�|�|j|jdA�|j|j|j�|j|j�|�dS)NrrW)r?r�r%rrrXrr~)rr@�str
r
r�	test_stat�sz_BasePathTest.test_statcCs9|jt�d}|j�}|j||j��dS)Nr
)r?r�r%r~�lstat)rr@r[r
r
r�
test_lstat�sz_BasePathTest.test_lstatcCs9|jt�d}|j�}|j||j��dS)Nr)r?r�r%rr])rr@r[r
r
r�test_lstat_nosymlink�sz"_BasePathTest.test_lstat_nosymlinkz&the pwd module is needed for this testcCsx|jt�d}|j�j}ytj|�j}Wn#tk
r]|jd|�YnX|j	||j
��dS)Nrz4user %d doesn't have an entry in the system database)r?r�r%�st_uid�pwd�getpwuidZpw_name�KeyErrorr�r�owner)rr@Zuidr�r
r
r�
test_owner�s
z_BasePathTest.test_ownerz&the grp module is needed for this testcCsx|jt�d}|j�j}ytj|�j}Wn#tk
r]|jd|�YnX|j	||j
��dS)Nrz5group %d doesn't have an entry in the system database)r?r�r%�st_gid�grpZgetgrgidZgr_namercr�r�group)rr@�gidr�r
r
r�
test_group�s
z_BasePathTest.test_groupcCsA|jt�d}|j�|j|j�|j|j�dS)Nr)r?r�r�r r%)rr@r
r
r�test_unlink�s
z_BasePathTest.test_unlinkcCsb|jt�d}x|j�D]}|j�q W|j�|j|j�|j|j�dS)Nr)r?r�r5r��rmdirr r%)rr@r|r
r
r�
test_rmdir�s
z_BasePathTest.test_rmdircCs�|jt�}|d}|j�j}|dd}|j|�|j|j�j|�|j|j�td�}|j|�|jtj|�j|�|j|j�dS)Nrr�fileAAZfileAAA)	r?r�r%�st_size�renamerr �rel_joinrb)rrCr@�sizer|rzr
r
r�test_renames


z_BasePathTest.test_renamecCs�|jt�}|d}|j�j}|dd}|j|�|j|j�j|�|j|j�tdd�}|j|�|jtj|�j|�|j|j�dS)Nrrrnrr	)	r?r�r%rorrr rqrb)rrCr@rrr|rzr
r
r�test_replaces


z_BasePathTest.test_replacecCs*|jt�}|d}|j|j��|j�|j|j��|j�}|j}|j}t	j
t|�|d|df�|j�|j�}|j|j|�|j|j|�|d}|j|j��|jdddd�|j|j��|j
t|jdd�dS)NZnewfileA�
ZnewfileBrYi��exist_okF)r?r�r�r)�touchrtr%�st_mtime�st_mtime_nsrb�utimerGr�rfr�)rrCr@r[Z	old_mtimeZold_mtime_nsr
r
r�test_touch_common s$

		$

z_BasePathTest.test_touch_commonc
Cs[|jt�}|d}|j�|jd��#}|j|j�j�d�WdQXdS)Nrr+sthis is file A)r?r�rwrrr/r1)rrCr@rr
r
r�test_touch_nochange8s


z!_BasePathTest.test_touch_nochangec	Cs�|jt�}|d}|j|j��|j�|j|j��|j|j��|jt��}|j�WdQX|j	|j
jtj�dS)NZnewdirA)
r?r�r�r)rrt�is_dirrfr�rrr�EEXIST)rrCr@rr
r
r�
test_mkdir?s

z_BasePathTest.test_mkdircCs�|jtdd�}|j|j��|jt��}|j�WdQX|j|jj	t	j
�|jdd�|j|j��|j|j��|jt��}|jdd�WdQX|j|jj	t	j
�tj|j�j�}|jtdd�}|jddd�|j|j��|j|j��tjdkrx|jtj|j�j�d	|@�n|jtj|jj�j�|�dS)
NZnewdirBZnewdirCr�TZnewdirDZnewdirEimr�im)r?r�r�r)rfr�rrrrrrtr}r~r%�S_IMODErXrbr�r�)rr@rrYr
r
r�test_mkdir_parentsJs&)z _BasePathTest.test_mkdir_parentscCsk|jt�}|d}|dd}|j|�|j|j�|j��|j|j�|j��|dd}|jt|��|j|j�|j��|j|j�|j��|j|j	��|d}|dd}|j|dd�|j|j�|j��|j|j�|j��|j
|j	��|j
t|j���dS)	NrrZlinkAAZlinkAAArZlinkAAAArT)
r?r�Z
symlink_torr%r~r]rGr�r}rtr�r5)rrC�target�linkr
r
r�test_symlink_tocs$


z_BasePathTest.test_symlink_tocCs�|jt�}|j|dj��|j|dj��|j|dj��|j|ddj��ts�|j|dj��|j|dj��|j|dj��ndS)Nrrznon-existingr'r
rr)r?r�rtr}r�r�)rrCr
r
r�test_is_dir{sz_BasePathTest.test_is_dircCs�|jt�}|j|dj��|j|dj��|j|dj��|j|ddj��ts�|j|dj��|j|dj��|j|dj��ndS)Nrrznon-existingr'r
rr)r?r�rt�is_filer�r�)rrCr
r
r�test_is_file�sz_BasePathTest.test_is_filecCs�|jt�}|j|dj��|j|dj��|j|dj��|j|ddj��ts�|j|dj��|j|dj��|j|dj��ndS)Nrrznon-existingr'r
rr)r?r�r�Z
is_symlinkr�rt)rrCr
r
r�test_is_symlink�sz_BasePathTest.test_is_symlinkcCss|jt�}|j|dj��|j|dj��|j|dj��|j|ddj��dS)Nrrznon-existingr')r?r�r��is_fifo)rrCr
r
r�test_is_fifo_false�s
z _BasePathTest.test_is_fifo_false�mkfifozos.mkfifo() requiredcCsb|jtd�}tjt|��|j|j��|j|j��|j|j	��dS)NZmyfifo)
r?r�rbr�rGrtr�r��	is_socketr�)rrCr
r
r�test_is_fifo_true�s
z_BasePathTest.test_is_fifo_truecCss|jt�}|j|dj��|j|dj��|j|dj��|j|ddj��dS)Nrrznon-existingr')r?r�r�r�)rrCr
r
r�test_is_socket_false�s
z"_BasePathTest.test_is_socket_false�AF_UNIXzUnix sockets requiredcCs�|jtd�}tjtjtj�}|j|j�y|jt|��WnQt	k
r�}z1dt|�kr�|j
dt|��nWYdd}~XnX|j|j��|j
|j��|j
|j��dS)NZmysockzAF_UNIX path too longzcannot bind Unix socket: )r?r��socketr�ZSOCK_STREAMr�closeZbindrGr�r�rtr�r�r�r�)rrCZsockr�r
r
r�test_is_socket_true�s-z!_BasePathTest.test_is_socket_truecCss|jt�}|j|dj��|j|dj��|j|dj��|j|ddj��dS)Nrrznon-existingr')r?r�r��is_block_device)rrCr
r
r�test_is_block_device_false�s
z(_BasePathTest.test_is_block_device_falsecCss|jt�}|j|dj��|j|dj��|j|dj��|j|ddj��dS)Nrrznon-existingr')r?r�r��is_char_device)rrCr
r
r�test_is_char_device_false�s
z'_BasePathTest.test_is_char_device_falsecCsh|jd�}|j�s+|jd�n|j|j��|j|j��|j|j��dS)Nz	/dev/nullz/dev/null required)r?r)r�rtr�r�r�r�)rrCr
r
r�test_is_char_device_true�sz&_BasePathTest.test_is_char_device_truecCst|jtd�}x[tdtjd�D]C}tj||�}tj|�}|j|j�|j��q)WdS)Nrrrp)	r?r�r�r�r�r�r�rr%)rr@r�r�rPr
r
rr��s
z"_BasePathTest.test_pickling_commoncCsa|j}|d�}|d�}|j|jd|jd�|j|jd|jd�dS)Nz/usr/bin/fooz/usr/local/binrpr�r�)r?rIrH)rrCr@r|r
r
r�test_parts_interning�s
	z"_BasePathTest.test_parts_interningcCs�|jt�}|jtjjdd�td��|jtjjdd�td��|jtjjdd�td��|j|td��|dj�}|j||�|jt|�t�|dj�}|j||�|jt|�t�|dj�}|j||�|jt|�t�|dj�}|j||�|jt|�t�tj	�}tj
t�z�|jd�j�}|j||�|jt|�t�|jd�j�}|j||�|jt|�t�|jd�j�}|j||�|jt|�t�|jd�j�}|j||�|jt|�t�Wdtj
|�XdS)NZlink0Zlink1Zlink2Zlink3)r?r�rrbr�r�rJrrGr!�chdir)rZlink0_targetrCr@Zold_pathr
r
r�_check_complex_symlinks�sB%%%
z%_BasePathTest._check_complex_symlinkscCs|jt�dS)N)r�r�)rr
r
r�test_complex_symlinks_absolutesz,_BasePathTest.test_complex_symlinks_absolutecCs|jd�dS)Nr)r�)rr
r
r�test_complex_symlinks_relativesz,_BasePathTest.test_complex_symlinks_relativecCs |jtjjdd��dS)Nrz..)r�rbr�r�)rr
r
r�&test_complex_symlinks_relative_dot_dotsz4_BasePathTest.test_complex_symlinks_relative_dot_dotN)Arrr�__doc__rArbr�rrr r"r$r&r*r3r9�
with_symlinksr:r=rBrDrHrIrKrLrPrTrVrZr\r^r_�unittestZ
skipUnlessrarergrjrkrmrsrtr{r|rr�r�r�r�r�r��hasattrr�r�r�r�r�r�r�r�r�r�r�r�r�r
r
r
rr��sn
	

	''		)r�c@s1eZdZejZdd�Zdd�ZdS)�PathTestcCsD|jd�}|jt|�tjdkr6tjntj�dS)Nrr�)r?rIrJrbr�r*r�r�)rr@r
r
rr� szPathTest.test_concrete_classcCs<tjdkr%|jttj�n|jttj�dS)Nr�)rbr�rf�NotImplementedErrorr*r�r�)rr
r
r�test_unsupported_flavour%sz!PathTest.test_unsupported_flavourN)rrrr*ZPathr?r�r�r
r
r
rr�s	r�c@sgeZdZejZdd�Zdd�Zdd�Ze	dd��Z
d	d
�Zdd�Zd
S)�
PosixPathTestc	Gs9|j|�}|jt��t|j��WdQXdS)N)r?rf�RuntimeError�printrJ)rrKr�r
r
r�_check_symlink_loop0sz!PosixPathTest._check_symlink_loopcCs�tjd�}|jtj|�|jt�}|djd��WdQXtjtd��}|jtj	|j
�d�tjd�|djd��WdQXtjtd��}|jtj	|j
�d�dS)Nr�new_fileri���other_new_filei�)rb�umaskrr?r�rr%r�rr�rX)r�old_maskr@r[r
r
r�test_open_mode5s
zPosixPathTest.test_open_modecCstjd�}|jtj|�|jt�}|dj�tjtd��}|jtj	|j
�d�tjd�|dj�tjtd��}|jtj	|j
�d�|djdd	�tjtd��}|jtj	|j
�d	�dS)
Nrr�i�r�r�i�Zmasked_new_filerYi�)rbr�rr?r�rwr%r�rr�rX)rr�r@r[r
r
r�test_touch_modeCs
zPosixPathTest.test_touch_modecCs|j}tjdtd��|jtd�tjdtd��|jtd�tjdtd��|jtd�tjtd�td��|jtd�tjtd�td��|jtd�tjtd	�td
��|jtd
�dS)NzlinkX/insiderMrNzlinkZ/../linkZZlinkZzlinkU/insideZlinkUZlinkVzlinkW/../linkWZlinkW)r?rbr�r�r�r�)rrCr
r
r�test_resolve_loopRs	zPosixPathTest.test_resolve_loopcCs~|j}|t�}t|jd��}tjt�sBt�n|}|j||�|jt|jd��t��dS)N�FILEazFILEa*)r?r�r6r>r�fs_is_case_insensitiver)rrCr@rFrGr
r
r�	test_globes	zPosixPathTest.test_globcCs�|j}|td�}t|jd��}tjt�sEt�n|}|j||�|jt|jd��t��dS)Nr�FILEdzFILEd*)r?r�r6rCrr�r)rrCr@rFrGr
r
r�
test_rglobms	zPosixPathTest.test_rglobN)
rrrr*r�r?r�r�r�r�r�r�r�r
r
r
rr�,s	r�c@s1eZdZejZdd�Zdd�ZdS)�WindowsPathTestcCsD|j}|t�}|jt|jd��|td�h�dS)Nr�r)r?r�rr6r>)rrCr@r
r
rr�zs	zWindowsPathTest.test_globcCsG|j}|td�}|jt|jd��|td�h�dS)Nrr�zdirC/dirD/fileD)r?r�rr6rC)rrCr@r
r
rr�s	zWindowsPathTest.test_rglobN)rrrr*r�r?r�r�r
r
r
rr�vs	r��__main__)0r@r-rbrr*r�Zshutilr�r%�sysrOr��
contextlibrZtestrr�rgra�ImportError�objectrZTestCaser r+r2r�r�r�r��realpathr�r�rqr�ZskipIfr�Zonly_ntZ
only_posixr�r�r�r�r�r�r�r�mainr
r
r
r�<module>sf	
)$B��L��			��nI