Current File : //usr/local/apps/python3/lib/python3.11/test/__pycache__/test_posixpath.cpython-311.pyc
�

�Ke9���x�ddlZddlZddlZddlZddlmZmZmZmZddlm	Z	ddl
mZddl
mZddl
mZddlmZ	ddlZn
#e$rdZYnwxYweej��Zd�Zd	�ZGd
�dej��ZGd�d
e	jej��ZGd�dej��Zedkrej��dSdS)�N)�realpath�abspath�dirname�basename)�test_genericpath)�
import_helper)�	os_helper)�FakePath)�mockc�b�dtv}d}|tj|��|��g|S)z�
    On Windows, posixpath.abspath still returns paths with backslashes
    instead of posix forward slashes. If this is the case, several tests
    fail, so skip them.
    �\z'ABSTFN is not a posix path - tests fail)�ABSTFN�unittest�skip)�test�found_backslash�msgs   �=/usr/local/apps/python3/lib/python3.11/test/test_posixpath.py�!skip_if_ABSTFN_contains_backslashrs7���f�n�O�
3�C��$�(�-��$�$�T�*�*�+�O�<�<�c�R�	tj|��dS#t$rYdSwxYw�N)�os�rmdir�OSError)rs r�
safe_rmdirr!s?��
�
����������
�
�
����
���s��
&�&c�d�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zejd
���Zejedud��d���Zejedud��d���Zd�Zd�Zejejdkd��d���Zgd�Zd�Zed���Zed���Z ejed�����Z!ejed�����Z"ejed�����Z#ejed�����Z$ejed�����Z%ejed �����Z&ejed!�����Z'ejed"�����Z(ejed#�����Z)ejed$�����Z*d%�Z+d&�Z,d'�Z-dS)(�
PosixPathTestc�.�|���dSr)�tearDown��selfs r�setUpzPosixPathTest.setUp)s���
�
�����rc��dD]?}tjtj|z��ttj|z���@dS)N)��1�2)r	�unlink�TESTFNr)r"�suffixs  rr zPosixPathTest.tearDown,sM��$�	2�	2�F���Y�-��6�7�7�7��y�'�&�0�1�1�1�1�	2�	2rc��|�tjdddd��d��|�tjddd��d��|�tjddd	��d
��|�tjddd
d��d��|�tjddd��d��|�tjddd��d��dS)N�/foo�bar�/bar�baz�/bar/bazz/foo/bar/bazz/foo/zbar/zbaz/z
/foo/bar/baz/�/foo�bars/barsbazs/bar/bazs/foo/bar/bazs/foo/sbar/sbaz/s
/foo/bar/baz/)�assertEqual�	posixpath�joinr!s r�	test_joinzPosixPathTest.test_join1s
���������v�u�E�E�#�	%�	%�	%��������u�=�=�~�N�N�N���������@�@�(�	*�	*�	*�	
��������&�I�I�$�	&�	&�	&���������@�@�(�	*�	*�	*�������'�7�C�C�)�	+�	+�	+�	+�	+rc�&�|�tjd��d��|�tjd��d��|�tjd��d��|�tjd��d��|�tjd	��d
��|�tjd��d��|�tjd
��d��|�tjd��d��|�tjd��d��|�tjd��d��dS)N�/foo/bar)r,r-�/)r9r%�foo)r%r:�////foo)�////r:�
//foo//bar)�//foor-�/foo/bar)r1r2�/)r@r�foo)rrA�////foo)�////rA�
//foo//bar)�//foor2)r3r4�splitr!s r�
test_splitzPosixPathTest.test_split?sL��������4�4�o�F�F�F�������-�-�y�9�9�9�������/�/��=�=�=�������3�3�_�E�E�E�������6�6�8H�I�I�I�������5�5�7H�I�I�I�������.�.��<�<�<�������0�0�-�@�@�@�������4�4�6G�H�H�H�������7�7�9K�L�L�L�L�Lrc���|�tj|��||f��|�tjd|z��d|z|f��|�tjd|z��d|z|f��|�tjd|z��d|z|f��|�tjd|z��d|z|f��|�tj|dz��||zdzdf��t|d��}t|d��}t|d��}|�tj|��||f��|�tjd|z��d|z|f��|�tjd|z��d|z|f��|�tjd	|z��d	|z|f��|�tjd
|z��d
|z|f��|�tj|dz��||zdzdf��dS)Nr9zabc/zabc.def/z	/abc.def/r%�ASCIIr@sabc/sabc.def/s	/abc.def/r)r3r4�splitext�bytes)r"�path�filename�exts    r�splitextTestzPosixPathTest.splitextTestLs�������+�D�1�1�H�c�?�C�C�C�����+�C�$�J�7�7�#��.�#�9N�O�O�O�����+�F�T�M�:�:� �8�+�S�1�	3�	3�	3�����+�J��,=�>�>�$�x�/��5�	7�	7�	7�����+�K�$�,>�?�?�%��0�#�6�	8�	8�	8�����+�D�3�J�7�7�"�S�.�3�.��3�	5�	5�	5��T�7�#�#����7�+�+���C��!�!������+�D�1�1�H�c�?�C�C�C�����+�D�4�K�8�8���/�3�/�	1�	1�	1�����+�G�d�N�;�;�!�H�,�c�2�	4�	4�	4�����+�K�$�,>�?�?�%��0�#�6�	8�	8�	8�����+�L�4�,?�@�@�&��1�3�7�	9�	9�	9�����+�D�4�K�8�8�"�S�.�4�/��5�	7�	7�	7�	7�	7rc�.�|�ddd��|�ddd��|�ddd��|�dd	d
��|�ddd��|�d
d
d��|�ddd��|�ddd��|�ddd��|�ddd��|�ddd��|�ddd��dS)Nzfoo.barr:z.barzfoo.boo.barzfoo.boozfoo.boo.biff.barzfoo.boo.biffz.csh.rcz.cshz.rc�nodotsr%z.cshrcz...manydotsz...manydots.extz.ext�.�..z........)rOr!s r�
test_splitextzPosixPathTest.test_splitexths*�����)�U�F�3�3�3����-��F�;�;�;����,�n�f�E�E�E����)�V�U�3�3�3����(�H�b�1�1�1����(�H�b�1�1�1����-���;�;�;����+�]�F�C�C�C����#�s�B�'�'�'����$��b�)�)�)����*�j�"�5�5�5����"�b�"�%�%�%�%�%rc�&�|�tjd��d��|�tjd��d��|�tjd��d��|�tjd��d��|�tjd��d��|�tjd��d��|�tjd	��d��|�tjd
��d��|�tjd��d��|�tjd��d��dS)
Nr%Fr9Tr,r8zfoo/barrr@r1r?sfoo/bar)�assertIsr4�isabsr!s r�
test_isabszPosixPathTest.test_isabsvs4���
�
�i�o�b�)�)�5�1�1�1��
�
�i�o�c�*�*�D�1�1�1��
�
�i�o�f�-�-�t�4�4�4��
�
�i�o�j�1�1�4�8�8�8��
�
�i�o�i�0�0�%�8�8�8��
�
�i�o�c�*�*�E�2�2�2��
�
�i�o�d�+�+�T�2�2�2��
�
�i�o�g�.�.��5�5�5��
�
�i�o�k�2�2�D�9�9�9��
�
�i�o�j�1�1�5�9�9�9�9�9rc�&�|�tjd��d��|�tjd��d��|�tjd��d��|�tjd��d��|�tjd��d��|�tjd��d	��|�tjd
��d��|�tjd��d��|�tjd
��d��|�tjd��d	��dS)Nr8r-r9r%r:r;r=r?r2r@rrArBrD)r3r4rr!s r�
test_basenamezPosixPathTest.test_basename�sR������+�J�7�7��?�?�?�����+�C�0�0�"�5�5�5�����+�E�2�2�E�:�:�:�����+�I�6�6��>�>�>�����+�L�9�9�5�A�A�A�����+�K�8�8�&�A�A�A�����+�D�1�1�3�7�7�7�����+�F�3�3�V�<�<�<�����+�J�7�7��@�@�@�����+�M�:�:�F�C�C�C�C�Crc�&�|�tjd��d��|�tjd��d��|�tjd��d��|�tjd��d��|�tjd��d	��|�tjd
��d��|�tjd��d��|�tjd
��d��|�tjd��d��|�tjd��d��dS)Nr8r,r9r:r%r;r<r=r>r?r1r@rArrBrCrDrE)r3r4rr!s r�test_dirnamezPosixPathTest.test_dirname�sR������*�:�6�6��?�?�?�����*�3�/�/��5�5�5�����*�5�1�1�2�6�6�6�����*�9�5�5�v�>�>�>�����*�<�8�8�'�B�B�B�����*�;�7�7��A�A�A�����*�4�0�0�$�7�7�7�����*�6�2�2�C�8�8�8�����*�:�6�6��@�@�@�����*�=�9�9�8�D�D�D�D�Drc�8�|�tjtjdz��d��|�tjtjdz��d��t
tjdzd��5}|�d��ddd��n#1swxYwY|�tjtjdz��d��tj���r$tj
tjdztjdz��|�tjtjdz��d��tjtjdz��|�tjtjdz��d��|�tjtjdz��d��|�tjtjdz��d��|�tjtjdz��d��|�tjtj
tj��dz��d��|�tjtjd	z��d��|�tjtj
tj��d
z��d��dS)Nr&Fr'�wbrATu�����)rVr4�islinkr	r)�lexists�open�write�can_symlinkr�symlink�remove�exists�fsencode)r"�fs  r�test_islinkzPosixPathTest.test_islink�s����
�
�i�&�y�'7�#�'=�>�>��F�F�F��
�
�i�'�	�(8�3�(>�?�?��G�G�G�
�)�"�S�(�$�
/�
/�	�1�
�G�G�F�O�O�O�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��
�
�i�&�y�'7�#�'=�>�>��F�F�F�� �"�"�	K��J�y�'�#�-�y�/?�#�/E�F�F�F��M�M�)�*�9�+;�c�+A�B�B�D�I�I�I��I�i�&��,�-�-�-��M�M�)�*�9�+;�c�+A�B�B�D�I�I�I��M�M�)�*�9�+;�c�+A�B�B�E�J�J�J��M�M�)�+�I�,<�s�,B�C�C�T�J�J�J��
�
�i�&�y�'7�(�'B�C�C�U�K�K�K��
�
�i�&�r�{�9�3C�'D�'D�w�'N�O�O�QV�W�W�W��
�
�i�&�y�'7�&�'@�A�A�5�I�I�I��
�
�i�&�r�{�9�3C�'D�'D�w�'N�O�O�QV�W�W�W�W�Ws�B*�*B.�1B.c�z�|�tjd��d��|�tjd��d��|�tjtd����d��|�tjtd����d��dS)Nr9Tr@)rVr4�ismountr
r!s r�test_ismountzPosixPathTest.test_ismount�s����
�
�i�'��,�,�d�3�3�3��
�
�i�'��-�-�t�4�4�4��
�
�i�'���
�
�6�6��=�=�=��
�
�i�'�����7�7��>�>�>�>�>rc��|�tjt��d��	t	jt��|�tjt��d��t
t��n#t
t��wxYw|�tjd��d��|�tjd��d��|�tjd��d��|�tjd��d��dS)NFu/�s/�z/s/)rVr4rnrr�mkdirrr!s r�test_ismount_non_existentz'PosixPathTest.test_ismount_non_existent�s����
�
�i�'��/�/��7�7�7�	��H�V�����M�M�)�+�F�3�3�U�;�;�;��v������J�v���������
�
�i�'�	�2�2�E�:�:�:��
�
�i�'��1�1�5�9�9�9��
�
�i�'��0�0�%�8�8�8��
�
�i�'��1�1�5�9�9�9�9�9s�AB
�
B c��	tjdt��|�t	jt��d��tjt��dS#tjt��wxYw)Nr9F)rrgrrVr4rnr(r!s r�test_ismount_symlinksz#PosixPathTest.test_ismount_symlinks�sd��	��J�s�F�#�#�#��M�M�)�+�F�3�3�U�;�;�;��I�f�������B�I�f�������s�AA$�$A?NzTest requires posix modulec���tj}d�}	|t_|�tjt
��d��|t_dS#|t_wxYw)Nc�d�d}d}|tkrd}d}tjd||dddddddf
��S)Nr�)r�posix�stat_result�rL�st_ino�st_devs   r�
fake_lstatz?PosixPathTest.test_ismount_different_device.<locals>.fake_lstat�sE���F��F��v�~�~������$�a����A�q�!�Q��1�%M�N�N�NrT�r�lstatrVr4rnr�r"�
save_lstatr}s   r�test_ismount_different_devicez+PosixPathTest.test_ismount_different_device�sf���X�
�	O�	O�	O�	"�!�B�H��M�M�)�+�F�3�3�T�:�:�:�!�B�H�H�H��z�B�H�!�!�!�!��9A�A&c���tj}d�}	|t_|�tjt
��d��|t_dS#|t_wxYw)Nc���d}d}|�t��r|tkrtd���|tkrd}d}tjd||dddddddf
��S)Nrz!Fake [Errno 13] Permission deniedrw)�
startswithrrrxryrzs   rr}zEPosixPathTest.test_ismount_directory_not_readable.<locals>.fake_lstat�ss���F��F����v�&�&�
C�4�6�>�>��A�B�B�B��v�~�~������$�a����A�q�!�Q��1�%M�N�N�NrTr~r�s   r�#test_ismount_directory_not_readablez1PosixPathTest.test_ismount_directory_not_readable�sf���X�
�
	O�
	O�
	O�	"�!�B�H��M�M�)�+�F�3�3�T�:�:�:�!�B�H�H�H��z�B�H�!�!�!�!r�c��|�tjd��d��|�tjd��d��dS)Nr:rA)r3r4�
