HEX
Server: Apache
System: Linux bd12.noc223.com 4.18.0-553.121.1.lve.el8.x86_64 #1 SMP Thu Apr 30 16:40:41 UTC 2026 x86_64
User: handcraf (1693)
PHP: 8.1.28
Disabled: NONE
Upload Files
File: //proc/self/root/opt/alt/python312/lib64/python3.12/test/__pycache__/test_posixpath.cpython-312.pyc
�

}h�e�����ddlZddlZddlZddlZddlmZmZmZmZddlm	Z	ddl
mZddl
mZddl
mZddlmZ	ddlZeej$�Zd�Zd	�ZGd
�dej,�ZGd�d
e	j0ej,�ZGd�dej,�Zedk(rej8�yy#e$rdZY��wxYw)�N)�realpath�abspath�dirname�basename)�test_genericpath)�
import_helper)�	os_helper)�FakePath)�mockc�V�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   �:/opt/alt/python312/lib64/python3.12/test/test_posixpath.py�!skip_if_ABSTFN_contains_backslashrs3���f�n�O�
3�C��$�(�-�-��$�T�*�+�O�<�<�c�N�	tj|�y#t$rYywxYw�N)�os�rmdir�OSError)rs r�
safe_rmdirr!s%��
�
�������
��
�s��	$�$c�T�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zej"d��Zej(edud�d��Zej(edud�d��Zd�Zd�Zd�Zej(ej8dk(d�d��Zgd�Zd�Ze d��Z!e d��Z"ej"e d���Z#ej"e d���Z$ej"e d���Z%ej"e d ���Z&ej"e d!���Z'ej"e d"���Z(ej"e d#���Z)ej"e d$���Z*ej"e d%���Z+ej"e d&���Z,d'�Z-d(�Z.d)�Z/y)*�
PosixPathTestc�$�|j�yr)�tearDown��selfs r�setUpzPosixPathTest.setUp)s���
�
�rc��dD]D}tjtj|z�ttj|z��Fy)N)��1�2)r	�unlink�TESTFNr)r"�suffixs  rr zPosixPathTest.tearDown,s=��$�	2�F����Y�-�-��6�7��y�'�'�&�0�1�	2rc���|jtjdddd�d�|jtjddd�d�|jtjddd	�d
�|jtjddd
d�d�|jtjddd�d�|jtjddd�d�y)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�#�	%���������u�=�~�N����������@�(�	*�	
���������&�I�$�	&����������@�(�	*��������'�7�C�)�	+rc���|jtjd�d�|jtjd�d�|jtjd�d�|jtjd�d�|jtjd	�d
�|jtjd�d�|jtjd
�d�|jtjd�d�|jtjd�d�|jtjd�d�y)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?s���������4�o�F��������-�y�9��������/��=��������3�_�E��������6�8H�I��������5�7H�I��������.��<��������0�-�@��������4�6G�H��������7�9K�Lrc�x�|jtj|�||f�|jtjd|z�d|z|f�|jtjd|z�d|z|f�|jtjd|z�d|z|f�|jtjd|z�d|z|f�|jtj|dz�||zdzdf�t|d�}t|d�}t|d�}|jtj|�||f�|jtjd|z�d|z|f�|jtjd|z�d|z|f�|jtjd	|z�d	|z|f�|jtjd
|z�d
|z|f�|jtj|dz�||zdzdf�y)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�H�c�?�C�����+�+�C�$�J�7�#��.�#�9N�O�����+�+�F�T�M�:� �8�+�S�1�	3�����+�+�J��,=�>�$�x�/��5�	7�����+�+�K�$�,>�?�%��0�#�6�	8�����+�+�D�3�J�7�"�S�.�3�.��3�	5��T�7�#����7�+���C��!������+�+�D�1�H�c�?�C�����+�+�D�4�K�8���/�3�/�	1�����+�+�G�d�N�;�!�H�,�c�2�	4�����+�+�K�$�,>�?�%��0�#�6�	8�����+�+�L�4�,?�@�&��1�3�7�	9�����+�+�D�4�K�8�"�S�.�4�/��5�	7rc���|jddd�|jddd�|jddd�|jdd	d
�|jddd�|jd
d
d�|jddd�|jddd�|jddd�|jddd�|jddd�|jddd�y)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����-��F�;����,�n�f�E����)�V�U�3����(�H�b�1����(�H�b�1����-���;����+�]�F�C����#�s�B�'����$��b�)����*�j�"�5����"�b�"�%rc��tj}|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 �|j|d!�d"�|j|d#�d$�y)%Nr%)r%r%r%�a)r%r%rV�a/b)r%r%rW�a/b/)r%r%rX�/a)r%r9rV�/a/b)r%r9rWz/a/b/)r%r9rX�//a)r%�//rVz///a)r%r9r[z///a/b)r%r9z//a/b�c:/a/b)r%r%r]�\/a/b)r%r%r^�\a\b)r%r%r_r)rrr�a)rrr`�/a)rr@r`�//a)rs//r`s///a)rr@rb)r4�	splitrootr3�r"�fs  r�test_splitrootzPosixPathTest.test_splitrootvs�����������2���-�����3���/�����5��?�3�����6��$4�5�����4��.�1�����6��$4�5�����7��%6�7�	
����5��?�3�����6��$4�5�����8��&8�9�����8��&8�9�����8��&8�9�����8��&8�9�����3���1�����4��"2�3�����5��#4�5�����6��$6�7�����7��%8�9rc���|jtjd�d�|jtjd�d�|jtjd�d�|jtjd�d�|jtjd�d�|jtjd�d�|jtjd	�d�|jtjd
�d�|jtjd�d�|jtjd�d�y)
Nr%Fr9Tr,r8zfoo/barrr@r1r?sfoo/bar)�assertIsr4�isabsr!s r�
test_isabszPosixPathTest.test_isabs�s����
�
�i�o�o�b�)�5�1��
�
�i�o�o�c�*�D�1��
�
�i�o�o�f�-�t�4��
�
�i�o�o�j�1�4�8��
�
�i�o�o�i�0�%�8��
�
�i�o�o�c�*�E�2��
�
�i�o�o�d�+�T�2��
�
�i�o�o�g�.��5��
�
�i�o�o�k�2�D�9��
�
�i�o�o�j�1�5�9rc���|jtjd�d�|jtjd�d�|jtjd�d�|jtjd�d�|jtjd�d�|jtjd�d	�|jtjd
�d�|jtjd�d�|jtjd
�d�|jtjd�d	�y)Nr8r-r9r%r:r;r=r?r2r@rrArBrD)r3r4rr!s r�
test_basenamezPosixPathTest.test_basename�s������+�+�J�7��?�����+�+�C�0�"�5�����+�+�E�2�E�:�����+�+�I�6��>�����+�+�L�9�5�A�����+�+�K�8�&�A�����+�+�D�1�3�7�����+�+�F�3�V�<�����+�+�J�7��@�����+�+�M�:�F�Crc���|jtjd�d�|jtjd�d�|jtjd�d�|jtjd�d�|jtjd�d	�|jtjd
�d�|jtjd�d�|jtjd
�d�|jtjd�d�|jtjd�d�y)Nr8r,r9r:r%r;r<r=r>r?r1r@rArrBrCrDrE)r3r4rr!s r�test_dirnamezPosixPathTest.test_dirname�s������*�*�:�6��?�����*�*�3�/��5�����*�*�5�1�2�6�����*�*�9�5�v�>�����*�*�<�8�'�B�����*�*�;�7��A�����*�*�4�0�$�7�����*�*�6�2�C�8�����*�*�:�6��@�����*�*�=�9�8�Drc�b�|jtjtjdz�d�|jtj
tjdz�d�t
tjdzd�5}|jd�ddd�|jtjtjdz�d�tj��r6tjtjdztjdz�|jtjtjdz�d�tjtjdz�|jtjtjdz�d�|jtjtjdz�d�|jtj
tjdz�d�|jtjtjdz�d�|jtjtjtj�dz�d�|jtjtjd	z�d�|jtjtjtj�d
z�d�y#1swY���xYw)Nr&Fr'�wbrATu�����)rhr4�islinkr	r)�lexists�open�write�can_symlinkr�symlink�remove�exists�fsencoderds  r�test_islinkzPosixPathTest.test_islink�s ���
�
�i�&�&�y�'7�'7�#�'=�>��F��
�
�i�'�'�	�(8�(8�3�(>�?��G�
�)�"�"�S�(�$�
/�	�1�
�G�G�F�O�	��
�
�i�&�&�y�'7�'7�#�'=�>��F�� � �"��J�J�y�'�'�#�-�y�/?�/?�#�/E�F��M�M�)�*�*�9�+;�+;�c�+A�B�D�I��I�I�i�&�&��,�-��M�M�)�*�*�9�+;�+;�c�+A�B�D�I��M�M�)�*�*�9�+;�+;�c�+A�B�E�J��M�M�)�+�+�I�,<�,<�s�,B�C�T�J��
�
�i�&�&�y�'7�'7�(�'B�C�U�K��
�
�i�&�&�r�{�{�9�3C�3C�'D�w�'N�O�QV�W��
�
�i�&�&�y�'7�'7�&�'@�A�5�I��
�
�i�&�&�r�{�{�9�3C�3C�'D�w�'N�O�QV�W�	�	�s�
L$�$L.c�P�|jtjd�d�|jtjd�d�|jtjtd��d�|jtjtd��d�y)Nr9Tr@)rhr4�ismountr
r!s r�test_ismountzPosixPathTest.test_ismount�sn���
�
�i�'�'��,�d�3��
�
�i�'�'��-�t�4��
�
�i�'�'���
�6��=��
�
�i�'�'����7��>rc�J�|jtjt�d�	t	j
t�|jtjt�d�t
t�|jtjd�d�|jtjd�d�|jtjd�d�|jtjd�d�y#t
t�wxYw)NFu/�s/�z/s/)rhr4rrr�mkdirrr!s r�test_ismount_non_existentz'PosixPathTest.test_ismount_non_existent�s����
�
�i�'�'��/��7�	��H�H�V���M�M�)�+�+�F�3�U�;��v���
�
�i�'�'�	�2�E�:��
�
�i�'�'��1�5�9��
�
�i�'�'��0�%�8��
�
�i�'�'��1�5�9��
�v��s�AD�D"c��	tjdt�|jt	j
t�d�tjt�y#tjt�wxYw)Nr9F)rryrrhr4rr(r!s r�test_ismount_symlinksz#PosixPathTest.test_ismount_symlinks�sG��	��J�J�s�F�#��M�M�)�+�+�F�3�U�;��I�I�f���B�I�I�f��s�AA�A:NzTest requires posix modulec���tj}d�}	|t_|jtjt
�d�|t_y#|t_wxYw)Nc�b�d}d}|tk(rd}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�sC���F��F��v�~������$�$�a����A�q�!�Q��1�%M�N�NrT�r�lstatrhr4rr�r"�
save_lstatr�s   r�test_ismount_different_devicez+PosixPathTest.test_ismount_different_device�sG���X�X�
�	O�	"�!�B�H��M�M�)�+�+�F�3�T�:�!�B�H��z�B�H���4A�
A"c���tj}d�}	|t_|jtjt
�d�|t_y#|t_wxYw)Nc��d}d}|jt�r|tk7rtd��|tk(rd}d}tjd||dddddddf
�S)Nrz!Fake [Errno 13] Permission deniedr�)�
startswithrrr�r�r�s   rr�zEPosixPathTest.test_ismount_directory_not_readable.<locals>.fake_lstatsc���F��F����v�&�4�6�>��A�B�B��v�~������$�$�a����A�q�!�Q��1�%M�N�NrTr�r�s   r�#test_ismount_directory_not_readablez1PosixPathTest.test_ismount_directory_not_readable�sG���X�X�
�
	O�	"�!�B�H��M�M�)�+�+�F�3�T�:�!�B�H��z�B�H�r�c�T�|jtjt��yr)�assertFalser4�
isjunctionrr!s r�test_isjunctionzPosixPathTest.test_isjunctions������-�-�f�5�6rc��|jtjd�d�|jtjd�d�y)Nr:rA)r3r4�
expanduserr!s r�test_expanduserzPosixPathTest.test_expandusers8������-�-�e�4�e�<�����-�-�f�5�v�>rc�D�tj�5}d|d<|jtjd�d�d|d<|jtjd�d�dD]�}|j|��5||d<|jtjd�d�|jtjd�d�|jtjd	�d
�ddd���	ddd�y#1swY��xYw#1swYyxYw)Nz/home/victor�HOME�~z
/home/victor/)r9r%r\�///)�homer9�~/z~/foor,)r	�EnvironmentVarGuardr3r4r��subTest)r"�envr�s   r�test_expanduser_home_envvarz)PosixPathTest.test_expanduser_home_envvars��
�
*�
*�
,�
	L��(�C��K����Y�1�1�#�6��G�*�C��K����Y�1�1�#�6��G�,�
L���\�\�t�\�,�L�"&�C��K��$�$�Y�%9�%9�#�%>��D��$�$�Y�%9�%9�$�%?��E��$�$�Y�%9�%9�'�%B�F�K�	L�L�
L�
	L�
	L�L�L��
	L�
	L�s%�A,D�A5D
�6
D�
D�D�D�vxworkszno home directory on VxWorksc	��tjd�}|jtjd�t
�|jtjd�t�tjd�dk7rv|jtjd�dztjd��|jtjd�dztjd��|jtjd�t
�|jtjd	�t
�|jtjd
�t�|jtjd�t�tj�5}|d=|jtj��j}|jd�xsd}|jtjd�|�tj j#|d
t$��5tj j#|dt$��5dD]'}|jtj|�|��)	ddd�ddd�ddd�y#1swY�xYw#1swY�xYw#1swYyxYw)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_pwd(s;���)�)�%�0�����i�2�2�4�8�#�>����i�2�2�5�9�5�A�����$��+�����$�$�S�)�C�/��$�$�T�*�
�
����$�$�T�*�T�1��$�$�U�+�
�	
���i�2�2�8�<�c�B����i�2�2�7�;�S�A����i�2�2�9�=�u�E����i�2�2�8�<�e�D�
�
*�
*�
,�	G���F���<�<��	�	��,�3�3�D��;�;�s�#�*�s�D����Y�1�1�#�6��=����"�"�3�
��"�I�
G����"�"�3�
��"�I�
G�;�G�D��$�$�Y�%9�%9�$�%?��F�G�
G�
G�	G�	G�
G�
G��
G�
G��	G�	G�s=�.BK�?'J9�&-J-�J9�K�-J6�2J9�9K	�>K�K)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]�\}}|j|�5tj|�}|j	||�ddd�|jd�}|jd�}|j|t��5tj|�}|j	||�ddd���y#1swY�uxYw#1swY��xYw)Nzutf-8)�type)�NORMPATH_CASESr�r4�normpathr3�encoderK)r"rL�expected�results    r�
test_normpathzPosixPathTest.test_normpath�s���"�1�1�		3�N�D�(����d�#�
3�"�+�+�D�1��� � ���2�
3��;�;�w�'�D����w�/�H����d���/�
3�"�+�+�D�1��� � ���2�
3�
3�		3�
3�
3��
3�
3�s�(C�
(C�C		�C	c�l�|jtd�tj��|jtd�tj��|jtdj	dgdz��tj��|jtd�tj
��|jtd�tj
��|jtdj	dgdz��tj
��y)NrRz./.r9�d�.s./.r@)r3rr�getcwdr5�getcwdbr!s r�test_realpath_curdirz"PosixPathTest.test_realpath_curdir�s�������#���	�	��4�����%��"�)�)�+�6�����#�(�(�C�5�3�;�"7�8�"�)�)�+�F�����$������6�����&�)�2�:�:�<�8�����$�)�)�T�F�S�L�"9�:�B�J�J�L�Irc	��|jtd�ttj���|jtd�tttj����|jtdjdgdz��d�|jtd�ttj���|jtd�tttj����|jtdjdgdz��d�y)NrSz../..r9r�s..s../..r@)r3rrrr�r5r�r!s r�test_realpath_pardirz"PosixPathTest.test_realpath_pardir�s�������$�������)=�>�����'�*�G�G�B�I�I�K�4H�,I�J�����#�(�(�D�6�C�<�"8�9�3�?�����%��'�"�*�*�,�*?�@�����(�+�W�W�R�Z�Z�\�5J�-K�L�����$�)�)�U�G�c�M�":�;�T�Brc��	tjtdzt�|jt	t�tdz�tjt�y#tjt�wxYw�Nr&)rryrr3rr	r(r!s r�test_realpath_basicz!PosixPathTest.test_realpath_basic�sO��	%��J�J�v�c�z�6�*����X�f�-�v�c�z�:����V�$��I���V�$�s�AA#�#A>c�@�	tjtdzt�|jtt
td��|jtt
tdzd��t
jt�y#t
jt�wxYw)Nr&T��strictr')rryr�assertRaises�FileNotFoundErrorrr	r(r!s r�test_realpath_strictz"PosixPathTest.test_realpath_strict�sk��
	%��J�J�v�c�z�6�*����/��6�$��O����/��6�C�<�PT��U����V�$��I���V�$�s�A&B�Bc�(�	tjtjtdz�t�|jt
t�tdz�tjt�y#tjt�wxYwr�)	rryr4�relpathrr3rr	r(r!s r�test_realpath_relativez$PosixPathTest.test_realpath_relative�sZ��	%��J�J�y�(�(����4�f�=����X�f�-�v�c�z�:����V�$��I���V�$�s�AA6�6Bc�	�	tjtt�|jt	t�t�tjtdztdz�tjtdztdz�|jt	tdz�tdz�|jt	tdz�tdz�|jt	tdz�tdz�|jt	tdz�tt��|jt	tdz�tt�dz�tjtdztdz�|jt	td	zt
t�zdz�tdz�|jt	td	zt
t�zdz�tdz�tjt
t�d
ztdz�|jt	tdz�td
z�tjdt
tt��zd
zt
t�zdztdz�|jt	tdz�tdz�tjtt��5|jt	t
t��t�ddd�tjt�tjtdz�tjtdz�tjtdz�tjtdz�tjtdz�y#1swY��xYw#tjt�tjtdz�tjtdz�tjtdz�tjtdz�tjtdz�wxYw)Nr&r'�1/x�1/..�1/../x�/x�x�y�1/../rWrVr�r9�c)
rryrr3rrrr	�
change_cwdr(r!s r�test_realpath_symlink_loopsz)PosixPathTest.test_realpath_symlink_loops�s��
"	)��J�J�v�v�&����X�f�-�v�6��J�J�v�c�z�6�#�:�.��J�J�v�c�z�6�#�:�.����X�f�S�j�1�6�#�:�>����X�f�S�j�1�6�#�:�>����X�f�U�l�3�V�E�\�B����X�f�V�m�4�g�f�o�F����X�f�X�o�6����$�8N�O��J�J�v�c�z�6�#�:�.����X�f�W�n�x��7G�&G�#�&M�N�#�c�\�
+����X�f�W�n�x��7G�&G�#�&M�N�#�c�\�
+�
�J�J�x��'�%�/����<����X�f�S�j�1�6�%�<�@��J�J�u�x����8�8�3�>���'�(�*-�.�/5�c�z�
;����X�f�S�j�1�6�#�:�>��%�%�g�f�o�6�
E�� � ��(�6�*:�!;�V�D�
E�
���V�$����V�C�Z�(����V�C�Z�(����V�C�Z�(����V�C�Z�(����V�C�Z�(�
E�
E��
���V�$����V�C�Z�(����V�C�Z�(����V�C�Z�(����V�C�Z�(����V�C�Z�(�s%�K.O�0-O�O�O�O�B'Q>c��	tjtt�|jtt
td��tjtdztdz�tjtdztdz�|jtt
tdzd��|jtt
tdzd��|jtt
tdzd��|jtt
tdzd��|jtt
tdzd��tjtdztd	z�|jtt
td
zt
t�zd	zd��|jtt
td
zt
t�zdzd��tjt
t�dztdz�|jtt
tdzd��tjd
t
tt��zdzt
t�zdztdz�|jtt
tdzd��tjtt��5|jtt
t
t�d��ddd�tjt�tjtdz�tjtdz�tjtd	z�tjtdz�tjtdz�y#1swY��xYw#tjt�tjtdz�tjtdz�tjtd	z�tjtdz�tjtdz�wxYw)NTr�r&r'r�r�r�r�r�r�rWrVr�r9r�)rryrr�rrrrr	r�r(r!s r�"test_realpath_symlink_loops_strictz0PosixPathTest.test_realpath_symlink_loops_strict�s��
"	)��J�J�v�v�&����g�x����E��J�J�v�c�z�6�#�:�.��J�J�v�c�z�6�#�:�.����g�x����D��I����g�x����D��I����g�x����d��K����g�x����t��L����g�x������N��J�J�v�c�z�6�#�:�.����g�x�$�W�n�x��/?�?�#�E�d�
�
T����g�x�$�W�n�x��/?�?�#�E�d�
�
T�
�J�J�x��'�%�/����<����g�x����D��I��J�J�u�x����8�8�3�>���'�(�*-�.�/5�c�z�
;����g�x����D��I��%�%�g�f�o�6�
T��!�!�'�8�X�f�5E�d�!�S�
T�
���V�$����V�C�Z�(����V�C�Z�(����V�C�Z�(����V�C�Z�(����V�C�Z�(�
T�
T��
���V�$����V�C�Z�(����V�C�Z�(����V�C�Z�(����V�C�Z�(����V�C�Z�(�s%�J0N�2+N�N�N�N�B'P>c�>�	tjt�tjdt	t�ztdz�tjdtdz�|jt
tdz�t�tjtdz�tjtdz�tt�y#tjtdz�tjtdz�tt�wxYw)Nr�z/selfzself/self/selfz/link)
rr�rryrr3rr	r(rr!s r�(test_realpath_repeated_indirect_symlinksz6PosixPathTest.test_realpath_repeated_indirect_symlinkss���	��H�H�V���J�J�u�x��/�/��'�1A�B��J�J�'��'�)9�:����X�f�w�&6�7��@����V�g�-�.����V�g�-�.��v���
���V�g�-�.����V�g�-�.��v��s
�B	C�A	Dc��d}	tjt�t|�D];}tjdjd|zgdz�td|dzzz��=tjdtdz�|j
ttd|zz�t�tjt�5|j
td|z�t�ddd�t|dz�D]!}tjtd|zz��#tt�y#1swY�KxYw#t|dz�D]!}tjtd|zz��#tt�wxYw)N�
r9z%dz/%dr�rRz/0)rr�r�rangeryr5r3rr	r�r(r)r"�depth�is   r�test_realpath_deep_recursionz*PosixPathTest.test_realpath_deep_recursion#sB����
	��H�H�V���5�\�
P���
�
�3�8�8�T�A�X�J��O�4�f�u��A���6N�O�
P��J�J�s�F�T�M�*����X�f�u�u�}�&<�=�v�F��%�%�f�-�
A�� � ��$��,�!7��@�
A��5�1�9�%�
5��� � ��%�!�)�!3�4�
5��v��
A�
A���5�1�9�%�
5��� � ��%�!�)�!3�4�
5��v��s%�CD>�#D2�(D>�2D;�7D>�>AFc�\�	tjt�tjtdz�tjtdztdz�t	j
tdz�5|j
td�tdz�ddd�t	jtdz�ttdz�tt�y#1swY�GxYw#t	jtdz�ttdz�tt�wxYw)Nz/y�/krVz/y/a)
rr�rryr	r�r3rr(rr!s r�test_realpath_resolve_parentsz+PosixPathTest.test_realpath_resolve_parents6s���
	��H�H�V���H�H�V�d�]�#��J�J�v��}�f�t�m�4��%�%�f�t�m�4�
A�� � ��#�����@�
A�
���V�d�]�+��v��}�%��v��
A�
A��
���V�d�]�+��v��}�%��v��s$�A5C,�7#C �C,� C)�%C,�,?D+c�Z�	tjt�tjtdz�tjtdz�tjtdztdz�|j	ttdz�tdz�t
jtt��5|j	ttt�dz�tdz�ddd�t
jtdz�ttdz�ttdz�tt�y#1swY�YxYw#t
jtdz�ttdz�ttdz�tt�wxYw)Nr�z/k/yz/link-yz
/link-y/..)rr�rryr3rr	r�rrr(rr!s r�(test_realpath_resolve_before_normalizingz6PosixPathTest.test_realpath_resolve_before_normalizingIs"��	��H�H�V���H�H�V�d�]�#��H�H�V�f�_�%��J�J�v�����(:�;�
���X�f�|�&;�<�f�t�m�L��%�%�g�f�o�6�
0�� � ��(�6�*:�\�*I�!J�!'�$��0�
0�
���V�i�/�0��v���'��v��}�%��v��
0�
0��
���V�i�/�0��v���'��v��}�%��v��s%�CE�3E
�5E�
E�E�AF*c���	tjt�tjtdz�tjttdz�t	j
t
t��5tt�}|jt|dz�t�|jt|dz�tdz�ddd�t	jtdz�ttdz�tt�y#1swY�GxYw#t	jtdz�ttdz�tt�wxYw)Nr��linkzlink/k)rr�rryr	r�rrr3rr(r)r"�bases  r�test_realpath_resolve_firstz)PosixPathTest.test_realpath_resolve_firstes���	��H�H�V���H�H�V�d�]�#��J�J�v�v���/��%�%�g�f�o�6�
K���'��� � ��$��-�!8�&�A�� � ��$��/�!:�F�T�M�J�
K�

���V�f�_�-��v��}�%��v��
K�
K��

���V�f�_�-��v��}�%��v��s%�A8D#�:AD�D#�D �D#�#?E"c�j�tjd�c}t_	tjjtj��d}|j	t
tjd�|jt
jd�d�|jt
jt
jd��d�|jt
jd�d�|jt
jd�d�|jt
jdd�d|zd	z�|jt
jdd
�d|zdz�|jt
jdd�d
�|jt
jdd�d�|jt
jdd�d�|jt
jdd�d�|jt
jdd�d�|jt
jdd�d�|jt
jdd�d�|jt
jdd�d�|jt
jdd�d�|jt
jd	d	�d�|jt
jdd�d�|t_y#|t_wxYw)Nc��y)Nz/home/user/bar�r�rr�<lambda>z,PosixPathTest.test_relpath.<locals>.<lambda>y��r���r%rVrWz../a/bz../br�rYz../crZzb/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_relpathxse��$&�I�I�/H� ��b�i�	$��W�W�]�]�2�9�9�;�/��3�F����j�)�*;�*;�R�@����Y�.�.�s�3�S�9����Y�.�.�y�/@�/@��/E�F��L����Y�.�.�u�5�u�=����Y�.�.�x�8�(�C����Y�.�.�s�F�;�U�6�\�$�=N�O����Y�.�.�u�f�=�"�6�\�&�0�
2����Y�.�.�s�E�:�I�F����Y�.�.�s�C�8�#�>����Y�.�.�~�x�H�J`�a����Y�.�.�~�z�J�E�R����Y�.�.�~�s�C�]�S����Y�.�.�s�N�C�Z�P����Y�.�.�~�t�D�FV�W����Y�.�.�t�^�D�l�S����Y�.�.�s�C�8�#�>����Y�.�.�t�T�:�C�@����Y�.�.�v�v�>��D�#�B�I���B�I�s�K:L%�%
L2c��tjd�c}t_	tjjtj��d}|j	t
tjd�|jt
jd�d�|jt
jt
jd��d�|jt
jd�d�|jt
jd�d�|jt
jdd�d|zd	z�|jt
jdd
�d|zdz�|jt
jdd�d
�|jt
jdd�d�|jt
jdd�d�|jt
jdd�d�|jt
jdd�d�|jt
jdd�d�|jt
jdd�d�|jt
jdd�d�|jt
jdd�d�|jt
jd	d	�d�|jt
jdd�d�|j	ttjdd�|j	ttjdd�|t_y#|t_wxYw)Nc��y)Ns/home/user/barr�r�rrr�z2PosixPathTest.test_relpath_bytes.<locals>.<lambda>�r�rrrr`sa/bs../a/bs../bs../ras../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�rr4r�r3r�	TypeError)r"�real_getcwdbrs   r�test_relpath_bytesz PosixPathTest.test_relpath_bytes�s���&(�j�j�2L�"��r�z�	&��W�W�]�]�2�:�:�<�0��4�F����j�)�*;�*;�S�A����Y�.�.�t�4�d�;����Y�.�.�y�/@�/@��/F�G��N����Y�.�.�v�6��?����Y�.�.�y�9�9�E����Y�.�.�t�W�=�#�F�]�5�0�
2����Y�.�.�v�w�?�#�F�]�7�2�
4����Y�.�.�t�V�<�j�I����Y�.�.�t�T�:�D�A����Y�.�.��	�J�Lc�d����Y�.�.���L�f�U����Y�.�.���E�~�V����Y�.�.�t�_�E�{�S����Y�.�.���F�HY�Z����Y�.�.�u�o�F�
�V����Y�.�.�t�T�:�D�A����Y�.�.�u�e�<�d�C����Y�.�.�w��@�$�G����i��):�):�H�e�L����i��):�):�E�8�L�%�B�J���B�J�s�MM1�1
M>c�p���fd�}�fd�}�jttjg�|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��jttjd dg��jttjd d!g��jttjd"dg��jttjd
d#g��jttjd
d$g��jttjd%d#g�y)&Nc
����jtj|�|��jtj|D�cgc]}tj|���c}�tj|��ycc}wr)r3r4�
commonpathrr|)�pathsr��pr"s   �r�checkz,PosixPathTest.test_commonpath.<locals>.check�s[������Y�1�1�%�8�(�C����Y�1�1�5�2Q�a�2�;�;�q�>�2Q�R��[�[��2�
4��2Qs�Bc
�����j|tj|��j|tj|D�cgc]}tj|���c}�ycc}wr)r�r4r
rr|)�excrrr"s   �r�check_errorz2PosixPathTest.test_commonpath.<locals>.check_error�sL������c�9�#7�#7��?����c�9�#7�#7�7<�=�!�r�{�{�1�~�=�
?��=s�A&z/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)rrr)rrrz	spam/alotz
/spam/alots	/usr/lib/zusr/lib/python3susr/lib/s/usr/lib/python3susr/lib/python3zusr/lib/)r�rr4r
r)r"rrs`  r�test_commonpathzPosixPathTest.test_commonpath�sP���	4�	?�
	
���*�i�&:�&:�B�?��J����0��J����0�
�|�n�l�+�
�|�\�*�L�9�
�}�l�+�\�:�
�}�m�,�l�;�
�}�m�,�l�;�
�~�~�.��=�
�s�F�m�S�!�
�v�v���$�
�{�.�/��<�
�{�M�*�F�3�
�z�<�(�&�1�
�{�L�)�6�2�
�v�h���
�v�v���'�
�v�v���#�
�y�*�%�u�-�
�z�<�(�%�0�
�{�L�)�5�1�
�-�r�2�
�,�e�4�
�r�d�B��
�r�;���$��J��\� 2�3����)�Y�%9�%9�'�);�<�	>����)�Y�%9�%9�'�):�;�	=����)�Y�%9�%9�&�(:�;�	=����)�Y�%9�%9�&�(;�<�	>����)�Y�%9�%9�&�(:�;�	=����)�Y�%9�%9�%�':�;�	=r)0�__name__�
__module__�__qualname__r#r r6rGrOrTrfrjrlrnr}r�r�r	�skip_unless_symlinkr�r�skipIfr�r�r�r�r�r��sys�platformr�r�r�rr�r�r�r�r�r�r�r�r�r�r�r�rr
rr�rrrr's����2�
+�M�7�8&�:�4:�D�E�X�*?�:��"�"��#���X�_�_�U�d�]�$@�A�"�B�"�"�X�_�_�U�d�]�$@�A�"�B�"�*7�?�L� �X�_�_�S�\�\�Y�.�3�5�%G�5�%G�N1�N�f
3�'�J�'�J�'�C�'�C��"�"�&�%�'�#�%��"�"�&�%�'�#�%��"�"�&�%�'�#�%��"�"�&�%)�'�#�%)�N�"�"�&�%)�'�#�%)�N�"�"�&�
�'�#�
��"�"�&��'�#��"�"�"�&��'�#��"�"�"�&��'�#��4�"�"�&��'�#��"$�4&�<4=rrc��eZdZeZgd�Zy)�PosixCommonTest)r��samefile�sameopenfile�samestatN)rrrr4�
pathmodule�
attributesr�rrr#r#�s���J�D�Jrr#c��eZdZeZd�Zd�Zd�Zd�Zd�Z	d�Z
d�Zd�Zd	�Z
d
�Zd�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zy)�
PathLikeTestsc�8�tj|_ttj�|_|jtj|j�t|jdd�5}|jd�ddd�y#1swYyxYw)N�xbrstest_posixpath.PathLikeTests)	r	r)�	file_namer
�	file_path�
addCleanupr(rvrw)r"�files  rr#zPathLikeTests.setUp�sm��"�)�)���!�)�"2�"2�3������	�(�(�$�.�.�9�
�$�.�.�$��
*�	8�d��J�J�6�7�	8�	8�	8�s�5B�Bc�h�|j||j�||j��yr)r3r.r-)r"�funcs  r�assertPathEqualzPathLikeTests.assertPathEqual�s$������d�n�n�-�t�D�N�N�/C�Drc�N�|j|jj�yr)r3rL�normcaser!s r�test_path_normcasez PathLikeTests.test_path_normcase�������T�Y�Y�/�/�0rc�N�|j|jj�yr)r3rLrir!s r�test_path_isabszPathLikeTests.test_path_isabs�������T�Y�Y�_�_�-rc��|j|jjdtd�d�|jjddd��y)NrV�br�)r3rLr5r
r!s r�test_path_joinzPathLikeTests.test_path_joins;�����������X�c�]�C�@�������S�#�6�	8rc�N�|j|jj�yr)r3rLrFr!s r�test_path_splitzPathLikeTests.test_path_splitr:rc�N�|j|jj�yr)r3rLrJr!s r�test_path_splitextz PathLikeTests.test_path_splitextr7rc�N�|j|jj�yr)r3rL�
splitdriver!s r�test_path_splitdrivez"PathLikeTests.test_path_splitdrive
������T�Y�Y�1�1�2rc�N�|j|jj�yr)r3rLrcr!s r�test_path_splitrootz!PathLikeTests.test_path_splitroot
s�����T�Y�Y�0�0�1rc�N�|j|jj�yr)r3rLrr!s r�test_path_basenamez PathLikeTests.test_path_basenamer7rc�N�|j|jj�yr)r3rLrr!s r�test_path_dirnamezPathLikeTests.test_path_dirname������T�Y�Y�.�.�/rc�N�|j|jj�yr)r3rLrtr!s r�test_path_islinkzPathLikeTests.test_path_islinks�����T�Y�Y�-�-�.rc�N�|j|jj�yr)r3rLrur!s r�test_path_lexistszPathLikeTests.test_path_lexistsrLrc�N�|j|jj�yr)r3rLrr!s r�test_path_ismountzPathLikeTests.test_path_ismountrLrc�N�|j|jj�yr)r3rLr�r!s r�test_path_expanduserz"PathLikeTests.test_path_expanduserrErc�N�|j|jj�yr)r3rL�
expandvarsr!s r�test_path_expandvarsz"PathLikeTests.test_path_expandvars"rErc�N�|j|jj�yr)r3rLr�r!s r�test_path_normpathz PathLikeTests.test_path_normpath%r7rc�N�|j|jj�yr)r3rLrr!s r�test_path_abspathzPathLikeTests.test_path_abspath(rLrc�N�|j|jj�yr)r3rLrr!s r�test_path_realpathz PathLikeTests.test_path_realpath+r7rc�N�|j|jj�yr)r3rLr�r!s r�test_path_relpathzPathLikeTests.test_path_relpath.rLrc��|jj|j|jg�}|j	||j�yr)rLr
r.r-r3)r"�common_paths  r�test_path_commonpathz"PathLikeTests.test_path_commonpath1s7���i�i�*�*�D�N�N�D�N�N�+K�L������d�n�n�5rN)rrrr4rLr#r3r6r9r=r?rArDrGrIrKrNrPrRrTrWrYr[r]r_rbr�rrr*r*�sq���D�8�E�1�.�8�.�1�3�2�1�0�/�0�0�3�3�1�0�1�0�6rr*�__main__)rr4r rrrrrrr�test.supportrr	�test.support.os_helperr
rr��ImportErrorr)rrr�TestCaser�
CommonTestr#r*r�mainr�rr�<module>rjs���	��
��:�:�!�&�"�+����
��!�!�	"��=�
�}
=�H�%�%�}
=�@E�&�1�1�8�3D�3D�E�
G6�H�%�%�G6�T�Z���H�M�M�O���Q���E��s�B:�:C�C