expanduserr!s r�test_expanduserzPosixPathTest.test_expanduser�sJ������-�e�4�4�e�<�<�<�����-�f�5�5�v�>�>�>�>�>rc�t�tj��5}d|d<|�tjd��d��d|d<|�tjd��d��dD]�}|�|���5||d<|�tjd��d��|�tjd��d��|�tjd	��d
��ddd��n#1swxYwY��	ddd��dS#1swxYwYdS)Nz/home/victor�HOME�~z
/home/victor/)r9r%�//�///)�homer9�~/z~/foor,)r	�EnvironmentVarGuardr3r4r��subTest)r"�envr�s   r�test_expanduser_home_envvarz)PosixPathTest.test_expanduser_home_envvar�s���
�
*�
,�
,�
	L��(�C��K����Y�1�#�6�6��G�G�G�*�C��K����Y�1�#�6�6��G�G�G�,�
L�
L���\�\�t�\�,�,�L�L�"&�C��K��$�$�Y�%9�#�%>�%>��D�D�D��$�$�Y�%9�$�%?�%?��E�E�E��$�$�Y�%9�'�%B�%B�F�K�K�K�	L�L�L�L�L�L�L�L�L�L�L����L�L�L�L��
L�
	L�
	L�
	L�
	L�
	L�
	L�
	L�
	L�
	L�
	L�
	L�
	L����
	L�
	L�
	L�
	L�
	L�
	Ls7�A5D-�	A>D�D-�D�D-�D�D-�-D1�4D1�vxworkszno home directory on VxWorksc	��tjd��}|�tjd��t
��|�tjd��t��tjd��dkrz|�tjd��dztjd����|�tjd��dztjd����|�tjd��t
��|�tjd	��t
��|�tjd
��t��|�tjd��t��tj	��5}|d=|�
tj����j
}|�d��pd}|�tjd��|��tj�|d
t$���5tj�|dt$���5dD]*}|�tj|��|���+	ddd��n#1swxYwYddd��n#1swxYwYddd��dS#1swxYwYdS)N�pwdr�s~/r�r9�~r@z~root/z~foo/s~root/s~foo/r��getpwuid)�side_effect�getpwnam)r�z~/.localz
~vstinner/)r�
import_module�assertIsInstancer4r��strrKr3r	r�r�r�getuid�pw_dir�rstripr�patch�object�KeyError)r"r�r�r�rLs     r�test_expanduser_pwdz!PosixPathTest.test_expanduser_pwds����)�%�0�0�����i�2�4�8�8�#�>�>�>����i�2�5�9�9�5�A�A�A����$�$��+�+�����$�S�)�)�C�/��$�T�*�*�
�
�
�
����$�T�*�*�T�1��$�U�+�+�
�
�
�	
���i�2�8�<�<�c�B�B�B����i�2�7�;�;�S�A�A�A����i�2�9�=�=�u�E�E�E����i�2�8�<�<�e�D�D�D�
�
*�
,�
,�	G���F���<�<��	���,�,�3�D��;�;�s�#�#�*�s�D����Y�1�#�6�6��=�=�=���"�"�3�
��"�I�I�
G�
G���"�"�3�
��"�I�I�
G�
G�;�G�G�D��$�$�Y�%9�$�%?�%?��F�F�F�F�G�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G����
G�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G����
G�
G�
G�
G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G����	G�	G�	G�	G�	G�	Gs[�BK/�(K�.K�4K�K�K�K�K�K/�K	�K/�K	�K/�/K3�6K3)0)r%rR)r9r9)z/.r9)z/./r9)z/.//.r9)r,r,)r8r8)r�r�)r�r9)z///foo/.//bar//r8)z///foo/.//bar//.//..//.//baz///z/foo/baz)z///..//./foo/.//barr8)rRrR)z.//.rR)rSrS)�../rS)�../foor�)�	../../foor�)z
../foo/../barz../bar)z../../foo/../bar/./baz/boom/..�
../../bar/baz�z/..r9r�)z/../r9)z/..//r9)z//.r�)z//..r�)�//...r�)z//../foor>)z//../../foor>)z/../foor,)z
/../../foor,)z/../foo/../r9)z/../foo/../barr.)z/../../foo/../bar/./baz/boom/..r0)z/../../foo/../bar/./baz/boom/.z
/bar/baz/boom)zfoo/../bar/bazzbar/baz)zfoo/../../bar/bazz
../bar/baz)zfoo/../../../bar/bazr�)zfoo///../bar/.././../baz/boomz../baz/boom)zfoo/bar/../..///../../baz/boomz../../baz/boom)z/foo/..r9)z
/foo/../..r9)z//foo/..r�)z//foo/../..r�)z	///foo/..r9)z///foo/../..r9)z
////foo/..r9)z/////foo/..r9c���|jD]�\}}|�|��5tj|��}|�||��ddd��n#1swxYwY|�d��}|�d��}|�|t���5tj|��}|�||��ddd��n#1swxYwY��dS)Nzutf-8)�type)�NORMPATH_CASESr�r4�normpathr3�encoderK)r"rL�expected�results    r�
test_normpathzPosixPathTest.test_normpathgse��"�1�		3�		3�N�D�(����d�#�#�
3�
3�"�+�D�1�1��� � ���2�2�2�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3����
3�
3�
3�
3��;�;�w�'�'�D����w�/�/�H����d���/�/�
3�
3�"�+�D�1�1��� � ���2�2�2�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3����
3�
3�
3�
3��		3�		3s#�+A�A	� A	�*+C!�!C%	�(C%	c���|�td��tj����|�td��tj����|�td�dgdz����tj����|�td��tj����|�td��tj����|�td�dgdz����tj����dS)NrRz./.r9�d�.s./.r@)r3rr�getcwdr5�getcwdbr!s r�test_realpath_curdirz"PosixPathTest.test_realpath_curdirss�������#����	���4�4�4�����%���"�)�+�+�6�6�6�����#�(�(�C�5�3�;�"7�"7�8�8�"�)�+�+�F�F�F�����$�������6�6�6�����&�)�)�2�:�<�<�8�8�8�����$�)�)�T�F�S�L�"9�"9�:�:�B�J�L�L�I�I�I�I�Irc	�*�|�td��ttj������|�td��tttj��������|�td�dgdz����d��|�td��ttj������|�td��tttj��������|�td�dgdz����d��dS)NrSz../..r9r�s..s../..r@)r3rrrr�r5r�r!s r�test_realpath_pardirz"PosixPathTest.test_realpath_pardir}s$������$��������)=�)=�>�>�>�����'�*�*�G�G�B�I�K�K�4H�4H�,I�,I�J�J�J�����#�(�(�D�6�C�<�"8�"8�9�9�3�?�?�?�����%���'�"�*�,�,�*?�*?�@�@�@�����(�+�+�W�W�R�Z�\�\�5J�5J�-K�-K�L�L�L�����$�)�)�U�G�c�M�":�":�;�;�T�B�B�B�B�Brc��	tjtdzt��|�t	t��tdz��tjt��dS#tjt��wxYw�Nr&)rrgrr3rr	r(r!s r�test_realpath_basicz!PosixPathTest.test_realpath_basic�sm��	%��J�v�c�z�6�*�*�*����X�f�-�-�v�c�z�:�:�:���V�$�$�$�$�$��I��V�$�$�$�$���s�AA/�/B
c�`�	tjtdzt��|�tt
td���|�tt
tdzd���t
jt��dS#t
jt��wxYw)Nr&T��strictr')rrgr�assertRaises�FileNotFoundErrorrr	r(r!s r�test_realpath_strictz"PosixPathTest.test_realpath_strict�s���
	%��J�v�c�z�6�*�*�*����/��6�$��O�O�O����/��6�C�<�PT��U�U�U���V�$�$�$�$�$��I��V�$�$�$�$���s�A5B�B-c�>�	tjtjtdz��t��|�t
t��tdz��tjt��dS#tjt��wxYwr�)	rrgr4�relpathrr3rr	r(r!s r�test_realpath_relativez$PosixPathTest.test_realpath_relative�sx��	%��J�y�(����4�4�f�=�=�=����X�f�-�-�v�c�z�:�:�:���V�$�$�$�$�$��I��V�$�$�$�$���s�A$B�Bc�H
�	tjtt��|�t	t��t��tjtdztdz��tjtdztdz��|�t	tdz��tdz��|�t	tdz��tdz��|�t	tdz��tdz��|�t	tdz��tt����|�t	tdz��tt��dz��tjtdztdz��|�t	td	zt
t��zdz��tdz��|�t	td	zt
t��zdz��tdz��tjt
t��d
ztdz��|�t	tdz��td
z��tjdt
tt����zd
zt
t��zdztdz��|�t	tdz��tdz��tjtt����5|�t	t
t����t��ddd��n#1swxYwYtj	t��tj	tdz��tj	tdz��tj	tdz��tj	tdz��tj	tdz��dS#tj	t��tj	tdz��tj	tdz��tj	tdz��tj	tdz��tj	tdz��wxYw)Nr&r'�1/x�1/..�1/../x�/x�x�y�1/../�a/b�ar�r9�c)
rrgrr3rrrr	�
change_cwdr(r!s r�test_realpath_symlink_loopsz)PosixPathTest.test_realpath_symlink_loops�s2��
"	)��J�v�v�&�&�&����X�f�-�-�v�6�6�6��J�v�c�z�6�#�:�.�.�.��J�v�c�z�6�#�:�.�.�.����X�f�S�j�1�1�6�#�:�>�>�>����X�f�S�j�1�1�6�#�:�>�>�>����X�f�U�l�3�3�V�E�\�B�B�B����X�f�V�m�4�4�g�f�o�o�F�F�F����X�f�X�o�6�6�����$�8N�O�O�O��J�v�c�z�6�#�:�.�.�.����X�f�W�n�x��7G�7G�&G�#�&M�N�N�#�c�\�
+�
+�
+����X�f�W�n�x��7G�7G�&G�#�&M�N�N�#�c�\�
+�
+�
+�
�J�x��'�'�%�/����<�<�<����X�f�S�j�1�1�6�%�<�@�@�@��J�u�x�����8�8�8�3�>���'�'�(�*-�.�/5�c�z�
;�
;�
;����X�f�S�j�1�1�6�#�:�>�>�>��%�g�f�o�o�6�6�
E�
E�� � ��(�6�*:�*:�!;�!;�V�D�D�D�
E�
E�
E�
E�
E�
E�
E�
E�
E�
E�
E����
E�
E�
E�
E�
��V�$�$�$���V�C�Z�(�(�(���V�C�Z�(�(�(���V�C�Z�(�(�(���V�C�Z�(�(�(���V�C�Z�(�(�(�(�(��
��V�$�$�$���V�C�Z�(�(�(���V�C�Z�(�(�(���V�C�Z�(�(�(���V�C�Z�(�(�(���V�C�Z�(�(�(�(���s1�M?Q:�;O�<Q:�O�Q:�O�Q:�:B'T!c�v	�	tjtt��|�tt
td���tjtdztdz��tjtdztdz��|�tt
tdzd���|�tt
tdzd���|�tt
tdzd���|�tt
tdzd���|�tt
tdzd���tjtdztd	z��|�tt
td
zt
t��zd	zd���|�tt
td
zt
t��zdzd���tjt
t��dztdz��|�tt
tdzd���tjd
t
tt����zdzt
t��zdztdz��|�tt
tdzd���tj	tt����5|�tt
t
t��d���ddd��n#1swxYwYtj
t��tj
tdz��tj
tdz��tj
td	z��tj
tdz��tj
tdz��dS#tj
t��tj
tdz��tj
tdz��tj
td	z��tj
tdz��tj
tdz��wxYw)NTr�r&r'r�r�r�r�r�r�r�r�r�r9r�)rrgrr�rrrrr	r�r(r!s r�"test_realpath_symlink_loops_strictz0PosixPathTest.test_realpath_symlink_loops_strict�s��
"	)��J�v�v�&�&�&����g�x����E�E�E��J�v�c�z�6�#�:�.�.�.��J�v�c�z�6�#�:�.�.�.����g�x����D��I�I�I����g�x����D��I�I�I����g�x����d��K�K�K����g�x����t��L�L�L����g�x������N�N�N��J�v�c�z�6�#�:�.�.�.����g�x�$�W�n�x��/?�/?�?�#�E�d�
�
T�
T�
T����g�x�$�W�n�x��/?�/?�?�#�E�d�
�
T�
T�
T�
�J�x��'�'�%�/����<�<�<����g�x����D��I�I�I��J�u�x�����8�8�8�3�>���'�'�(�*-�.�/5�c�z�
;�
;�
;����g�x����D��I�I�I��%�g�f�o�o�6�6�
T�
T��!�!�'�8�X�f�5E�5E�d�!�S�S�S�
T�
T�
T�
T�
T�
T�
T�
T�
T�
T�
T����
T�
T�
T�
T�
��V�$�$�$���V�C�Z�(�(�(���V�C�Z�(�(�(���V�C�Z�(�(�(���V�C�Z�(�(�(���V�C�Z�(�(�(�(�(��
��V�$�$�$���V�C�Z�(�(�(���V�C�Z�(�(�(���V�C�Z�(�(�(���V�C�Z�(�(�(���V�C�Z�(�(�(�(���s1�LP�6M�P�M#�#P�&M#�'P�B'R8c�r�	tjt��tjdt	t��ztdz��tjdtdz��|�t
tdz��t��tjtdz��tjtdz��tt��dS#tjtdz��tjtdz��tt��wxYw)Nr�z/selfzself/self/selfz/link)
rrqrrgrr3rr	r(rr!s r�(test_realpath_repeated_indirect_symlinksz6PosixPathTest.test_realpath_repeated_indirect_symlinks�s���	��H�V�����J�u�x��/�/�/��'�1A�B�B�B��J�'��'�)9�:�:�:����X�f�w�&6�7�7��@�@�@���V�g�-�.�.�.���V�g�-�.�.�.��v�������
��V�g�-�.�.�.���V�g�-�.�.�.��v�������s
�BC(�(AD6c�^�d}	tjt��t|��D]?}tjd�d|zgdz��td|dzzz���@tjdtdz��|�ttd|zz��t��tj	t��5|�td|z��t��ddd��n#1swxYwYt|dz��D]!}tj
td|zz���"tt��dS#t|dz��D]!}tj
td|zz���"tt��wxYw)N�
r9z%dz/%drwrRz/0)rrqr�rangergr5r3rr	r�r(r)r"�depth�is   r�test_realpath_deep_recursionz*PosixPathTest.test_realpath_deep_recursions�����
	��H�V�����5�\�\�
P�
P���
�3�8�8�T�A�X�J��O�4�4�f�u��A���6N�O�O�O�O��J�s�F�T�M�*�*�*����X�f�u�u�}�&<�=�=�v�F�F�F��%�f�-�-�
A�
A�� � ��$��,�!7�!7��@�@�@�
A�
A�
A�
A�
A�
A�
A�
A�
A�
A�
A����
A�
A�
A�
A��5�1�9�%�%�
5�
5��� ��%�!�)�!3�4�4�4�4��v��������5�1�9�%�%�
5�
5��� ��%�!�)�!3�4�4�4�4��v�������s1�CE"�,D
�E"�
D�E"�D�E"�"A
F,c��	tjt��tjtdz��tjtdztdz��t	jtdz��5|�td��tdz��ddd��n#1swxYwYt	jtdz��ttdz��tt��dS#t	jtdz��ttdz��tt��wxYw)Nz/y�/kr�z/y/a)
rrqrrgr	r�r3rr(rr!s r�test_realpath_resolve_parentsz+PosixPathTest.test_realpath_resolve_parentss[��
	��H�V�����H�V�d�]�#�#�#��J�v��}�f�t�m�4�4�4��%�f�t�m�4�4�
A�
A�� � ��#������@�@�@�
A�
A�
A�
A�
A�
A�
A�
A�
A�
A�
A����
A�
A�
A�
A�
��V�d�]�+�+�+��v��}�%�%�%��v�������
��V�d�]�+�+�+��v��}�%�%�%��v�������s1�A6D�8,B0�$D�0B4�4D�7B4�8D�A	E
c���	tjt��tjtdz��tjtdz��tjtdztdz��|�ttdz��tdz��t
jtt����5|�ttt��dz��tdz��ddd��n#1swxYwYt
j
tdz��ttdz��ttdz��tt��dS#t
j
tdz��ttdz��ttdz��tt��wxYw)Nr�z/k/yz/link-yz
/link-y/..)rrqrrgr3rr	r�rrr(rr!s r�(test_realpath_resolve_before_normalizingz6PosixPathTest.test_realpath_resolve_before_normalizing,s���	��H�V�����H�V�d�]�#�#�#��H�V�f�_�%�%�%��J�v�����(:�;�;�;�
���X�f�|�&;�<�<�f�t�m�L�L�L��%�g�f�o�o�6�6�
0�
0�� � ��(�6�*:�*:�\�*I�!J�!J�!'�$��0�0�0�
0�
0�
0�
0�
0�
0�
0�
0�
0�
0�
0����
0�
0�
0�
0�
��V�i�/�0�0�0��v���'�'�'��v��}�%�%�%��v�������
��V�i�/�0�0�0��v���'�'�'��v��}�%�%�%��v�������s2�CF	�AD�F	�D"�"F	�%D"�&F	�	A G)c�2�	tjt��tjtdz��tjttdz��t	jt
t����5tt��}|�t|dz��t��|�t|dz��tdz��ddd��n#1swxYwYt	j
tdz��ttdz��tt��dS#t	j
tdz��ttdz��tt��wxYw)Nr��linkzlink/k)rrqrrgr	r�rrr3rr(r)r"�bases  r�test_realpath_resolve_firstz)PosixPathTest.test_realpath_resolve_firstHs���	��H�V�����H�V�d�]�#�#�#��J�v�v���/�/�/��%�g�f�o�o�6�6�
K�
K���'�'��� � ��$��-�!8�!8�&�A�A�A�� � ��$��/�!:�!:�F�T�M�J�J�J�
K�
K�
K�
K�
K�
K�
K�
K�
K�
K�
K����
K�
K�
K�
K�

��V�f�_�-�-�-��v��}�%�%�%��v�������
��V�f�_�-�-�-��v��}�%�%�%��v�������s2�A=E
�?A.C9�-E
�9C=�=E
�C=�E
�
A	Fc���tjd�c}t_	tj�tj����d}|�t
tjd��|�t
jd��d��|�t
jt
j	d����d��|�t
jd��d��|�t
jd��d��|�t
jdd��d|zd	z��|�t
jdd
��d|zdz��|�t
jdd��d
��|�t
jdd��d��|�t
jdd��d��|�t
jdd��d��|�t
jdd��d��|�t
jdd��d��|�t
jdd��d��|�t
jdd��d��|�t
jdd��d��|�t
jd	d	��d��|�t
jdd��d��|t_dS#|t_wxYw)Nc��dS)Nz/home/user/bar�r�rr�<lambda>z,PosixPathTest.test_relpath.<locals>.<lambda>\s��7H�r���r%r�r�z../a/bz../br�z/az../cz/a/bzb/cz../../arRz/foo/bar/batz/x/y/zz../../../foo/bar/batr8�batr9zfoo/bar/batz../../..r�z../foo/bar/batz
../../../x)
rr�rLrFr��
ValueErrorr4r�r3r)r"�real_getcwd�curdirs   r�test_relpathzPosixPathTest.test_relpath[s���$&�I�/H�/H� ��b�i�	$��W�]�]�2�9�;�;�/�/��3�F����j�)�*;�R�@�@�@����Y�.�s�3�3�S�9�9�9����Y�.�y�/@��/E�/E�F�F��L�L�L����Y�.�u�5�5�u�=�=�=����Y�.�x�8�8�(�C�C�C����Y�.�s�F�;�;�U�6�\�$�=N�O�O�O����Y�.�u�f�=�=�"�6�\�&�0�
2�
2�
2����Y�.�s�E�:�:�I�F�F�F����Y�.�s�C�8�8�#�>�>�>����Y�.�~�x�H�H�J`�a�a�a����Y�.�~�z�J�J�E�R�R�R����Y�.�~�s�C�C�]�S�S�S����Y�.�s�N�C�C�Z�P�P�P����Y�.�~�t�D�D�FV�W�W�W����Y�.�t�^�D�D�l�S�S�S����Y�.�s�C�8�8�#�>�>�>����Y�.�t�T�:�:�C�@�@�@����Y�.�v�v�>�>��D�D�D�#�B�I�I�I���B�I�#�#�#�#s�L/M�M'c�p�tjd�c}t_	tj�tj����d}|�t
tjd��|�t
jd��d��|�t
jt
j	d����d��|�t
jd��d��|�t
jd��d��|�t
jdd��d|zd	z��|�t
jdd
��d|zdz��|�t
jdd��d
��|�t
jdd��d��|�t
jdd��d��|�t
jdd��d��|�t
jdd��d��|�t
jdd��d��|�t
jdd��d��|�t
jdd��d��|�t
jdd��d��|�t
jd	d	��d��|�t
jdd��d��|�ttjdd��|�ttjdd��|t_dS#|t_wxYw)Nc��dS)Ns/home/user/barr�r�rrr�z2PosixPathTest.test_relpath_bytes.<locals>.<lambda>vs��:L�rr�r�asa/bs../a/bs../bs../s/as../cs/a/bsb/cs../../ar�s/foo/bar/bats/x/y/zs../../../foo/bar/batr?sbatr@sfoo/bar/bats../../..s/xs../foo/bar/bats
../../../xsbytesr�)rr�rLrFr�r�r4r�r3r�	TypeError)r"�real_getcwdbr�s   r�test_relpath_bytesz PosixPathTest.test_relpath_bytesus$��&(�j�2L�2L�"��r�z�	&��W�]�]�2�:�<�<�0�0��4�F����j�)�*;�S�A�A�A����Y�.�t�4�4�d�;�;�;����Y�.�y�/@��/F�/F�G�G��N�N�N����Y�.�v�6�6��?�?�?����Y�.�y�9�9�9�E�E�E����Y�.�t�W�=�=�#�F�]�5�0�
2�
2�
2����Y�.�v�w�?�?�#�F�]�7�2�
4�
4�
4����Y�.�t�V�<�<�j�I�I�I����Y�.�t�T�:�:�D�A�A�A����Y�.��	�J�J�Lc�d�d�d����Y�.���L�L�f�U�U�U����Y�.���E�E�~�V�V�V����Y�.�t�_�E�E�{�S�S�S����Y�.���F�F�HY�Z�Z�Z����Y�.�u�o�F�F�
�V�V�V����Y�.�t�T�:�:�D�A�A�A����Y�.�u�e�<�<�d�C�C�C����Y�.�w��@�@�$�G�G�G����i��):�H�e�L�L�L����i��):�E�8�L�L�L�%�B�J�J�J���B�J�%�%�%�%s�M=N'�'N5c����fd�}�fd�}��ttjg��|tddg��|tddg��|dgd��|ddgd��|ddgd��|ddgd��|ddgd��|d	d
gd��|ddgd��|ddgd��|d
dgd��|d
dgd��|ddgd��|d
dgd��|dgd��|ddgd��|ddgd��|ddgd��|ddgd��|ddgd��|gd�d��|gd�d��|dgd��|ddgd��|tddg����ttjd dg����ttjd d!g����ttjd"dg����ttjd
d#g����ttjd
d$g����ttjd%d#g��dS)&Nc������tj|��|����tjd�|D����tj|����dS)Nc�6�g|]}tj|����Sr��rrj��.0�ps  r�
<listcomp>z@PosixPathTest.test_commonpath.<locals>.check.<locals>.<listcomp>�s ��2Q�2Q�2Q�a�2�;�q�>�>�2Q�2Q�2Qr)r3r4�
commonpathrrj)�pathsr�r"s  �r�checkz,PosixPathTest.test_commonpath.<locals>.check�so������Y�1�%�8�8�(�C�C�C����Y�1�2Q�2Q�5�2Q�2Q�2Q�R�R��[��2�2�
4�
4�
4�
4�
4rc�����|tj|����|tjd�|D����dS)Nc�6�g|]}tj|����Sr�r�r�s  rrzFPosixPathTest.test_commonpath.<locals>.check_error.<locals>.<listcomp>�s ��=�=�=�!�r�{�1�~�~�=�=�=r)r�r4r)�excrr"s  �r�check_errorz2PosixPathTest.test_commonpath.<locals>.check_error�sX������c�9�#7��?�?�?����c�9�#7�=�=�u�=�=�=�
?�
?�
?�
?�
?rz/usr�usrz
/usr/localz/usr/local/z/usr//localz//usr/localz/usr/./localz/./usr/localr9z/devz	/usr/lib/z/usr/lib/python3z/usr/libz/usr/lib64/z
/usr/lib64�spam�alotr%�and/jam�and/spam�andzand//jamz
and/spam//z	and/./jamz
./and/spam)rrr
)rrr
z	spam/alotz
/spam/alots	/usr/lib/zusr/lib/python3susr/lib/s/usr/lib/python3susr/lib/python3zusr/lib/)r�r�r4rr�)r"rrs`  r�test_commonpathzPosixPathTest.test_commonpath�s����	4�	4�	4�	4�	4�	?�	?�	?�	?�	?�
	
���*�i�&:�B�?�?�?���J����0�0�0���J����0�0�0�
��|�n�l�+�+�+�
��|�\�*�L�9�9�9�
��}�l�+�\�:�:�:�
��}�m�,�l�;�;�;�
��}�m�,�l�;�;�;�
��~�~�.��=�=�=�
��s�F�m�S�!�!�!�
��v�v���$�$�$�
��{�.�/��<�<�<�
��{�M�*�F�3�3�3�
��z�<�(�&�1�1�1�
��{�L�)�6�2�2�2�
��v�h�����
��v�v���'�'�'�
��v�v���#�#�#�
��y�*�%�u�-�-�-�
��z�<�(�%�0�0�0�
��{�L�)�5�1�1�1�
��-�-�-�r�2�2�2�
��,�,�,�e�4�4�4�
��r�d�B����
��r�;���$�$�$���J��\� 2�3�3�3����)�Y�%9�'�);�<�	>�	>�	>����)�Y�%9�'�):�;�	=�	=�	=����)�Y�%9�&�(:�;�	=�	=�	=����)�Y�%9�&�(;�<�	>�	>�	>����)�Y�%9�&�(:�;�	=�	=�	=����)�Y�%9�%�':�;�	=�	=�	=�	=�	=r).�__name__�
__module__�__qualname__r#r r6rGrOrTrXrZr\rlrorrr	�skip_unless_symlinkrtr�skipIfrxr�r�r�r��sys�platformr�r�r�rr�r�r�r�r�r�r�r�r�r�r�r�r�r�rr�rrrr's����������2�2�2�
+�+�+�M�M�M�7�7�7�8&�&�&�:�:�:�D�D�D�E�E�E�X�X�X�*?�?�?�:�:�:��"���#�"���X�_�U�d�]�$@�A�A�"�"�B�A�"�"�X�_�U�d�]�$@�A�A�"�"�B�A�"�*?�?�?�L�L�L� �X�_�S�\�Y�.�3�5�5�%G�%G�5�5�%G�N1�1�1�N�f
3�
3�
3�'�J�J�'�&�J�'�C�C�'�&�C��"�&�%�%�'�&�#�"�%��"�&�%�%�'�&�#�"�%��"�&�%�%�'�&�#�"�%��"�&�%)�%)�'�&�#�"�%)�N�"�&�%)�%)�'�&�#�"�%)�N�"�&�
�
�'�&�#�"�
��"�&���'�&�#�"��"�"�&���'�&�#�"��"�"�&���'�&�#�"��4�"�&���'�&�#�"��"$�$�$�4&�&�&�<4=�4=�4=�4=�4=rrc��eZdZeZgd�ZdS)�PosixCommonTest)r��samefile�sameopenfile�samestatN)rrrr4�
pathmodule�
attributesr�rrrr�s�������J�D�D�D�J�J�Jrrc��eZdZeZd�Zd�Zd�Zd�Zd�Z	d�Z
d�Zd�Zd	�Z
d
�Zd�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZdS)�
PathLikeTestsc�6�tj|_ttj��|_|�tj|j��t|jdd��5}|�d��ddd��dS#1swxYwYdS)N�xbrstest_posixpath.PathLikeTests)	r	r)�	file_namer
�	file_path�
addCleanupr(rdre)r"�files  rr#zPathLikeTests.setUp�s���"�)���!�)�"2�3�3������	�(�$�.�9�9�9�
�$�.�$��
*�
*�	8�d��J�J�6�7�7�7�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8����	8�	8�	8�	8�	8�	8s�+B�B�Bc�j�|�||j��||j����dSr)r3r"r!)r"�funcs  r�assertPathEqualzPathLikeTests.assertPathEqual�s6�������d�n�-�-�t�t�D�N�/C�/C�D�D�D�D�Drc�D�|�|jj��dSr)r'rL�normcaser!s r�test_path_normcasez PathLikeTests.test_path_normcase��!�����T�Y�/�0�0�0�0�0rc�D�|�|jj��dSr)r'rLrWr!s r�test_path_isabszPathLikeTests.test_path_isabs�� �����T�Y�_�-�-�-�-�-rc��|�|j�dtd��d��|j�ddd����dS)Nr��br�)r3rLr5r
r!s r�test_path_joinzPathLikeTests.test_path_join�sS����������X�c�]�]�C�@�@������S�#�6�6�	8�	8�	8�	8�	8rc�D�|�|jj��dSr)r'rLrFr!s r�test_path_splitzPathLikeTests.test_path_split�r.rc�D�|�|jj��dSr)r'rLrJr!s r�test_path_splitextz PathLikeTests.test_path_splitext�r+rc�D�|�|jj��dSr)r'rL�
splitdriver!s r�test_path_splitdrivez"PathLikeTests.test_path_splitdrive��!�����T�Y�1�2�2�2�2�2rc�D�|�|jj��dSr)r'rLrr!s r�test_path_basenamez PathLikeTests.test_path_basename�r+rc�D�|�|jj��dSr)r'rLrr!s r�test_path_dirnamezPathLikeTests.test_path_dirname��!�����T�Y�.�/�/�/�/�/rc�D�|�|jj��dSr)r'rLrbr!s r�test_path_islinkzPathLikeTests.test_path_islink�s!�����T�Y�-�.�.�.�.�.rc�D�|�|jj��dSr)r'rLrcr!s r�test_path_lexistszPathLikeTests.test_path_lexists�r>rc�D�|�|jj��dSr)r'rLrnr!s r�test_path_ismountzPathLikeTests.test_path_ismount�r>rc�D�|�|jj��dSr)r'rLr�r!s r�test_path_expanduserz"PathLikeTests.test_path_expanduser�r9rc�D�|�|jj��dSr)r'rL�
expandvarsr!s r�test_path_expandvarsz"PathLikeTests.test_path_expandvarsr9rc�D�|�|jj��dSr)r'rLr�r!s r�test_path_normpathz PathLikeTests.test_path_normpathr+rc�D�|�|jj��dSr)r'rLrr!s r�test_path_abspathzPathLikeTests.test_path_abspathr>rc�D�|�|jj��dSr)r'rLrr!s r�test_path_realpathz PathLikeTests.test_path_realpathr+rc�D�|�|jj��dSr)r'rLr�r!s r�test_path_relpathzPathLikeTests.test_path_relpathr>rc��|j�|j|jg��}|�||j��dSr)rLrr"r!r3)r"�common_paths  r�test_path_commonpathz"PathLikeTests.test_path_commonpaths>���i�*�*�D�N�D�N�+K�L�L������d�n�5�5�5�5�5rN)rrrr4rLr#r'r*r-r1r3r5r8r;r=r@rBrDrFrIrKrMrOrQrTr�rrrr�sH�������D�8�8�8�E�E�E�1�1�1�.�.�.�8�8�8�.�.�.�1�1�1�3�3�3�1�1�1�0�0�0�/�/�/�0�0�0�0�0�0�3�3�3�3�3�3�1�1�1�0�0�0�1�1�1�0�0�0�6�6�6�6�6rr�__main__)rr4rrrrrrrr�test.supportrr	�test.support.os_helperr
rrx�ImportErrorr)rrr�TestCaser�
CommonTestrrr�mainr�rr�<module>r\s���	�	�	�	�����
�
�
�
�����:�:�:�:�:�:�:�:�:�:�:�:�!�!�!�!�!�!�&�&�&�&�&�&�"�"�"�"�"�"�+�+�+�+�+�+���������L�L�L�L�������E�E�E�����
���!�	"�	"��=�=�=�
�
�
�`
=�`
=�`
=�`
=�`
=�H�%�`
=�`
=�`
=�FE�E�E�E�E�&�1�8�3D�E�E�E�
D6�D6�D6�D6�D6�H�%�D6�D6�D6�N�Z����H�M�O�O�O�O�O��s�A�A�
A