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

�KeT�����ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlm
Z
ddlmZddlmZmZddlmZddlmZmZ	ddlZddlZn#e$rdxZZYnwxYwGd�de��ZGd	�d
eej��ZGd�deej��ZGd
�de��ZGd�deej��ZGd�deej��Z Gd�deej��Z!ej"�#e��Z$d�Z%d�Z&ej'ej(dkd��Z)ej'ej(dkd��Z*e*Gd�de����Z+e)Gd�de ����Z,Gd�de��Z-Gd �d!e-ej��Z.e*Gd"�d#e-ej����Z/e)Gd$�d%e-ej����Z0Gd&�d'ej��Z1e2d(krej3��dSdS))�N)�mock)�
import_helper)�
is_emscripten�is_wasi)�	os_helper)�TESTFN�FakePathc��eZdZd�Zd�ZdS)�_BaseFlavourTestc����|jj}|jj�|jj�|�fd�|D����}|�||���r/|�fd�|D����}|�||��dSdS)Nc�<��g|]}|�d�����S��/��replace)�.0�x�seps  ��;/usr/local/apps/python3/lib/python3.11/test/test_pathlib.py�
<listcomp>z7_BaseFlavourTest._check_parse_parts.<locals>.<listcomp> s'���5�5�5�A�A�I�I�c�3�'�'�5�5�5�c�<��g|]}|�d�����Srr)rr�altseps  �rrz7_BaseFlavourTest._check_parse_parts.<locals>.<listcomp>#s'���<�<�<�1��	�	�#�v�.�.�<�<�<r)�flavour�parse_partsrr�assertEqual)�self�arg�expected�f�actualrrs     @@r�_check_parse_partsz#_BaseFlavourTest._check_parse_partss������L�$���l�����$����5�5�5�5��5�5�5�6�6�������*�*�*��	/��Q�<�<�<�<��<�<�<�=�=�F����V�X�.�.�.�.�.�	/�	/rc��|j}|jj}|gddgf��|dgdddgf��|dgdddgf��|ddgddddgf��|dgddddgf��|dgddddgf��|gd�ddgd�f��|gd	�ddgd�f��|gd
�ddgd�f��|dgddgf��|gd�dddgf��|gd
�ddddgf��|gd�dddgf��|dgd||ddgf��|ddgd||ddgf��|ddgd||ddgf��|gd�d||ddgf��|gd�d||dgf��dS)N��a�a/�b�a/b�a/b/)r%zb/c�d)r%r'�cr*)r%zb//cr*)r%zb/c/r*�.)r,r,r')r%r,r')r%r,r,�/a/b�/a�/a/�r%�/br+r+)r%r1�/c)r"rr)r�checkrs   r�test_parse_parts_commonz(_BaseFlavourTest.test_parse_parts_common&sf���'���l���
��b�R��R�L�1�1�1�
��s�e�R��c�U�O�4�4�4�
��t�f�R��c�U�O�4�4�4�
��s�C�j�R��c�3�Z�$8�9�9�9�
��u�g�R��c�3�Z�$8�9�9�9�
��v�h�R��c�3�Z�$8�9�9�9�
�����R��-A�-A�-A�$B�C�C�C�
�� � � �R��-A�-A�-A�$B�C�C�C�
�� � � �R��-A�-A�-A�$B�C�C�C�
��s�e�R��R�L�1�1�1�
��o�o�o�R��c�U�O�4�4�4�
��o�o�o�R��c�3�Z�$8�9�9�9�
��o�o�o�R��c�U�O�4�4�4�
��v�h�R��s�C��o�$>�?�?�?�
��t�S�k�R��s�C��o�$>�?�?�?�
��u�c�l�R��s�C��o�$>�?�?�?�
�����R��s�C��o�$>�?�?�?�
�����R��s�C�j�$9�:�:�:�:�:rN)�__name__�
__module__�__qualname__r"r4�rrrrs2������/�/�/�;�;�;�;�;rrc�(�eZdZejZd�Zd�ZdS)�PosixFlavourTestc���|j}|ddgddgd�f��|ddgddgd�f��|d	dgddgd�f��|d
gddd
gf��|dgdddgf��|dgdddgf��dS)
N�//ar'r$�//)r=r%r'�///ar)rr%r'z////a�c:a�c:\a�\a�r"�rr3s  r�test_parse_partsz!PosixFlavourTest.test_parse_partsFs����'��	��u�c�l��T�3C�3C�3C�(D�E�E�E�
��v�s�m��S�/�/�/�(B�C�C�C�
��w��n��S�/�/�/�(B�C�C�C�
��u�g��R�%��(9�:�:�:�
��w�i��R�'��(;�<�<�<�
��u�g��R�%��(9�:�:�:�:�:rc�D�|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$�r$r$r$r%�r$r$r%r()r$r$r(r))r$r$r)r.)r$rr%r-)r$rr(�/a/b/)r$rr)r<)r$r=r%r>�///a/b�c:/a/b)r$r$rJ�\/a/b)r$r$rK�\a\b)r$r$rL�r�	splitrootr�rr s  r�test_splitrootzPosixFlavourTest.test_splitrootRs����L�"�������2����-�-�-������3����/�/�/������5���?�3�3�3������6���$4�5�5�5������4���.�1�1�1������6���$4�5�5�5������7���%6�7�7�7�	
�����5���?�3�3�3������6���N�3�3�3������8���&6�7�7�7������8���&8�9�9�9������8���&8�9�9�9������8���&8�9�9�9�9�9rN)r5r6r7�pathlib�_posix_flavourrrDrPr8rrr:r:Cs:�������$�G�
;�
;�
;�:�:�:�:�:rr:c�(�eZdZejZd�Zd�ZdS)�
NTFlavourTestc�0�|j}|dgdddgf��|dgdddgf��|dgdddgf��|dgddddgf��|d	gddddgf��|d
gddddgf��|dgddd
gf��|dgddd
gf��|dgddd
dgf��|gd�ddgd�f��|gd�ddgd�f��|gd�ddddgf��|gd�ddgd�f��|gd�ddddgf��|dgdddgf��|d gddddgf��|d d!gdddd"gf��|d#gd$dd%gf��|d&gd$dd%dgf��|gd'�ddgd(�f��|gd)�ddgd�f��|gd*�d+dgd,�f��dS)-N�c:r$�c:/�\�c:\rr?r%�c:/ar.�//a/b�\\a\b�\\a\b\�//a/b/�//a/b/cr+)r%zZ:br+�Z:)r`r'r+)r%zZ:/br+)�Z:\r'r+)r%z//b/cr*z\\b\cz\\b\c\r*)r%z	Z://b//c/�d/)rar'r+r*)r%z//b/c//r*z//?/c:/z\\?\c:z\\?\c:\z//?/c:/ar1r'z//?/UNC/b/cz\\?\UNC\b\cz\\?\UNC\b\c\z
//?/UNC/b/c/dr0)rXr'r+)zZ:/ar1r+)z//?/Z:/ar1r+z\\?\Z:)z\\?\Z:\r'r+rBrCs  rrDzNTFlavourTest.test_parse_partsjs����'��
��t�f��r�D�6�(:�;�;�;�
��u�g��t�f�X�(>�?�?�?�
��s�e��T�D�6�(:�;�;�;�
��u�g��r�D�#�;�(?�@�@�@�
��v�h��t�f�c�]�(C�D�D�D�
��t�f��T�D�#�;�(?�@�@�@�
��w�i��T�L�>�(J�K�K�K�
��x�j��T�L�>�(J�K�K�K�
��y�k��T�L�#�;N�(O�P�P�P�
������r�3C�3C�3C�(D�E�E�E�
�� � � ��t�5G�5G�5G�(H�I�I�I�
��!�!�!��T�L�#�;N�(O�P�P�P�
��&�&�&��t�5L�5L�5L�(M�N�N�N�
��#�#�#��T�L�#�;N�(O�P�P�P�
��y�k��d�]�O�(L�M�M�M�
��z�l��d�]�C�<P�(Q�R�R�R�
��z�4� ��d�]�C�<P�(Q�R�R�R�
��}�o�);�T�DX�CY�(Z�[�[�[�
����);�T�DX�Z]�C^�(_�`�`�`�
������T�3C�3C�3C�(D�E�E�E�
��!�!�!��t�5G�5G�5G�(H�I�I�I�
��%�%�%��d�<U�<U�<U�(V�W�W�W�W�Wrc��|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$rFr%rG�a\b)r$r$rdrA)r$rXr%rL)r$rXrdzc:a\b)rVr$rd�c:\a\b)rVrXrdz\\az\\\a/b)r$rXr(zc:\\a)rVrXr%zc:\\\a/b)rVrXr(r\)r\rXr$r]�	\\a\b\c\d)r\rX�c\dz\\\a\brMrOs  rrPzNTFlavourTest.test_splitroot�s���L�"�������2����-�-�-������3����/�/�/������6���$4�5�5�5������5���?�3�3�3������8���&8�9�9�9������8���&8�9�9�9������:���(<�=�=�=������7���_�5�5�5������;���):�;�;�;������9���'8�9�9�9������=�)�)�+>�?�?�?������:���(>�?�?�?������<���*@�A�A�A������+�,�,�.H�I�I�I�	
�����<���*<�=�=�=������7���_�5�5�5�5�5rN)r5r6r7rQ�_windows_flavourrrDrPr8rrrTrTgs>�������&�G� X� X� X�D6�6�6�6�6rrTc���eZdZgd�gd�d�Zd�Zd�Zd�Zd�Zd�Zd	�Z	d
�Z
d�Zd�Zd
�Z
d�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd �Z d!�Z!d"�Z"d#�Z#d$�Z$d%S)&�_BasePurePathTest)
�r%r')r&r')r%�b/)r&rl)r))za//b)za//b//)r$r%r')r%r$r')r%r'r$))r%�/b/cr*)r%z///b//crb)r.rmr*)rr'r$�c/d)rr$zb/c/d)r$�/b/c/d)r(roc��|�d��}|j|_|jj|_|jj|_dS�Nr%)�cls�_flavourrrr�r�ps  r�setUpz_BasePurePathTest.setUp�s6���H�H�S�M�M���z����<�#����l�)����rc	���|j}|d��}|�||��|ddd��|ddd��|d��|d��|td����|�||d����|d����|�||d��d��|d����|�||d��|d����|d����|�||d��|d��|d����|td������dS)Nr%r'r+r.�a/b/c�/a/b/cr()rr�assertIsInstancer	r�r�Prus   r�test_constructor_commonz)_BasePurePathTest.test_constructor_common�sr���H��
�A�c�F�F�����a��#�#�#�	��#�s�C����	��$��S����	��'�
�
�
�	��(����	��(�7�
�
���������1�1�S�6�6���A�A�c�F�F�+�+�+������1�1�S�6�6�3�����5���2�2�2������1�1�S�6�6�1�1�S�6�6�*�*�A�A�e�H�H�5�5�5������1�1�S�6�6�1�1�S�6�6�1�1�S�6�6�2�2�A�A�h�w�6G�6G�4H�4H�I�I�I�I�Irc����Gd�dt���|j}|�fd�|D���}|�|||���|jD]*}|�t|��t���+dS)Nc��eZdZdS)�:_BasePurePathTest._check_str_subclass.<locals>.StrSubclassN)r5r6r7r8rr�StrSubclassr��s�������Drr�c3�.�K�|]}�|��V��dS�Nr8)rrr�s  �r�	<genexpr>z8_BasePurePathTest._check_str_subclass.<locals>.<genexpr>�s+�����-�-�1���A���-�-�-�-�-�-r)�strrrr�parts�assertIs�type)r�argsr|ru�partr�s     @r�_check_str_subclassz%_BasePurePathTest._check_str_subclass�s����	�	�	�	�	�#�	�	�	��H��
�A�-�-�-�-��-�-�-�.������A�A�t�H�%�%�%��G�	+�	+�D��M�M�$�t�*�*�c�*�*�*�*�	+�	+rc���|�d��|�d��|�d��|�d��|�d��dS)Nr$r,r%za/b.txtz/a/b.txt�r��rs r�test_str_subclass_commonz*_BasePurePathTest.test_str_subclass_common�sl��� � ��$�$�$�� � ��%�%�%�� � ��%�%�%�� � ��+�+�+�� � ��,�,�,�,�,rc�>�|j}|d��}|�d��}|�||d����|�t	|��t	|����|�dd��}|�||d����|�|d����}|�||d����|�d��}|�||d����dS)Nr(r+rxr*�a/b/c/dr2)rr�joinpathrr�r��rr|ru�pps    r�test_join_commonz"_BasePurePathTest.test_join_common�s���H��
�A�e�H�H��
�Z�Z��_�_������Q�Q�w�Z�Z�(�(�(��
�
�d�2�h�h��Q���(�(�(�
�Z�Z��S�
!�
!������Q�Q�y�\�\�*�*�*�
�Z�Z���#���
�
������Q�Q�w�Z�Z�(�(�(�
�Z�Z��
�
������Q�Q�t�W�W�%�%�%�%�%rc�X�|j}|d��}|dz}|�||d����|�t|��t|����|dz}|�||d����|dzdz}|�||d����d|zdz}|�||d����||d��z}|�||d����|dz}|�||d����dS)	Nr(r+rxrnr�r*zc/a/b/dr2)rrrr�r�r�s    r�test_div_commonz!_BasePurePathTest.test_div_common�s6���H��
�A�e�H�H��
��W������Q�Q�w�Z�Z�(�(�(��
�
�d�2�h�h��Q���(�(�(�
��Y������Q�Q�y�\�\�*�*�*�
��W�s�]������Q�Q�y�\�\�*�*�*�
�1�W�s�]������Q�Q�y�\�\�*�*�*�
���3���Z������Q�Q�w�Z�Z�(�(�(�
��W������Q�Q�t�W�W�%�%�%�%�%rc��|j|�}|�t|��|�d|j����dS�Nr)rrrr�rr)rrr�rus    r�
_check_strz_BasePurePathTest._check_strsC���D�H�d�O������Q����!1�!1�#�t�x�!@�!@�A�A�A�A�Arc�j�dD]}|�||f���|�dd��dS)N�r%r(rxrr-ryr,)r$)r�)r�pathstrs  r�test_str_commonz!_BasePurePathTest.test_str_commonsD��C�	1�	1�G��O�O�G�g�Z�0�0�0�0�����U�#�#�#�#�#rc��|j}dD]3}|�||�����|���4dS)Nr�)rrr�as_posix)rr|r�s   r�test_as_posix_commonz&_BasePurePathTest.test_as_posix_commonsO���H��C�	=�	=�G����Q�Q�w�Z�Z�0�0�2�2�G�<�<�<�<�	=�	=rc��tj|j��}|j}|�t|d����d|zdz��dS)Nr(�a�b)�os�fsencoderrrr�bytes)rrr|s   r�test_as_bytes_commonz&_BasePurePathTest.test_as_bytes_commonsM���k�$�(�#�#���H������q�q��x�x���$��*�t�*;�<�<�<�<�<rc�P�|j}|�t��5|d�����ddd��n#1swxYwY|�t��5|�����ddd��dS#1swxYwYdSrq)rr�assertRaises�
ValueError�as_uri�rr|s  r�test_as_uri_commonz$_BasePurePathTest.test_as_uri_commons���H��
�
�
�z�
*�
*�	�	�
�A�c�F�F�M�M�O�O�O�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�z�
*�
*�	�	�
�A�C�C�J�J�L�L�L�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s#�A�A�A�1B�B�"Bc��dD�]J}|�|��}|jj}t|��}|�|�|dz��|��|�|�d��|��|t|��dzd�}|�t|��|�
����t|tj��}|�
|j|j��|�||��|�t|��|����LdS)Nr��(�)����)rr�	__class__r5�repr�
assertTrue�
startswith�endswith�lenr�evalr�rQ�__dict__r�)rr�ru�clsname�r�inner�qs       r�test_repr_commonz"_BasePurePathTest.test_repr_common s ��C�
	)�
	)�G�����!�!�A��k�*�G��Q���A��O�O�A�L�L��3��7�7��;�;�;��O�O�A�J�J�s�O�O�Q�/�/�/��c�'�l�l�Q�&��+�,�E����T�%�[�[�!�*�*�,�,�7�7�7��Q��(�)�)�A��M�M�!�+�q�{�3�3�3����Q��"�"�"����T�!�W�W�a�(�(�(�(�
	)�
	)rc��|j}|�|d��|d����|�|d��|dd����|�|d��|d����|�|d��|d����|�|d��|����|�|d��|d����|�|��|d����|�|��d��|�|��i��|�|��t��dS)Nr(r%r'r-rr$)rrr�assertNotEqual�intr�s  r�test_eq_commonz _BasePurePathTest.test_eq_common0sk���H�������5���1�1�U�8�8�,�,�,������5���1�1�S�#�;�;�/�/�/����A�A�e�H�H�a�a��f�f�-�-�-����A�A�e�H�H�a�a��i�i�0�0�0����A�A�e�H�H�a�a�c�c�*�*�*����A�A�f�I�I�q�q��v�v�.�.�.����A�A�C�C���3���(�(�(����A�A�C�C��$�$�$����A�A�C�C��$�$�$����A�A�C�C��%�%�%�%�%rc��|j}|�t|d��jd��|�t|d��jd��|�|d���d����|�|d���d����|�|d���d����|�|d���d����|�|d���d����|�|d	���d����|�|d
���d����|�|d���d����|�|d���d����|�|d���d����|�|d���d����|�|d
���d����|�|d
���d����|�|d���d����|�|d���d����|�|d���d����|�|d���d����|�|d���d����|�|d���d����|�|d���d����|�|d���d����|�|d���d����|�|d���d����|�|d���d����|�|d���d����|�|d���d����|�|d���d����dS)Nr%r$r,�b.py�a/b.py�/a/b.pyza.pyzb/pyz/a.pyzb.py/cz*.pyzb.pyczb./pyzab/c.pyza*/*.pyz
/d/ab/c.pyz	/dab/c.pyz	ab/c.py/d�/b.py�/*.pyz/a/*.pyz/ab.pyz	/a/b/c.pyz/**/*.pyz
/a/**/*.py)rrr�r��matchr��assertFalser�s  r�test_match_commonz#_BasePurePathTest.test_match_common=s����H�����*�a�a��f�f�l�B�7�7�7����*�a�a��f�f�l�C�8�8�8������&�	�	����/�/�0�0�0������(���)�)�&�1�1�2�2�2������)���*�*�6�2�2�3�3�3������6������0�0�1�1�1������6������0�0�1�1�1������7���)�)�&�1�1�2�2�2������8���*�*�6�2�2�3�3�3������&�	�	����/�/�0�0�0������(���)�)�&�1�1�2�2�2������)���*�*�6�2�2�3�3�3������7���)�)�&�1�1�2�2�2������7���)�)�&�1�1�2�2�2������8���*�*�6�2�2�3�3�3������)���*�*�9�5�5�6�6�6������,���-�-�i�8�8�9�9�9������6������3�3�4�4�4������;���-�-�i�8�8�9�9�9������;���-�-�i�8�8�9�9�9������'�
�
�(�(��1�1�2�2�2������6������1�1�2�2�2������8���*�*�7�3�3�4�4�4������9���+�+�G�4�4�5�5�5������)���*�*�9�5�5�6�6�6������8���*�*�9�5�5�6�6�6������;���-�-�i�8�8�9�9�9������;���-�-�j�9�9�:�:�:������+���,�,�\�:�:�;�;�;�;�;rc�P���fd�}�j}|d��}|d��}|d��}|d��}|||��|||��|||��|||��|||���j}|d��}|d��}|d��}|d	��}|||��|||��|||��|||��|||����t��5|��ikddd��dS#1swxYwYdS)
Nc�`����||����||��dSr�)�
assertLess�
assertGreater�r%r'rs  �rr�z:_BasePurePathTest.test_ordering_common.<locals>.assertLesses3����O�O�A�q�!�!�!����q�!�$�$�$�$�$rr%r(�abcr'r.r-z/abcr1)rrr��	TypeError)rr�r|r%r'r+r*s`      r�test_ordering_commonz&_BasePurePathTest.test_ordering_commoncs����	%�	%�	%�	%�	%�
�H��
�A�c�F�F��
�A�e�H�H��
�A�e�H�H��
�A�c�F�F���
�1�a�����
�1�a�����
�1�a�����
�1�a�����
�1�a�����H��
�A�d�G�G��
�A�f�I�I��
�A�f�I�I��
�A�d�G�G���
�1�a�����
�1�a�����
�1�a�����
�1�a�����
�1�a����
�
�
�y�
)�
)�	�	�
�A�C�C�"�H�H�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�?D�D�"Dc��|j}|j}|d��}|j}|�|d��|�||j��|d��}|j}|�||ddf��dS)Nr(rkr-r%r')rrrr�rr�)rrr|rur�s     r�test_parts_commonz#_BasePurePathTest.test_parts_commons����h���H��
�A�e�H�H���������
�+�+�+��
�
�e�Q�W�%�%�%�
�A�f�I�I����������c�3��0�0�0�0�0rc���|j}|d��}|�|���d��|�tj|��d��dS)Nr()r()rrr��
__fspath__r��fspathr{s   r�test_fspath_commonz$_BasePurePathTest.test_fspath_common�sT���H��
�A�e�H�H�����������1�1�1�����	�!���h�/�/�/�/�/rc	����j���D�]2\}}|�d�j��}|��jd��}||kr'|�fd�|D��z}|�|f����|��}|D]�}�j|�}��||d�|������t|��t|������t|��|����|�
��|������4dS)Nrc�F��g|]}t�fd�|D������S)c3�N�K�|]}|�d�j��V�� dS)rN)rr)rr�rs  �rr�zA_BasePurePathTest.test_equivalences.<locals>.<listcomp>.<genexpr>�s3�����D�D�$�$�,�,�s�D�H�5�5�D�D�D�D�D�Dr)�tuple)r�trs  �rrz7_BasePurePathTest.test_equivalences.<locals>.<listcomp>�sF���#�#�#���D�D�D�D�!�D�D�D�D�D�#�#�#rzfailed with args {})�equivalences�itemsrr�appendrrr�format�hashr�r�)r�k�tuples�canon�posix�pcanonr�rus`       r�test_equivalencesz#_BasePurePathTest.test_equivalences�s^����*�0�0�2�2�	6�	6�I�A�v��I�I�c�4�8�,�,�E��I�I�d�h��,�,�E���~�~��#�#�#�#�#�#�#�#����
�
�u�i�(�(�(��X�X�e�_�_�F��
6�
6���D�H�a�L��� � ��F�,A�,H�,H��,K�,K�L�L�L�� � ��a���$�v�,�,�7�7�7�� � ��Q����/�/�/�� � ������u�5�5�5�5�
6�	6�	6rc���|j}|d��}|�|j|d����|�|jj|d����|�|jjj|����|�|jjjj|����|d��}|�|j|d����|�|jj|d����|�|jjj|d����|�|jjjj|d����dS)Nrxr(r%ryr-r.r�rrr�parentr{s   r�test_parent_commonz$_BasePurePathTest.test_parent_common�sC���H��
�A�g�J�J�������1�1�U�8�8�,�,�,�������!�!�C�&�&�1�1�1�������/�����5�5�5�������/�6�����<�<�<�
�A�h�K�K�������1�1�V�9�9�-�-�-�������!�!�D�'�'�2�2�2�������/���3���8�8�8�������/�6���#���?�?�?�?�?rc�\�|j}|d��}|j}|�t|��d��|�|d|d����|�|d|d����|�|d|d����|�|d	|d����|�|d
|d����|�|d|d����|�|dd�|d��f��|�|dd�|d��|d��f��|�|dd	�|d��|d��f��|�|dd�|d��|d��f��|�|ddd�|d��|d��f��|�|ddd	�|d��|d��|d��f��|�t	|��|d��|d��|d��g��|�t��5|dddd��n#1swxYwY|�t��5|dddd��n#1swxYwY|�t��5||d<ddd��n#1swxYwY|d
��}|j}|�t|��d��|�|d|d����|�|d|d����|�|d|d����|�|d	|d����|�|d
|d����|�|d|d����|�|dd�|d��f��|�|dd�|d��|d��f��|�|dd	�|d��|d��f��|�|dd�|d��|d��f��|�|ddd�|d��|d��f��|�|ddd	�|d��|d��|d��f��|�t	|��|d��|d��|d��g��|�t��5|dddd��n#1swxYwY|�t��5|dddd��dS#1swxYwYdS)Nrx�rr(r�r%�r,r����������ryr-r.r)rr�parentsrr��listr��
IndexErrorr��rr|ru�pars    r�test_parents_commonz%_BasePurePathTest.test_parents_common�s,���H��
�A�g�J�J���i������S���1�%�%�%�����Q����5���*�*�*�����Q����3���(�(�(�����Q����3���(�(�(�����R��!�!�C�&�&�)�)�)�����R��!�!�C�&�&�)�)�)�����R��!�!�E�(�(�+�+�+�����Q�q�S��A�A�e�H�H�;�/�/�/�����R�a�R��1�1�U�8�8�Q�Q�s�V�V�"4�5�5�5�����S�b�S��A�A�e�H�H�a�a��f�f�#5�6�6�6�����Q�R�R��1�1�S�6�6�1�1�S�6�6�"2�3�3�3�����S�S�q�S��A�A�e�H�H�a�a��f�f�#5�6�6�6�����T�T�r�T��Q�Q�s�V�V�Q�Q�s�V�V�Q�Q�u�X�X�$>�?�?�?�����c���Q�Q�u�X�X�q�q��v�v�q�q��v�v�$>�?�?�?�
�
�
�z�
*�
*�	�	���G�G�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�z�
*�
*�	�	���F�F�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�y�
)�
)�	�	��C��F�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�A�h�K�K���i������S���1�%�%�%�����Q����6���+�+�+�����Q����4���)�)�)�����Q����3���(�(�(�����R��!�!�C�&�&�)�)�)�����R��!�!�D�'�'�*�*�*�����R��!�!�F�)�)�,�,�,�����Q�q�S��A�A�f�I�I�<�0�0�0�����R�a�R��1�1�V�9�9�a�a��g�g�"6�7�7�7�����S�b�S��A�A�f�I�I�q�q��w�w�#7�8�8�8�����Q�R�R��1�1�T�7�7�A�A�c�F�F�"3�4�4�4�����S�S�q�S��A�A�f�I�I�q�q��v�v�#6�7�7�7�����T�T�r�T��Q�Q�s�V�V�Q�Q�t�W�W�a�a��i�i�$@�A�A�A�����c���Q�Q�v�Y�Y���$�����3���$@�A�A�A�
�
�
�z�
*�
*�	�	���G�G�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�z�
*�
*�	�	���F�F�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	sZ�$	J9�9J=�J=�	K3�3K7�:K7�L*�*L.�1L.�	W&�&W*�-W*�	X!�!X%�(X%c���|j}|�|d��jd��|�|d��jd��|�|d��jd��dS)Nr(r$r-�rrr�driver�s  r�test_drive_commonz#_BasePurePathTest.test_drive_common�so���H�������5�����,�,�,������6����"�-�-�-������2����b�)�)�)�)�)rc�B�|j}|j}|�|d��jd��|�|d��jd��|�|d��j|��|�|d��j|��dS�Nr$r(rr-)rrrr�root�rr|rs   r�test_root_commonz"_BasePurePathTest.test_root_common�s����H���h�������2����R�(�(�(������5�����+�+�+������3����c�*�*�*������6�����-�-�-�-�-rc�B�|j}|j}|�|d��jd��|�|d��jd��|�|d��j|��|�|d��j|��dSr)rrrr�anchorrs   r�test_anchor_commonz$_BasePurePathTest.test_anchor_common�s����H���h�������2����r�*�*�*������5����"�-�-�-������3�����,�,�,������6���)�3�/�/�/�/�/rc�T�|j}|�|d��jd��|�|d��jd��|�|d��jd��|�|d��jd��|�|d��jd��|�|d��jd��|�|d��jd	��|�|d
��jd	��dS)Nr$r,rr(r'r-�/a/b/.r�r�r��rrr�namer�s  r�test_name_commonz"_BasePurePathTest.test_name_common�s���H�������2����R�(�(�(������3����b�)�)�)������3����b�)�)�)������5�����,�,�,������6�����-�-�-������8���)�3�/�/�/������8���)�6�2�2�2������9���*�F�3�3�3�3�3rc���|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)Nr$r,�..rr(r-r	r��.pyr��a/.hgrc�/a/.hgrc�a/.hg.rc�.rc�	/a/.hg.rc�
a/b.tar.gz�.gz�/a/b.tar.gz�a/Some name. Ending with a dot.� /a/Some name. Ending with a dot.�rrr�suffixr�s  r�test_suffix_commonz$_BasePurePathTest.test_suffix_commonsC���H�������2����r�*�*�*������3�����+�+�+������4�����,�,�,������3�����+�+�+������5����"�-�-�-������6���)�2�.�.�.������8���+�R�0�0�0������8���+�U�3�3�3������9���,�e�4�4�4������9���,�b�1�1�1������:���-�r�2�2�2������:���-�u�5�5�5������;���.��6�6�6������<���/��7�7�7������=�)�)�0�%�8�8�8������<�=�=�D�b�I�I�I������=�>�>�E�r�J�J�J�J�Jrc��|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)Nr$r,rr(r-r	r�rr�rrrrrr�.tarrrrr�rrr�suffixesr�s  r�test_suffixes_commonz&_BasePurePathTest.test_suffixes_commons4���H�������2�����,�,�,������3����"�-�-�-������3����"�-�-�-������5���*�B�/�/�/������6���+�R�0�0�0������8���-�r�2�2�2������8���-��w�7�7�7������9���.���8�8�8������9���.��3�3�3������:���/��4�4�4������:���/�%��9�9�9������;���0�5�'�:�:�:������<���1�F�E�?�C�C�C������=�)�)�2�V�U�O�D�D�D������<�=�=�F��K�K�K������=�>�>�G��L�L�L�L�Lrc���|j}|�|d��jd��|�|d��jd��|�|d��jd��|�|d��jd��|�|d��jd��|�|d��jd��|�|d��jd	��|�|d
��jd��|�|d��jd
��|�|d��jd��dS)Nr$r,rrr(r'r�r�.hgrcr�.hgr�b.tarr�Some name. Ending with a dot.�rrr�stemr�s  r�test_stem_commonz"_BasePurePathTest.test_stem_common+sb���H�������2����R�(�(�(������3����b�)�)�)������4����t�,�,�,������3����b�)�)�)������5�����,�,�,������8���)�3�/�/�/������9���*�G�4�4�4������:���+�U�3�3�3������<���-�w�7�7�7������<�=�=�B�8�	:�	:�	:�	:�	:rc�$�|j}|�|d���d��|d����|�|d���d��|d����|�|d���d��|d����|�|d���d��|d����|�|d���d��|d����|�|d	���d��|d����|�t|d
��jd��|�t|d��jd��|�t|d��jd��|�t|d��jd
��|�t|d��jd
��|�t|d��jd��|�t|d��jd��dS)Nr(�d.xmlza/d.xmlr-z/a/d.xmlr�r��
a/Dot ending.�/a/Dot ending.r$r,rr2�c/rn�rrr�	with_namer�r�r�s  r�test_with_name_commonz'_BasePurePathTest.test_with_name_common9s@���H�������5���+�+�G�4�4�a�a�	�l�l�C�C�C������6���,�,�W�5�5�q�q��}�}�E�E�E������8���.�.�w�7�7���9���F�F�F������9���/�/��8�8�!�!�J�-�-�H�H�H������?�+�+�5�5�g�>�>���)���M�M�M������+�,�,�6�6�w�?�?���:���O�O�O����*�a�a��e�e�o�w�?�?�?����*�a�a��f�f�&6��@�@�@����*�a�a��f�f�&6��@�@�@����*�a�a��h�h�&8�"�=�=�=����*�a�a��h�h�&8�$�?�?�?����*�a�a��h�h�&8�$�?�?�?����*�a�a��h�h�&8�%�@�@�@�@�@rc��|j}|�|d���d��|d����|�|d���d��|d����|�|d���d��|d����|�|d���d��|d	����|�|d
���d��|d����|�|d���d��|d����|�|d
���d��|d����|�t|d��jd��|�t|d��jd��|�t|d��jd��|�t|d��jd��|�t|d��jd��|�t|d��jd��|�t|d��jd��dS)Nr(r*za/dr-z/a/dr�za/d.pyr�z/a/d.pyrz/a/d.gzr,r-r$r,rr2r.rn�rrr�	with_stemr�r�r�s  r�test_with_stem_commonz'_BasePurePathTest.test_with_stem_commonIsv���H�������5���+�+�C�0�0�!�!�E�(�(�;�;�;������6���,�,�S�1�1�1�1�V�9�9�=�=�=������8���.�.�s�3�3�Q�Q�x�[�[�A�A�A������9���/�/��4�4�a�a�	�l�l�C�C�C������=�)�)�3�3�C�8�8�!�!�I�,�,�G�G�G������?�+�+�5�5�c�:�:�A�A�e�H�H�E�E�E������+�,�,�6�6�s�;�;�Q�Q�v�Y�Y�G�G�G����*�a�a��e�e�o�s�;�;�;����*�a�a��f�f�&6��<�<�<����*�a�a��f�f�&6��<�<�<����*�a�a��h�h�&8�"�=�=�=����*�a�a��h�h�&8�$�?�?�?����*�a�a��h�h�&8�$�?�?�?����*�a�a��h�h�&8�%�@�@�@�@�@rc���|j}|�|d���d��|d����|�|d���d��|d����|�|d���d��|d����|�|d���d��|d����|�|d���d��|d����|�|d���d��|d����|�t|d��jd��|�t|d	��jd��|�t|d
��jd��|�t|d��jd��|�t|d��jd
��|�t|d��jd	��|�t|d��jd��|�t|d��jd
��|�t|d��jd��|�t|d��jd��|�t|d��jd��|�t|d��j|jjdf��dS)Nr(rza/b.gzr-z/a/b.gzr�r�r$r,r�gz�/.gzrnz.c/.dz./.dz.d/.r*)rrr�with_suffixr�r�rrr�s  r�test_with_suffix_commonz)_BasePurePathTest.test_with_suffix_commonZs���H�������5���-�-�e�4�4�a�a��k�k�B�B�B������6���.�.�u�5�5�q�q��|�|�D�D�D������8���0�0��7�7���8���E�E�E������9���1�1�%�8�8�!�!�I�,�,�G�G�G������8���0�0��4�4�a�a��h�h�?�?�?������6���.�.�r�2�2�A�A�f�I�I�>�>�>����*�a�a��e�e�&7��?�?�?����*�a�a��f�f�&8�%�@�@�@����*�a�a��f�f�&8�%�@�@�@����*�a�a��h�h�&:�D�A�A�A����*�a�a��h�h�&:�C�@�@�@����*�a�a��h�h�&:�C�@�@�@����*�a�a��h�h�&:�F�C�C�C����*�a�a��h�h�&:�E�B�B�B����*�a�a��h�h�&:�G�D�D�D����*�a�a��h�h�&:�F�C�C�C����*�a�a��h�h�&:�F�C�C�C����*�a�a��h�h�&:��<�+�S�1�	3�	3�	3�	3�	3rc�4
�|j}|d��}|�t|j��|�t|jd��|�|�|����|d����|�|�d��|d����|�|�|d����|d����|�|�d��|d����|�|�d��|d����|�|�|d����|����|�|�d��|����|�|�dd��|����|�t
|j|d����|�t
|j|d����|�t
|j|d	����|�t
|j|d
����|d��}|�|�|d����|d����|�|�d��|d����|�|�|d
����|d����|�|�d
��|d����|�|�d
��|d����|�|�|d����|����|�|�d��|����|�t
|j|d����|�t
|j|d����|�t
|j|d����|�t
|j|����|�t
|jd��|�t
|j|d����dS)Nr(r�r$r%r'r&r+rx�a/cr.r-rr/r2ry�/a/c)rrr�r��relative_torr�r{s   r�test_relative_to_commonz)_BasePurePathTest.test_relative_to_commonssA���H��
�A�e�H�H�����)�Q�]�3�3�3����)�Q�]�D�9�9�9�������q�q�s�s�+�+�Q�Q�u�X�X�6�6�6�������r�*�*�A�A�e�H�H�5�5�5�������q�q��v�v�.�.���#���7�7�7�������s�+�+�Q�Q�s�V�V�4�4�4�������t�,�,�a�a��f�f�5�5�5�������q�q��x�x�0�0�!�!�#�#�6�6�6�������u�-�-�q�q�s�s�3�3�3�������s�C�0�0�!�!�#�#�6�6�6����*�a�m�Q�Q�s�V�V�<�<�<����*�a�m�Q�Q�w�Z�Z�@�@�@����*�a�m�Q�Q�u�X�X�>�>�>����*�a�m�Q�Q�t�W�W�=�=�=�
�A�f�I�I��������q�q��v�v�.�.���%���9�9�9�������s�+�+�Q�Q�u�X�X�6�6�6�������q�q��w�w�/�/���3���8�8�8�������t�,�,�a�a��f�f�5�5�5�������u�-�-�q�q��v�v�6�6�6�������q�q��y�y�1�1�1�1�3�3�7�7�7�������v�.�.�����4�4�4����*�a�m�Q�Q�t�W�W�=�=�=����*�a�m�Q�Q�x�[�[�A�A�A����*�a�m�Q�Q�v�Y�Y�?�?�?����*�a�m�Q�Q�S�S�9�9�9����*�a�m�R�8�8�8����*�a�m�Q�Q�s�V�V�<�<�<�<�<rc�N	�|j}|d��}|�t|j��|�t|jd��|�|�|������|�|�d����|�|�|d������|�|�d����|�|�|d������|�|�d����|�|�dd����|�|�|d������|�|�|d������|�|�|d	������|�|�|d
������|d��}|�|�|d������|�|�d����|�|�|d
������|�|�d
����|�|�d
����|�|�|d������|�|�d����|�|�|d������|�|�|d������|�|�|d������|�|�|������|�|�d����|�|�|d������dS)Nr(r�r$r%r&r'r+rxr<r.r-rr/r2ryr=)rrr�r��is_relative_tor�r�r{s   r�test_is_relative_to_commonz,_BasePurePathTest.test_is_relative_to_common�s����H��
�A�e�H�H�����)�Q�%5�6�6�6����)�Q�%5�t�<�<�<�����(�(�����-�-�.�.�.�����(�(��,�,�-�-�-�����(�(���3���0�0�1�1�1�����(�(��.�.�/�/�/�����(�(���5���2�2�3�3�3�����(�(��/�/�0�0�0�����(�(��c�2�2�3�3�3�����)�)�!�!�C�&�&�1�1�2�2�2�����)�)�!�!�G�*�*�5�5�6�6�6�����)�)�!�!�E�(�(�3�3�4�4�4�����)�)�!�!�D�'�'�2�2�3�3�3�
�A�f�I�I������(�(���3���0�0�1�1�1�����(�(��-�-�.�.�.�����(�(���4���1�1�2�2�2�����(�(��.�.�/�/�/�����(�(��/�/�0�0�0�����(�(���6���3�3�4�4�4�����(�(��0�0�1�1�1�����)�)�!�!�D�'�'�2�2�3�3�3�����)�)�!�!�H�+�+�6�6�7�7�7�����)�)�!�!�F�)�)�4�4�5�5�5�����)�)�!�!�#�#�.�.�/�/�/�����)�)�"�-�-�.�.�.�����)�)�!�!�C�&�&�1�1�2�2�2�2�2rc���|j}|d��}tdtjdz��D]�}tj||��}tj|��}|�|j|j��|�||��|�t|��t|����|�t|��t|������dS)Nr-rr�)rr�range�pickle�HIGHEST_PROTOCOL�dumps�loadsr�r�rr�r�)rr|ru�proto�dumpedr�s      r�test_pickling_commonz&_BasePurePathTest.test_pickling_common�s����H��
�A�f�I�I���1�f�5��9�:�:�	.�	.�E��\�!�U�+�+�F���f�%�%�B��M�M�"�,���4�4�4����R��#�#�#����T�"�X�X�t�A�w�w�/�/�/����S��W�W�c�!�f�f�-�-�-�-�
	.�	.rN)%r5r6r7r�rvr}r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr!r)r1r5r:r?rBrKr8rrrjrj�sF������
������
�
�L�*�*�*�J�J�J�
+�
+�
+�-�-�-�&�&�&�&�&�&�$B�B�B�$�$�$�=�=�=�=�=�=�
���)�)�)� &�&�&�$<�$<�$<�L���81�1�1�0�0�0�6�6�6�$
@�
@�
@�-�-�-�^*�*�*�.�.�.�0�0�0�	4�	4�	4�K�K�K�(M�M�M�&:�:�:�A�A�A� A�A�A�"3�3�3�2!=�!=�!=�F 3� 3� 3�D	.�	.�	.�	.�	.rrjc�R�eZdZejZd�Zd�Zd�Zd�Z	d�Z
d�Zd�Zd�Z
d	�Zd
S)�PurePosixPathTestc���|j}|�|d��jd��|�|d��jd��|�|d��jd��dS)Nr-rrIr[r=�rrrrr�s  r�	test_rootzPurePosixPathTest.test_root�sp���H�������6�����-�-�-������8���)�3�/�/�/������7����$�/�/�/�/�/rc��|j}|�|d��|d����|�|d��|d����|�|d��|d����dS)Nr(�A/br.r>r<)rrr�rr�s  r�test_eqzPurePosixPathTest.test_eq�s����H�����A�A�e�H�H�a�a��h�h�/�/�/������4���!�!�F�)�)�,�,�,����A�A�d�G�G�Q�Q�u�X�X�.�.�.�.�.rc�:�|j}|�|d�����d��|�|d�����d��|�|d�����d��dS)Nrzfile:///z/a/b.cz
file:///a/b.cz/a/b%#czfile:///a/b%25%23c)rrrr�r�s  r�test_as_urizPurePosixPathTest.test_as_uri�s����H�������3�������*�5�5�5������8���+�+�-�-��?�?�?������9���,�,�.�.�0D�E�E�E�E�Erc	�4�ddlm}|j}	tjd��n%#t
$r|�d��YnwxYw|�|d�����d|tjd����z��dS)Nr)�quote_from_bytes�éz1\xe9 cannot be encoded to the filesystem encodingu/a/bézfile:///a/b)	�urllib.parserWrrr�r��UnicodeEncodeError�skipTestrr�)rrWr|s   r�test_as_uri_non_asciiz'PurePosixPathTest.test_as_uri_non_ascii�s���1�1�1�1�1�1��H��	P��K�������!�	P�	P�	P��M�M�N�O�O�O�O�O�	P���������:���-�-�/�/�&�)9�)9�"�+�f�:M�:M�)N�)N�N�	P�	P�	P�	P�	Ps�$�A�Ac�v�|j}|�|d���d����dS)NzA.pyza.PY)rrr�r�r�s  r�
test_matchzPurePosixPathTest.test_match�s7���H�������6������0�0�1�1�1�1�1rc��|j}|�|�������|�|d�������|�|d�������|�|d�������|�|d�������|�|d�������|�|d�������|�|d�������dS)Nr%r)rr.rHr<r[�rrr��is_absoluter�r�s  r�test_is_absolutez"PurePosixPathTest.test_is_absolute�sA���H�����������*�*�+�+�+������3���+�+�-�-�.�.�.������6���.�.�0�0�1�1�1������#���*�*�,�,�-�-�-������$���+�+�-�-�.�.�.������'�
�
�.�.�0�0�1�1�1������%���,�,�.�.�/�/�/������'�
�
�.�.�0�0�1�1�1�1�1rc��|j}|�d|d�������|�d|d�������|�d|d�������|�d|d�������dS)NFr$r�/foo/barz/dev/con/PRN/NUL�rrr��is_reservedr�s  r�test_is_reservedz"PurePosixPathTest.test_is_reserved�s����H���
�
�e�Q�Q�r�U�U�.�.�0�0�1�1�1��
�
�e�Q�Q�s�V�V�/�/�1�1�2�2�2��
�
�e�Q�Q�z�]�]�6�6�8�8�9�9�9��
�
�e�Q�Q�1�2�2�>�>�@�@�A�A�A�A�Arc��|j}|d��}|�d��}|�||d����|d���d��}|�||d����|d���d��}|�||d����dS�Nr<r'r[r.z//cr2�rrr�rr�s    r�	test_joinzPurePosixPathTest.test_join�s����H��
�A�e�H�H��
�Z�Z��_�_������Q�Q�w�Z�Z�(�(�(�
�Q�t�W�W�
�
�e�
$�
$������Q�Q�u�X�X�&�&�&�
�Q�u�X�X�
�
�t�
$�
$������Q�Q�t�W�W�%�%�%�%�%rc�&�|j}|d��}|dz}|�||d����|d��dz}|�||d����|d��dz}|�||d����dSri�rrrr�s    r�test_divzPurePosixPathTest.test_divs����H��
�A�e�H�H��
��W������Q�Q�w�Z�Z�(�(�(�
�Q�t�W�W�u�_������Q�Q�u�X�X�&�&�&�
�Q�u�X�X��_������Q�Q�t�W�W�%�%�%�%�%rN)r5r6r7rQ�
PurePosixPathrrrPrSrUr\r^rbrgrkrnr8rrrMrM�s�������
�
�C�0�0�0�/�/�/�F�F�F�P�P�P�2�2�2�	2�	2�	2�B�B�B�&�&�&�	&�	&�	&�	&�	&rrMc�&�eZdZejZej���Ze�	gd�gd�dgddgd���d�Z
d�Zd	�Zd
�Z
d�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d�Z"d S)!�PureWindowsPathTest))rVr%)rVr&)rrVr%))rWr%)rVrr%)rVr.)z/zrWr%)z//x/yrWr%)r[)r[r+)r^r+)r?rZr^r_c�6�|�d��}|�t|��d��|�d��}|�t|��d��|�d��}|�t|��d��|�d��}|�t|��d��|�d	��}|�t|��d
��dS)Nrxza\b\czc:/a/b/czc:\a\b\cr[r]r_z\\a\b\c�	//a/b/c/drf)rrrr�rts  r�test_strzPureWindowsPathTest.test_str s����H�H�W��������Q����+�+�+��H�H�Z� � ������Q����/�/�/��H�H�W��������Q����.�.�.��H�H�Y��������Q����/�/�/��H�H�[�!�!������Q���!1�2�2�2�2�2rc��|�d��|�d��|�d��|�d��|�d��|�d��|�d��|�d��|�d	��dS)
NrVr?z	c:a\b.txtrYr@z
c:\a\b.txtz\\some\sharez\\some\share\az\\some\share\a\b.txtr�r�s r�test_str_subclassz%PureWindowsPathTest.test_str_subclass,s���� � ��&�&�&�� � ��'�'�'�� � ��.�.�.�� � ��(�(�(�� � ��)�)�)�� � ��0�0�0�� � �!2�3�3�3�� � �!5�6�6�6�� � �!<�=�=�=�=�=rc��|j}|�|d��|d����|�|d��|ddd����|�|d��|d����|�|d��|d����|�|d��|d����|�|d��|d	����|�|d
��|d����|�|d��|d
����dS)N�c:a/brVr%r'zd:a/brJr-za/BrR�C:a/B�c:A/b�//Some/SHARE/a/Bz//somE/share/A/b)rrrr�r�s  rrSzPureWindowsPathTest.test_eq7sK���H�������7���Q�Q�w�Z�Z�0�0�0������7���Q�Q�t�S�#�%6�%6�7�7�7����A�A�g�J�J���'�
�
�3�3�3����A�A�g�J�J���(���4�4�4����A�A�f�I�I�q�q��{�{�3�3�3������5���1�1�U�8�8�,�,�,������7���Q�Q�w�Z�Z�0�0�0������-�.�.���2D�0E�0E�F�F�F�F�Frc��|j}|�t��5|d�����ddd��n#1swxYwY|�t��5|d�����ddd��n#1swxYwY|�|d�����d��|�|d�����d��|�|d�����d��|�|d	�����d
��|�|d�����d��|�|d
�����d��|�|d�����d��dS)Nr-rxrWzfile:///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)rrr�r�r�rr�s  rrUzPureWindowsPathTest.test_as_uriCsW���H��
�
�
�z�
*�
*�	�	�
�A�f�I�I������	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�z�
*�
*�	 �	 �
�A�g�J�J������	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 ����	 �	 �	 �	 ������5�����*�*�M�:�:�:������:���-�-�/�/�1C�D�D�D������;���.�.�0�0�2I�J�J�J������<���/�/�1�1�3I�J�J�J������?�+�+�2�2�4�4�6J�K�K�K������/�0�0�7�7�9�9�2�	4�	4�	4������4�5�5�<�<�>�>�=�	?�	?�	?�	?�	?s#�A�A�A�1B�B�"Bc��|j}|�|d���d����|�|d���d����|�|d���d����|�|d���d����|�|d���d����|�|d���d����|�|d���d����|�|d���d����|�|d���d����|�|d���d����|�|d���d����|�|d	���d����|�|d	���d
����|�|d���d
����|�|d���d
����|�|d
���d����|�|d���d����|�|d���d����dS)Nzc:/b.pyr�zc:*.pyzc:/*.pyzd:/b.pyr�zc:b.pyr�z//some/share/a.pyz//some/share/*.pyz//other/share/a.pyz//some/share/a/b.pyzB.pyzb.PYz	c:/a/B.Pyz	C:/A/*.pYz//Some/Share/B.Pyz//somE/sharE/*.pY)rrr�r�r�r�s  rr�z%PureWindowsPathTest.test_match_commonSs����H�������)���*�*�7�3�3�4�4�4������)���*�*�8�4�4�5�5�5������)���*�*�9�5�5�6�6�6������9���+�+�I�6�6�7�7�7������6������1�1�2�2�2������6������2�2�3�3�3������6������3�3�4�4�4������8���*�*�7�3�3�4�4�4������8���*�*�9�5�5�6�6�6������7���)�)�(�3�3�4�4�4������7���)�)�)�4�4�5�5�5������-�.�.�4�4�W�=�=�>�>�>������-�.�.�4�4�5H�I�I�J�J�J������/�0�0�6�6�7J�K�K�L�L�L������0�1�1�7�7�8K�L�L�M�M�M������&�	�	����/�/�0�0�0������+���,�,�[�9�9�:�:�:������-�.�.�4�4�5H�I�I�J�J�J�J�Jrc�p���fd�}�j}|d��}|d��}|||����||k����||k��|d��}|d��}|||����||k����||k��dS)Nc�`����||����||��dSr�)�assertLessEqual�assertGreaterEqualr�s  �r�assertOrderedEqualzDPureWindowsPathTest.test_ordering_common.<locals>.assertOrderedEqualms5���� � ��A�&�&�&��#�#�A�q�)�)�)�)�)rrzryz//some/Share/A/br{)rrr�)rr�r|rur�s`    rr�z(PureWindowsPathTest.test_ordering_commonks����	*�	*�	*�	*�	*�
�H��
�A�g�J�J��
�A�g�J�J����1�a� � � �����Q���������Q�����
�A� �!�!��
�A� �!�!����1�a� � � �����Q���������Q������rc��|j}|d��}|j}|�|d��|d��}|j}|�|d��|d��}|j}|�|d��dS)Nrx)rVr%r'rJ)rYr%r'rs)r]r+r*)rrr�r)rr|rur�s    r�
test_partszPureWindowsPathTest.test_parts|s����H��
�A�g�J�J��������� 0�1�1�1�
�A�h�K�K��������� 2�3�3�3�
�A�k�N�N��������� 8�9�9�9�9�9rc��|j}|d��}|�|j|d����|�|jj|d����|�|jjj|d����|�|jjjj|d����|d��}|�|j|d����|�|jj|d����|�|jjj|d����|�|jjjj|d����|d	��}|�|j|d
����|�|jj|d����|�|jjj|d����dS)Nzz:a/b/czz:a/b�z:a�z:zz:/a/b/czz:/a/b�z:/a�z:/rsr_r[r�r{s   r�test_parentzPureWindowsPathTest.test_parent�s����H��
�A�i�L�L�������1�1�W�:�:�.�.�.�������!�!�E�(�(�3�3�3�������/���4���9�9�9�������/�6���$���@�@�@�
�A�j�M�M�������1�1�X�;�;�/�/�/�������!�!�F�)�)�4�4�4�������/���5���:�:�:�������/�6���%���A�A�A�
�A�k�N�N�������1�1�Y�<�<�0�0�0�������!�!�G�*�*�5�5�5�������/���7���<�<�<�<�<rc���|j}|d��}|j}|�t|��d��|�|d|d����|�|d|d����|�|dd�|d��f��|�|dd�|d��f��|�|dd�|d��|d��f��|�|dd�|d��f��|�|ddd�|d��f��|�|ddd�|d��|d��f��|�t	|��|d��|d��g��|�t��5|dddd��n#1swxYwY|d��}|j}|�t|��d��|�|d|d	����|�|d|d
����|�|dd�|d	��f��|�|dd�|d	��f��|�|dd�|d	��|d
��f��|�|dd�|d
��f��|�|ddd�|d	��f��|�|ddd�|d
��|d	��f��|�t	|��|d	��|d
��g��|�t��5|dddd��n#1swxYwY|d��}|j}|�t|��d��|�|d|d����|�|d|d
����|�|dd�|d��f��|�|dd�|d��f��|�|dd�|d��|d
��f��|�|dd�|d
��f��|�|ddd�|d��f��|�|ddd�|d
��|d��f��|�t	|��|d��|d
��g��|�t��5|dddd��dS#1swxYwYdS)Nzz:a/b/r�rr�r�r�r�zz:/a/b/r�r�rsr_r[)rrr�rr�r�r�r�r�s    r�test_parentsz PureWindowsPathTest.test_parents�s{���H��
�A�h�K�K���i������S���1�%�%�%�����Q����5���*�*�*�����Q����4���)�)�)�����Q�q�S��A�A�e�H�H�;�/�/�/�����S�b�S��A�A�e�H�H�;�/�/�/�����R�a�R��1�1�U�8�8�Q�Q�t�W�W�"5�6�6�6�����Q�R�R��1�1�T�7�7�*�-�-�-�����S�S�q�S��A�A�e�H�H�;�/�/�/�����T�T�r�T��Q�Q�t�W�W�a�a��h�h�$7�8�8�8�����c���Q�Q�u�X�X�q�q��w�w�$7�8�8�8�
�
�
�z�
*�
*�	�	���F�F�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�A�i�L�L���i������S���1�%�%�%�����Q����6���+�+�+�����Q����5���*�*�*�����Q�q�S��A�A�f�I�I�<�0�0�0�����Q�r�T��Q�Q�v�Y�Y�L�1�1�1�����R�a�R��1�1�V�9�9�a�a��h�h�"7�8�8�8�����Q�R�R��1�1�U�8�8�+�.�.�.�����S�S�q�S��A�A�f�I�I�<�0�0�0�����T�T�r�T��Q�Q�u�X�X�q�q��y�y�$:�;�;�;�����c���Q�Q�v�Y�Y���%���$9�:�:�:�
�
�
�z�
*�
*�	�	���F�F�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�A�k�N�N���i������S���1�%�%�%�����Q����9���.�.�.�����Q����7���,�,�,�����Q�q�S��A�A�i�L�L�?�3�3�3�����Q�r�T��Q�Q�y�\�\�O�4�4�4�����R�a�R��1�1�Y�<�<���7���"<�=�=�=�����Q�R�R��1�1�W�:�:�-�0�0�0�����S�S�q�S��A�A�i�L�L�?�3�3�3�����T�T�r�T��Q�Q�w�Z�Z���9���$>�?�?�?�����c���Q�Q�y�\�\�1�1�W�:�:�$>�?�?�?�
�
�
�z�
*�
*�	�	���F�F�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s6�	G3�3G7�:G7�	O)�)O-�0O-�
	W � W$�'W$c��|j}|�|d��jd��|�|d��jd��|�|d��jd��|�|d��jd��|�|d��jd��|�|d��jd��|�|d��jd��dS)	NrVrxrW�c:/a/b/r[r\r^rsr�r�s  r�
test_drivezPureWindowsPathTest.test_drive�s����H�������4�����-�-�-������7���)�4�0�0�0������5�����.�.�.������9���+�T�2�2�2������7���)�:�6�6�6������8���*�J�7�7�7������;���-�z�:�:�:�:�:rc��|j}|�|d��jd��|�|d��jd��|�|d��jd��|�|d��jd��|�|d��jd��|�|d��jd��|�|d	��jd��dS)
NrVr$rxrWrXr�r[r^rsrOr�s  rrPzPureWindowsPathTest.test_root�s����H�������4����r�*�*�*������7����"�-�-�-������5�����-�-�-������9���*�D�1�1�1������7����$�/�/�/������8���)�4�0�0�0������;���,�d�3�3�3�3�3rc��|j}|�|d��jd��|�|d��jd��|�|d��jd��|�|d��jd��|�|d��jd��|�|d��jd��|�|d	��jd��dS)
NrVrxrWrYr�r[r]r^rs)rrrrr�s  r�test_anchorzPureWindowsPathTest.test_anchor�s����H�������4�����.�.�.������7���*�D�1�1�1������5����&�1�1�1������9���,�f�5�5�5������7���*�L�9�9�9������8���+�\�:�:�:������;���.��=�=�=�=�=rc�T�|j}|�|d��jd��|�|d��jd��|�|d��jd��|�|d��jd��|�|d��jd��|�|d	��jd��|�|d
��jd��|�|d��jd��dS)NrVr$rWrxr'rJ�c:a/b.pyr��	c:/a/b.py�//My.py/Share.php�//My.py/Share.php/a/br
r�s  r�	test_namezPureWindowsPathTest.test_name�s���H�������4����r�*�*�*������5�����+�+�+������7����#�.�.�.������8���)�3�/�/�/������:���+�V�4�4�4������;���,�f�5�5�5������.�/�/�4�b�9�9�9������2�3�3�8�#�>�>�>�>�>rc��|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)NrVr$rWrxrJr�rr��	c:a/.hgrc�
c:/a/.hgrc�
c:a/.hg.rcr�c:/a/.hg.rc�c:a/b.tar.gzr�
c:/a/b.tar.gz�!c:a/Some name. Ending with a dot.�"c:/a/Some name. Ending with a dot.r�r�rr�s  r�test_suffixzPureWindowsPathTest.test_suffix�s/���H�������4�����,�,�,������5����"�-�-�-������7���*�B�/�/�/������8���+�R�0�0�0������:���-�u�5�5�5������;���.��6�6�6������;���.��3�3�3������<���/��4�4�4������<���/��7�7�7������=�)�)�0�%�8�8�8������>�*�*�1�5�9�9�9������?�+�+�2�E�:�:�:������>�?�?�F��K�K�K������?�@�@�G��L�L�L������.�/�/�6��;�;�;������2�3�3�:�B�?�?�?�?�?rc��|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)NrVrWrxrJr�rr�r�r�r�rr�r�rrr�r�r�r�r�rr�s  r�
test_suffixesz!PureWindowsPathTest.test_suffixessA���H�������4���)�2�.�.�.������5���*�B�/�/�/������7���,�b�1�1�1������8���-�r�2�2�2������:���/�%��9�9�9������;���0�5�'�:�:�:������;���0�"�5�5�5������<���1�2�6�6�6������<���1�E�7�;�;�;������=�)�)�2�U�G�<�<�<������>�*�*�3�f�e�_�E�E�E������?�+�+�4�v�u�o�F�F�F������.�/�/�8�"�=�=�=������2�3�3�<�b�A�A�A������>�?�?�H�"�M�M�M������?�@�@�I�2�N�N�N�N�Nrc���|j}|�|d��jd��|�|d��jd��|�|d��jd��|�|d��jd��|�|d��jd��|�|d	��jd��|�|d
��jd��|�|d��jd
��|�|d��jd��|�|d��jd��dS)NrVr$zc:.zc:..rrWrxr'r�r�r#r�r$r�r%r�r&r'r�s  r�	test_stemzPureWindowsPathTest.test_stemsd���H�������4����r�*�*�*������5�����+�+�+������6�����.�.�.������5�����+�+�+������7����#�.�.�.������:���+�S�1�1�1������;���,�g�6�6�6������<���-�u�5�5�5������>�*�*�/��9�9�9������>�?�?�D�8�	:�	:�	:�	:�	:rc�8�|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)Nrxr+z	c:a/d.xmlrJz
c:/a/d.xml�c:a/Dot ending.�c:/a/Dot ending.rVrW�
//My/Share�d:�d:e�d:/er/r�s  r�test_with_namez"PureWindowsPathTest.test_with_name%s����H�������7���-�-�g�6�6���+���G�G�G������8���.�.�w�7�7���<���I�I�I������,�-�-�7�7��@�@�!�!�K�.�.�Q�Q�Q������-�.�.�8�8��A�A�1�1�\�?�?�S�S�S����*�a�a��g�g�&7��A�A�A����*�a�a��h�h�&8�'�B�B�B����*�a�a��o�o�&?��I�I�I����*�a�a��j�j�&:�D�A�A�A����*�a�a��j�j�&:�E�B�B�B����*�a�a��j�j�&:�F�C�C�C����*�a�a��j�j�&:�L�I�I�I�I�Irc�8�|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)Nrxr*zc:a/drJzc:/a/dr�r�rVrWr�r�r�r�r3r�s  r�test_with_stemz"PureWindowsPathTest.test_with_stem3s����H�������7���-�-�c�2�2�A�A�g�J�J�?�?�?������8���.�.�s�3�3�Q�Q�x�[�[�A�A�A������,�-�-�7�7��<�<�a�a��j�j�I�I�I������-�.�.�8�8��=�=�q�q��{�{�K�K�K����*�a�a��g�g�&7��=�=�=����*�a�a��h�h�&8�#�>�>�>����*�a�a��o�o�&?��E�E�E����*�a�a��j�j�&:�D�A�A�A����*�a�a��j�j�&:�E�B�B�B����*�a�a��j�j�&:�F�C�C�C����*�a�a��j�j�&:�L�I�I�I�I�Irc���|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)Nrxrzc:a/b.gzrJz	c:/a/b.gzr�r�r$r,rr�r7rXrVr8z\.gzzc:.gzrnrgz.c/dz.c\d)rrrr9r�r�r�s  r�test_with_suffixz$PureWindowsPathTest.test_with_suffixAs����H�������7���/�/��6�6���*�
�
�F�F�F������8���0�0��7�7���;���H�H�H������:���2�2�5�9�9�1�1�Z�=�=�I�I�I������;���3�3�E�:�:�A�A�k�N�N�K�K�K����*�a�a��e�e�&7��?�?�?����*�a�a��f�f�&8�%�@�@�@����*�a�a��f�f�&8�%�@�@�@����*�a�a��o�o�&A�5�I�I�I����*�a�a��j�j�&<�d�C�C�C����*�a�a��j�j�&<�c�B�B�B����*�a�a��j�j�&<�d�C�C�C����*�a�a��j�j�&<�d�C�C�C����*�a�a��j�j�&<�f�E�E�E����*�a�a��j�j�&<�g�F�F�F����*�a�a��j�j�&<�g�F�F�F����*�a�a��j�j�&<�e�D�D�D����*�a�a��j�j�&<�f�E�E�E����*�a�a��j�j�&<�f�E�E�E����*�a�a��j�j�&<�g�F�F�F�F�Frc	�l�|j}|d��}|�|�|d����|d����|�|�d��|d����|�|�|d����|d����|�|�d��|d����|�|�d��|d����|�|�|d����|����|�|�d��|����|�t|j|����|�t|jd��|�t|j|d	����|�t|j|d
����|�t|j|d����|�t|j|d����|�t|j|d
����|�t|j|d����|�t|j|d����|d��}|�|�|d����|d����|�|�d��|d����|�t|�|d������d��|�t|�d����d��|�|�|d����|d����|�|�d��|d����|�|�|d����|d����|�|�d��|d����|�|�d��|d����|�|�|d����|����|�|�d��|����|�t|j|d����|�t|j|d����|�t|j|d����|�t|j|d����|�t|j|d	����|�t|j|d����|�t|j|d
����|�t|j|d����|�t|j|d����|d��}|�|�|d����|d����|�|�d��|d����|�|�d��|d����|�|�|d ����|d����|�|�d ��|d����|�|�d!��|d����|�|�|d"����|����|�|�d"��|����|�t|j|d#����|�t|j|d$����|�t|j|d%����|�t|j|d&����dS)'N�	C:Foo/BarrVzFoo/Bar�c:foO�Bar�c:foO/�	c:foO/baRr$r�r�Foo�/Foo�C:/Foo�
C:Foo/Bar/Baz�	C:Foo/Baz�
C:/Foo/Barz/Foo/Barz\Foo\BarrW�c:/foO�c:/foO/�
c:/foO/baR�C:/Baz�C:/Foo/Bar/Baz�
C:/Foo/Baz�C:Foo�d:/�//C/Foo�//Server/Share/Foo/Bar�//sErver/sHare�//sErver/sHare/�//sErver/sHare/Foo�//sErver/sHare/Foo/�//sErver/sHare/Foo/Bar�/Server/Share/Foo�c:/Server/Share/Foo�
//z/Share/Foo�//Server/z/Foo)rrrr>r�r�r�r{s   r�test_relative_toz$PureWindowsPathTest.test_relative_toYs����H��
�A�k�N�N��������q�q��w�w�/�/���9���>�>�>�������t�,�,�a�a�	�l�l�;�;�;�������q�q��z�z�2�2�A�A�e�H�H�=�=�=�������w�/�/���5���:�:�:�������x�0�0�!�!�E�(�(�;�;�;�������q�q��~�~�6�6�����<�<�<�������{�3�3�Q�Q�S�S�9�9�9����*�a�m�Q�Q�S�S�9�9�9����*�a�m�R�8�8�8����*�a�m�Q�Q�t�W�W�=�=�=����*�a�m�Q�Q�s�V�V�<�<�<����*�a�m�Q�Q�u�X�X�>�>�>����*�a�m�Q�Q�v�Y�Y�?�?�?����*�a�m�Q�Q�x�[�[�A�A�A����*�a�m�Q�Q��5G�5G�H�H�H����*�a�m�Q�Q�{�^�^�D�D�D�
�A�l�O�O��������q�q��w�w�/�/���:���?�?�?�������t�,�,�a�a�
�m�m�<�<�<�����Q�]�]�1�1�T�7�7�3�3�4�4�l�C�C�C�����Q�]�]�4�0�0�1�1�<�@�@�@�������q�q��x�x�0�0�!�!�I�,�,�?�?�?�������u�-�-�q�q��|�|�<�<�<�������q�q��{�{�3�3�Q�Q�u�X�X�>�>�>�������x�0�0�!�!�E�(�(�;�;�;�������y�1�1�1�1�U�8�8�<�<�<�������q�q����7�7�����=�=�=�������|�4�4�a�a�c�c�:�:�:����*�a�m�Q�Q�x�[�[�A�A�A����*�a�m�Q�Q�7G�5H�5H�I�I�I����*�a�m�Q�Q�|�_�_�E�E�E����*�a�m�Q�Q�w�Z�Z�@�@�@����*�a�m�Q�Q�t�W�W�=�=�=����*�a�m�Q�Q�u�X�X�>�>�>����*�a�m�Q�Q�s�V�V�<�<�<����*�a�m�Q�Q�v�Y�Y�?�?�?����*�a�m�Q�Q�y�\�\�B�B�B�
�A�&�'�'��������q�q�)9�':�':�;�;�Q�Q�y�\�\�J�J�J�������'7�8�8�!�!�I�,�,�G�G�G�������'8�9�9�1�1�Y�<�<�H�H�H�������q�q�)=�'>�'>�?�?���5���J�J�J�������';�<�<�a�a��h�h�G�G�G�������'<�=�=�q�q��x�x�H�H�H�������q�q�)A�'B�'B�C�C�Q�Q�S�S�I�I�I�������'?�@�@�!�!�#�#�F�F�F����*�a�m�Q�Q�7J�5K�5K�L�L�L����*�a�m�Q�Q�7L�5M�5M�N�N�N����*�a�m�Q�Q��5G�5G�H�H�H����*�a�m�Q�Q�7G�5H�5H�I�I�I�I�Irc���|j}|d��}|�|�|d������|�|�d����|�|�|d������|�|�d����|�|�d����|�|�|d������|�|�d����|�|�|������|�|�d����|�|�|d������|�|�|d������|�|�|d	������|�|�|d
������|�|�|d������|�|�|d������|�|�|d
������|d��}|�|�d����|�|�|d������|�|�|d������|�|�d����|�|�|d������|�|�d����|�|�|d������|�|�|d������|�|�|d������|�|�|d������|�|�|d������|�|�|d������|�|�|d������|�|�|d
������|�|�|d������|d��}|�|�|d������|�|�d����|�|�d����|�|�|d������|�|�d����|�|�d����|�|�|d������|�|�d����|�|�|d������|�|�|d ������|�|�|d!������|�|�|d"������dS)#Nr�rVr�r�r�r$r�rr�r�r�r�r�r�rWr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�)rrr�rAr�r{s   r�test_is_relative_toz'PureWindowsPathTest.test_is_relative_to�s����H��
�A�k�N�N������(�(���4���1�1�2�2�2�����(�(��.�.�/�/�/�����(�(���7���4�4�5�5�5�����(�(��1�1�2�2�2�����(�(��2�2�3�3�3�����(�(���;���8�8�9�9�9�����(�(��5�5�6�6�6�����)�)�!�!�#�#�.�.�/�/�/�����)�)�"�-�-�.�.�.�����)�)�!�!�D�'�'�2�2�3�3�3�����)�)�!�!�C�&�&�1�1�2�2�2�����)�)�!�!�E�(�(�3�3�4�4�4�����)�)�!�!�F�)�)�4�4�5�5�5�����)�)�!�!�H�+�+�6�6�7�7�7�����)�)�!�!�O�*<�*<�=�=�>�>�>�����)�)�!�!�K�.�.�9�9�:�:�:�
�A�l�O�O������(�(��.�.�/�/�/�����(�(���5���2�2�3�3�3�����(�(���8���5�5�6�6�6�����(�(��3�3�4�4�4�����(�(���<���9�9�:�:�:�����(�(��6�6�7�7�7�����)�)�!�!�H�+�+�6�6�7�7�7�����)�)�!�!�,<�*=�*=�>�>�?�?�?�����)�)�!�!�L�/�/�:�:�;�;�;�����)�)�!�!�G�*�*�5�5�6�6�6�����)�)�!�!�D�'�'�2�2�3�3�3�����)�)�!�!�E�(�(�3�3�4�4�4�����)�)�!�!�C�&�&�1�1�2�2�2�����)�)�!�!�F�)�)�4�4�5�5�5�����)�)�!�!�I�,�,�7�7�8�8�8�
�A�&�'�'������(�(���+;�)<�)<�=�=�>�>�>�����(�(�)9�:�:�;�;�;�����(�(�):�;�;�<�<�<�����(�(���+?�)@�)@�A�A�B�B�B�����(�(�)=�>�>�?�?�?�����(�(�)>�?�?�@�@�@�����(�(���+C�)D�)D�E�E�F�F�F�����(�(�)A�B�B�C�C�C�����)�)�!�!�,?�*@�*@�A�A�B�B�B�����)�)�!�!�,A�*B�*B�C�C�D�D�D�����)�)�!�!�O�*<�*<�=�=�>�>�>�����)�)�!�!�,<�*=�*=�>�>�?�?�?�?�?rc��|j}|�|�������|�|d�������|�|d�������|�|d�������|�|d�������|�|d�������|�|d�������|�|d�������|�|d�������|�|d	�������|�|d
�������|�|d�������|�|d�������|�|d
�������|�|d�������|�|d�������dS)Nr%r)rr.rHrVr?zc:a/b/rWrZr�r[r^r_rsr`r�s  rrbz$PureWindowsPathTest.test_is_absolute�s}���H�����������*�*�+�+�+������3���+�+�-�-�.�.�.������6���.�.�0�0�1�1�1������3���+�+�-�-�.�.�.������4���,�,�.�.�/�/�/������7���/�/�1�1�2�2�2������4���,�,�.�.�/�/�/������5���-�-�/�/�0�0�0������8���0�0�2�2�3�3�3������%���,�,�.�.�/�/�/������&�	�	�-�-�/�/�0�0�0������)���0�0�2�2�3�3�3������'�
�
�.�.�0�0�1�1�1������(���/�/�1�1�2�2�2������)���0�0�2�2�3�3�3������+���2�2�4�4�5�5�5�5�5rc��|j}|d��}|�d��}|�||d����|�d��}|�||d����|�d��}|�||d����|�d��}|�||d����|�d��}|�||d����|�d	��}|�||d����|�d
��}|�||d����dS)N�C:/a/b�x/y�
C:/a/b/x/y�/x/y�C:/x/y�D:x/y�D:/x/y�//host/share/x/y�c:x/y�c:/x/yrjr�s    rrkzPureWindowsPathTest.test_join�sm���H��
�A�h�K�K��
�Z�Z��
�
������Q�Q�|�_�_�-�-�-�
�Z�Z��
�
������Q�Q�x�[�[�)�)�)��Z�Z��
 �
 ������Q�Q�w�Z�Z�(�(�(�
�Z�Z��
!�
!������Q�Q�x�[�[�)�)�)�
�Z�Z�*�
+�
+������Q�Q�1�2�2�3�3�3��Z�Z��
 �
 ������Q�Q�|�_�_�-�-�-�
�Z�Z��
!�
!������Q�Q�x�[�[�)�)�)�)�)rc�.�|j}|d��}|�|dz|d����|�|dzdz|d����|�|dz|d����|�|dzdz|d����|�|d	z|d	����|�|d
zdz|d	����|�|dz|d����|�|d
zdz|d����|�|dz|d����|�|d
z|d����|�|dz|d����dS)Nr�r�r�r�yr�r�z/xr�zD:r�r�r�r�rmr{s   rrnzPureWindowsPathTest.test_div�s����H��
�A�h�K�K������U��A�A�l�O�O�4�4�4�����S��3����,���8�8�8�����V��Q�Q�x�[�[�1�1�1�����T��C����8���5�5�5�	
����W��a�a��j�j�1�1�1�����T��E�)�1�1�W�:�:�6�6�6�����X��q�q��{�{�3�3�3�����T��F�*�A�A�h�K�K�8�8�8�����/�/���3E�1F�1F�G�G�G�	
����W��a�a��o�o�6�6�6�����X��q�q��{�{�3�3�3�3�3rc�D	�|j}|�d|d�������|�d|d�������|�d|d�������|�d|d�������|�d|d�������|�d|d�������|�d|d	�������|�d|d
�������|�d|d�������|�d|d�������|�d|d
�������|�d|d�������|�d|d�������|�d|d�������|�d|d�������|�d|d�������|�d|d�������|�d|d�������|�d|d�������|�d|d�������|�d|d�������|�d|d�������|�d|d�������|�d|d�������dS)NFr$rrdz//my/share/nul/con/auxT�nul�aux�prn�conzconin$zconout$�COM1�LPT9ucom¹ucom²ulpt³zNUL.txtzPRN  z	AUX  .txtzCOM1:barzLPT9   :barzbar.com9zbar.lpt9zc:/baz/con/NULzc:/NUL/con/bazrer�s  rrgz$PureWindowsPathTest.test_is_reserveds����H���
�
�e�Q�Q�r�U�U�.�.�0�0�1�1�1��
�
�e�Q�Q�s�V�V�/�/�1�1�2�2�2��
�
�e�Q�Q�z�]�]�6�6�8�8�9�9�9��
�
�e�Q�Q�7�8�8�D�D�F�F�G�G�G��
�
�d�A�A�e�H�H�0�0�2�2�3�3�3��
�
�d�A�A�e�H�H�0�0�2�2�3�3�3��
�
�d�A�A�e�H�H�0�0�2�2�3�3�3��
�
�d�A�A�e�H�H�0�0�2�2�3�3�3��
�
�d�A�A�h�K�K�3�3�5�5�6�6�6��
�
�d�A�A�i�L�L�4�4�6�6�7�7�7��
�
�d�A�A�f�I�I�1�1�3�3�4�4�4��
�
�d�A�A�f�I�I�1�1�3�3�4�4�4��
�
�d�A�A�i�L�L�4�4�6�6�7�7�7��
�
�d�A�A�i�L�L�4�4�6�6�7�7�7��
�
�d�A�A�i�L�L�4�4�6�6�7�7�7�	
�
�
�d�A�A�i�L�L�4�4�6�6�7�7�7��
�
�d�A�A�g�J�J�2�2�4�4�5�5�5��
�
�d�A�A�k�N�N�6�6�8�8�9�9�9��
�
�d�A�A�j�M�M�5�5�7�7�8�8�8��
�
�d�A�A�m�,�,�8�8�:�:�;�;�;�	
�
�
�e�Q�Q�z�]�]�6�6�8�8�9�9�9��
�
�e�Q�Q�z�]�]�6�6�8�8�9�9�9��
�
�d�A�A�.�/�/�;�;�=�=�>�>�>��
�
�e�Q�Q�/�0�0�<�<�>�>�?�?�?�?�?rN)#r5r6r7rQ�PureWindowsPathrrrjr��copy�updatertrvrSrUr�r�r�r�r�r�rPr�r�r�r�r�r�r�r�r�r�rbrkrnrgr8rrrqrqs������
�
!�C�$�1�6�6�8�8�L����>�>�>�����.��O��
�
�
�
�
�
3�
3�
3�	>�	>�	>�
G�
G�
G�?�?�?� K�K�K�0 � � �"
:�
:�
:�=�=�=�$,�,�,�\;�;�;�4�4�4�>�>�>�	?�	?�	?�@�@�@�&O�O�O�&:�:�:�J�J�J�J�J�J�G�G�G�08J�8J�8J�t3@�3@�3@�j6�6�6�**�*�*�,4�4�4�(!@�!@�!@�!@�!@rrqc�.�eZdZejZd�Zd�Zd�ZdS)�PurePathTestc���|�d��}|�t|��tjdkrt
jnt
j��dS�Nr%�nt)rrr�r�r�rrQr�rorts  r�test_concrete_classz PurePathTest.test_concrete_class-sV���H�H�S�M�M���
�
�d�1�g�g�')�w�$���G�#�#�G�<Q�	S�	S�	S�	S�	Src��tjd��}tjd��}|�||��dSrq)rQror�r��rrur�s   r�test_different_flavours_unequalz,PurePathTest.test_different_flavours_unequal2s>���!�#�&�&���#�C�(�(�����A�q�!�!�!�!�!rc��tjd��}tjd��}|�t��5||kddd��n#1swxYwY|�t��5||kddd��n#1swxYwY|�t��5||kddd��n#1swxYwY|�t��5||kddd��dS#1swxYwYdSrq)rQror�r�r�r�s   r�!test_different_flavours_unorderedz.PurePathTest.test_different_flavours_unordered7s����!�#�&�&���#�C�(�(��
�
�
�y�
)�
)�	�	�
��E�E�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�y�
)�
)�	�	�
��F�F�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�y�
)�
)�	�	�
��E�E�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�y�
)�
)�	�	�
��F�F�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	sH�A�A�A�;B�B�B�3C�C
�
C
�+C?�?D�DN)	r5r6r7rQ�PurePathrrr�r�r�r8rrr�r�*sL������
�
�C�S�S�S�
"�"�"�

�
�
�
�
rr�c�:�tjjtg|�R�Sr�)r��path�join�BASE�rs r�<lambda>r�Js��"�'�,�t�(�a�(�(�(�rc�:�tjjtg|�R�Sr�)r�r�r�rr�s rr�r�Ks��b�g�l�6�.�A�.�.�.�rr�z)test requires a Windows-compatible systemz'test requires a POSIX-compatible systemc��eZdZejZdS)�PosixPathAsPureTestN)r5r6r7rQ�	PosixPathrrr8rrrrRs������
�
�C�C�Crrc�(�eZdZejZd�Zd�ZdS)�WindowsPathAsPureTestc��|j}|�t��5|d�����ddd��dS#1swxYwYdS�NrW)rrr��NotImplementedError�ownerr�s  r�
test_ownerz WindowsPathAsPureTest.test_ownerZ����H��
�
�
�2�
3�
3�	�	�
�A�e�H�H�N�N����	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	��A
�
A�Ac��|j}|�t��5|d�����ddd��dS#1swxYwYdSr)rrr�r�groupr�s  r�
test_groupz WindowsPathAsPureTest.test_group_r
rN)r5r6r7rQ�WindowsPathrrr	rr8rrrrVs:������
�
�C����
����rrc��eZdZ	d�Zejdkrd�Znd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
ejedud
���d���Zd�Zd�Zejed��d���Zd�Zd�Zd�Zd�Zd�Zd�Zejd���Zd�Zd�Z d�Z!ejd���Z"d�Z#d �Z$ejd!���Z%ded#�Z&e&xZ'Z(ejd$���Z)ejd%���Z*d&�Z+d'�Z,ej-d(���Z.e/ej-d)�����Z0ej-d*���Z1ejd+���Z2d,�Z3ejd-���Z4d.�Z5ej6ed/��d0���Z7ej6e8d1��d2���Z9d3�Z:d4�Z;d5�Z<ej6e=ed6��d7��d8���Z>ej6e=ed6��d7��d9���Z?eje=ed6��d:��d;���Z@d<�ZAd=�ZBejd>���ZCd?�ZDd@�ZEdA�ZFdB�ZGdC�ZHdD�ZIejeJdE��dF���ZKeLdG���ZMdH�ZNdI�ZOdJ�ZPejdK���ZQdL�ZRdM�ZSe/dN���ZTdO�ZUdP�ZVej6e=edQ��dR��ejeWjXdSkdT��dU�����ZYdV�ZZej6e=e[dW��dX��ejeJdY��ejedZ��d[�������Z\d\�Z]d]�Z^d^�Z_d_�Z`d`�Zada�Zbejdb���Zcejdc���Zdejdd���ZedS)f�
_BasePathTestc�,�d�}|�|��tjt��tjt	d����tjt	d����tjt	d����tjt	dd����tjt	d����tt	d��d��5}|�d	��ddd��n#1swxYwYtt	dd
��d��5}|�d��ddd��n#1swxYwYtt	dd��d��5}|�d
��ddd��n#1swxYwYtt	dd��d��5}|�d��ddd��n#1swxYwYtt	ddd��d��5}|�d��ddd��n#1swxYwYtjt	d��d��tj	���rtj
dt	d����tj
dt	d����|�dt	d����|�tj�dd��t	dd����|�tj�dd��t	dd����tj
dt	d����dSdS)Nc�|�tjtd��d��tjt
��dS)N�dirE�)r��chmodr�r�rmtreer�r8rr�cleanupz$_BasePathTest.setUp.<locals>.cleanup}s1���H�T�&�\�\�5�)�)�)���T�"�"�"�"�"r�dirA�dirB�dirC�dirDr�fileA�wbsthis is file A
�fileBsthis is file B
�fileCsthis is file C
z	novel.txtsthis is a novel
�fileDsthis is file D
r�linkA�non-existing�
brokenLink�linkBr�linkC�linkD�brokenLinkLoop)
�
addCleanupr��mkdirr�r��open�writerr�can_symlink�symlink�dirlinkr�)rrr s   rrvz_BasePathTest.setUp|s��	#�	#�	#�	
���� � � �
������
���f������
���f������
���f������
���f�f�%�%�&�&�&�
���f������
�$�w�-�-��
&�
&�	)�!�
�G�G�'�(�(�(�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)�
�$�v�w�'�'��
.�
.�	)�!�
�G�G�'�(�(�(�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)�
�$�v�w�'�'��
.�
.�	)�!�
�G�G�'�(�(�(�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)�
�$�v�{�+�+�T�
2�
2�	*�a�
�G�G�(�)�)�)�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*�
�$�v�v�w�/�/��
6�
6�	)�!�
�G�G�'�(�(�(�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)�
���f���q�!�!�!�� �"�"�		B��J�w��W�
�
�.�.�.��J�~�t�L�'9�'9�:�:�:��L�L���g���/�/�/��L�L�����d�F�3�3�T�&�'�5J�5J�K�K�K��L�L�����d�F�3�3�T�&�'�5J�5J�K�K�K��J�'�$�/?�*@�*@�A�A�A�A�A�		B�		BsZ�5D�D�D�E"�"E&�)E&�F-�-F1�4F1�G8�8G<�?G<�"I�I�Ir�c�4�tj||d���dS)NT��target_is_directory�r�r.�r�src�dests   rr/z_BasePathTest.dirlink�s���J�s�D�d�;�;�;�;�;�;rc�0�tj||��dSr�r3r4s   rr/z_BasePathTest.dirlink�s���J�s�D�!�!�!�!�!rc��|�tj�t	|��t	|����|�d|�d���dS)Nz and z don't point to the same file)r�r�r��samefiler��r�path_a�path_bs   r�
assertSamez_BasePathTest.assertSame�sT�������(�(��V���c�&�k�k�B�B�������)�	*�	*�	*�	*�	*rc���|�t��5}||i|��ddd��n#1swxYwY|�|jjtj��dSr�)r��FileNotFoundErrorr�	exception�errno�ENOENT)r�funcr��kwargs�cms     r�assertFileNotFoundz _BasePathTest.assertFileNotFound�s���
�
�
�0�
1�
1�	"�R��D�$�!�&�!�!�!�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"������+�U�\�:�:�:�:�:s�	0�4�4c��|�tj�|��tj�|����dSr�)rr�r��normcaser:s   r�assertEqualNormCasez!_BasePathTest.assertEqualNormCase�s>�������)�)�&�1�1�2�7�3C�3C�F�3K�3K�L�L�L�L�Lrc��|�tj����}|�||��|�t|��t|����|�t|��t|����|�|�	����dSr�)
rrr��getcwdrrIr�r�r�r�rar�s   r�	_test_cwdz_BasePathTest._test_cwd�s����H�H�R�Y�[�[�!�!������A����� � ��Q����Q���0�0�0��
�
�d�1�g�g�t�A�w�w�'�'�'�����
�
���(�(�(�(�(rc�b�|j���}|�|��dSr�)rr�cwdrLrts  r�test_cwdz_BasePathTest.test_cwd�s)���H�L�L�N�N�����q�����rc
��|j}tjd��5}t|_|�t
|�������t��|�t
|d�������t��|�t
|d�������tj	�
td����|�t
|ddd�������tj	�
tddd����|�t
|dd�������tj	�
tdd����|�t
|d�������tj	�
td����|�t
|d	�������tj	�
td	����|�t
|d
�������tj	�
td
����|�t
|dd
�������tj	�
tdd
����|�t
|d
d�������tj	�
td
d����ddd��dS#1swxYwYdS)N�	os.getcwdr,r%r'r+r%rr$r(r)rrr�patchr��return_valuerr��absoluter�r�r�)rr|rKs   r�test_absolute_commonz"_BasePathTest.test_absolute_common�s)���H��
�Z��
$�
$�	Z��"&�F��
���S���������0�0�$�7�7�7����S���3�����!2�!2�3�3�T�:�:�:����S���3�����!2�!2�3�3�R�W�\�\�$��5L�5L�M�M�M����S���3��S�!1�!1�!:�!:�!<�!<�=�=�r�w�|�|�D�RU�WZ�\_�?`�?`�a�a�a�
���S���7�G�!4�!4�!=�!=�!?�!?�@�@�"�'�,�,�t�U\�^e�Bf�Bf�g�g�g����S���<���!9�!9�!;�!;�<�<�b�g�l�l�4�Q]�>^�>^�_�_�_����S���#3�!4�!4�!=�!=�!?�!?�@�@�"�'�,�,�t�Ue�Bf�Bf�g�g�g�
���S���4���!1�!1�!3�!3�4�4�b�g�l�l�4��6N�6N�O�O�O����S���3����!6�!6�!8�!8�9�9�2�7�<�<��c�SW�;X�;X�Y�Y�Y����S���4����!6�!6�!8�!8�9�9�2�7�<�<��d�TW�;X�;X�Y�Y�Y�#	Z�	Z�	Z�	Z�	Z�	Z�	Z�	Z�	Z�	Z�	Z�	Z����	Z�	Z�	Z�	Z�	Z�	Zs�N$O
�
O�Oc��|�tj�d����}|�||��|�t
|��t
|����|�t|��t|����|�	|�
����dS)N�~)rrr�r��
expanduserrrIr�r�r�r�rar�s   r�
_test_homez_BasePathTest._test_home�s����H�H�R�W�'�'��,�,�-�-������A����� � ��Q����Q���0�0�0��
�
�d�1�g�g�t�A�w�w�'�'�'�����
�
���(�(�(�(�(rNz(Test requires pwd module to get homedir.)�reasonc�.�tj��5}|�|j�����|���tj�td��|d<|�|j�����tj�td��|d<|�|j�����ddd��dS#1swxYwYdS)N�userprofile�USERPROFILE�home�HOME)
r�EnvironmentVarGuardrYrrr^�clearr�r�r�r�)r�envs  r�	test_homez_BasePathTest.test_home�s
���
*�
,�
,�		-���O�O�D�H�M�M�O�O�,�,�,��I�I�K�K�K�!#����d�M�!B�!B�C�
���O�O�D�H�M�M�O�O�,�,�,��'�,�,�t�V�4�4�C��K��O�O�D�H�M�M�O�O�,�,�,�		-�		-�		-�		-�		-�		-�		-�		-�		-�		-�		-�		-����		-�		-�		-�		-�		-�		-s�C)D
�
D�Dc�Z�tj�td��}tj�tdd��}|�|��}|�|��}|�|��}|�|�|����|�|�|����|�|�|����|�|�|����tj�td��}|�|��}|�t|j|��|�t|j|��|�t|j|��|�t|j|��|�t|j|��|�t|j|��dS)Nrrr�foo)
r�r�r�r�rrr�r9r�r�r?)r�
fileA_path�
fileB_pathrur�r��non_existentr�s        r�
test_samefilez_BasePathTest.test_samefile�s����W�\�\�$��0�0�
��W�\�\�$���8�8�
��H�H�Z� � ��
�X�X�j�
!�
!���H�H�Z� � ������
�
�:�.�.�/�/�/�����
�
�2���'�'�'�������J�/�/�0�0�0�������A���'�'�'��w�|�|�D�%�0�0���H�H�\�"�"�����+�Q�Z��;�;�;����+�Q�Z��F�F�F����+�Q�Z��;�;�;����+�Q�Z��F�F�F����+�Q�Z��;�;�;����+�Q�Z��F�F�F�F�Frc��|�d��}|�|���tjd����dS)Nr$r,)rrr�statr�rts  r�test_empty_pathz_BasePathTest.test_empty_path�s=���H�H�R�L�L����������2�7�3�<�<�0�0�0�0�0rzWASI has no user accounts.c��|j}|d��}|�|���|tj�d������|d��}|�|���|��|d��}|�|���|��|d��}|�|���|��||d�����j��dz}|�|���|��dS)NrWre�/~�../~r$)rrrrXr�r�rTrr{s   r�test_expanduser_commonz$_BasePathTest.test_expanduser_commons���H��
�A�c�F�F������������2�7�+=�+=�c�+B�+B�)C�)C�D�D�D�
�A�e�H�H�����������+�+�+�
�A�d�G�G�����������+�+�+�
�A�f�I�I�����������+�+�+�
�A�a�a��e�e�n�n���%�&�&��,�����������+�+�+�+�+rc��|j}|t��}|�d|�����|�d|dz�����|�d|dz�����|�d|dzdz�����t	j��r�|�d|dz�����|�d|dz�����|�d|dzdz�����|�d|dzdz�����|�d|d	z�����|�d|d
�������|�d|tdz�������|�d|tdz�������dS)
NTrrF�bahr"r%rrez/xyzzyu��)rrr�r��existsrr-r{s   r�test_existsz_BasePathTest.test_existss����H��
�A�d�G�G���
�
�d�A�H�H�J�J�'�'�'��
�
�d�Q��Z�/�/�1�1�2�2�2��
�
�d�Q��[�0�0�2�2�3�3�3��
�
�e�a�'�k�E�1�9�9�;�;�<�<�<�� �"�"�	A��M�M�$��W�� 4� 4� 6� 6�7�7�7��M�M�$��W�� 4� 4� 6� 6�7�7�7��M�M�$��W��w�!6� >� >� @� @�A�A�A��M�M�%�!�g�+��"5�!=�!=�!?�!?�@�@�@��
�
�e�a�%�i�/�/�1�1�2�2�2��
�
�e�Q�Q�x�[�[�/�/�1�1�2�2�2��
�
�e�Q�Q�t�h��/�/�6�6�8�8�9�9�9��
�
�e�Q�Q�t�f�}�-�-�4�4�6�6�7�7�7�7�7rc�X�|�t��}|dz�d��5}|�|tj��|�|���d��ddd��n#1swxYwY|dz�d��5}|�|tj��|�|����	��d��ddd��n#1swxYwY|dz�dd���5}|�|tj
��|�|����	��d��ddd��dS#1swxYwYdS)Nrr�zthis is file A
�rb�this is file Ar)�	buffering)rrr�r+rz�io�
TextIOBaser�read�BufferedIOBase�strip�	RawIOBase)rrur s   r�test_open_commonz_BasePathTest.test_open_common!sD���H�H�T�N�N���'�k�
�
��
$�
$�	;���!�!�!�R�]�3�3�3����Q�V�V�X�X�'9�:�:�:�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;����	;�	;�	;�	;��'�k�
�
��
%�
%�	B���!�!�!�R�%6�7�7�7����Q�V�V�X�X�^�^�-�-�/@�A�A�A�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B����	B�	B�	B�	B��'�k�
�
���
�
2�
2�	B�a��!�!�!�R�\�2�2�2����Q�V�V�X�X�^�^�-�-�/@�A�A�A�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B����	B�	B�	B�	B�	B�	Bs8�A	B�B�B�+AD�D�D�7AF�F#�&F#c�^�|�t��}|dz�d��|�|dz���d��|�t|dzjd��|�|dz���d��dS)Nrsabcdefg�somestr)rrr��write_bytesr�
read_bytesr�r�rts  r�test_read_write_bytesz#_BasePathTest.test_read_write_bytes-s����H�H�T�N�N��	
�W��!�!�*�-�-�-����!�g�+�1�1�3�3�Z�@�@�@����)�a�'�k�%>�	�J�J�J����!�g�+�1�1�3�3�Z�@�@�@�@�@rc�l�|�t��}|dz�dd���|�|dz�dd���d��|�t|dzjd	��|�|dz�d���d��dS)
Nruäbcdefgzlatin-1��encodingzutf-8�ignore)r��errors�bcdefgs	somebytes)rrr��
write_textr�	read_textr�r�rts  r�test_read_write_textz"_BasePathTest.test_read_write_text5s����H�H�T�N�N��	
�W�� � ��i� �@�@�@����!�g�+�0�0��X�1�/�/�08�	:�	:�	:�	
���)�a�'�k�%=�|�L�L�L����!�g�+�0�0�)�0�D�D�j�Q�Q�Q�Q�Qrc��|�t��}|dz�dd���|�|dz���d��|dz�dd���|�|dz���d��|dz�dd���|�|dz���d	��ttjd
���}|dz�d��|�|dz���d
|zdz|zdz��dS)Nrzabcde
fghlk

mnopq�
)�newlinesabcde
fghlk

mnopq�
sabcde

fghlk

mnopqz
sabcde

fghlk

mnopq�asciir�zabcde
fghlk

mnopqsabcdesfghlks
mnopq)rrr�r�rr�r�r��linesep)rru�os_linesep_bytes   r�test_write_text_with_newlinesz+_BasePathTest.test_write_text_with_newlines>sv���H�H�T�N�N��	
�W�� � �!:�D� �I�I�I����!�g�+�1�1�3�3�3�	5�	5�	5�
�W�� � �!:�D� �I�I�I����!�g�+�1�1�3�3�3�	5�	5�	5�
�W�� � �!:�F� �K�K�K����!�g�+�1�1�3�3�7�	9�	9�	9� ��
�W�=�=�=��	
�W�� � �!8�9�9�9����!�g�+�1�1�3�3�"�_�4�x�?�/�Q�T^�^�	`�	`�	`�	`�	`rc���|j��t��}|���}t|��}gd�}t	j��r|gd�z
}|�|�fd�|D����dS)N)rrrrr)r"r%r$r(c�2��h|]}�t|����Sr8�r��rr�r|s  �r�	<setcomp>z-_BasePathTest.test_iterdir.<locals>.<setcomp>Zs#��� @� @� @��!�!�D�!�*�*� @� @� @r)rrr��iterdir�setrr-r)rru�it�pathsrr|s     @r�test_iterdirz_BasePathTest.test_iterdirRs�����H��
�A�d�G�G��
�Y�Y�[�[���B����<�<�<��� �"�"�	K��J�J�J�J�H����� @� @� @� @�h� @� @� @�A�A�A�A�Arc����|j��td��}t|�����}�fd�dD��}|�||��dS)Nr%c�4��h|]}�td|����S)r%r�r�s  �rr�z5_BasePathTest.test_iterdir_symlink.<locals>.<setcomp>bs'���F�F�F�Q�Q�Q�t�W�a�(�(�F�F�Fr)rr')rrr�r�r�r)rrur�rr|s    @r�test_iterdir_symlinkz"_BasePathTest.test_iterdir_symlink\sh���
�H��
�A�d�G�����A�I�I�K�K� � ��F�F�F�F�2D�F�F�F�������)�)�)�)�)rc�d�|�td��}|�t��5}t	|�����ddd��n#1swxYwY|�|jjtj	tj
tjf��dS�Nr)rrr�r��OSError�nextr��assertInr@rA�ENOTDIRrB�EINVAL�rrurEs   r�test_iterdir_nodirz _BasePathTest.test_iterdir_nodires����H�H�T�7�#�#��
�
�
�w�
'�
'�	�2����������	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	
�
�
�b�l�(�5�=�+0�<���+G�	H�	H�	H�	H�	Hs�"A$�$A(�+A(c������fd�}�j��t��}|�d��}��|tjj��||dg��||�d��g��||�d��ddg��tj��s"||�d��ddg��n!||�d��gd	���tj��s!||�d
��dg��n!||�d
��gd���tj��s!||�d��dg��n!||�d��dd
g��tj��s#||�d��gd���dS||�d��gd���dS)Nc�f����t|���fd�|D����dS)Nc�2��h|]}�t|����Sr8r�r�s  �rr�zA_BasePathTest.test_glob_common.<locals>._check.<locals>.<setcomp>q�#���(H�(H�(H��!�!�D�!�*�*�(H�(H�(Hr�rr���globrr|rs  ��r�_checkz._BasePathTest.test_glob_common.<locals>._checkp�:������S��Y�Y�(H�(H�(H�(H�h�(H�(H�(H�I�I�I�I�Irrrz
dir*/file*�
dirB/fileB�
dirC/fileCz*Ar)rrr"z*B/*)r��
dirB/linkD�linkB/fileBzlinkB/linkD�*/fileBr��*/)rrrr)rrrrr%)	rrr�r�rz�collectionsr��Iteratorrr-�rr�rur�r|s`   @r�test_glob_commonz_BasePathTest.test_glob_commonos5����	J�	J�	J�	J�	J�	J��H��
�A�d�G�G��
�V�V�G�_�_�����b�+�/�":�;�;�;���r�G�9������q�v�v�g����#�#�#���q�v�v�l�#�#�l�L�%A�B�B�B��$�&�&�	=��F�1�6�6�$�<�<�&�'�!2�3�3�3�3��F�1�6�6�$�<�<�!;�!;�!;�<�<�<��$�&�&�	C��F�1�6�6�&�>�>�L�>�2�2�2�2��F�1�6�6�&�>�>�$B�$B�$B�
C�
C�
C��$�&�&�	E��F�1�6�6�)�$�$�|�n�5�5�5�5��F�1�6�6�)�$�$�|�]�&C�D�D�D��$�&�&�	L��F�1�6�6�$�<�<�!A�!A�!A�B�B�B�B�B��F�1�6�6�$�<�<�!J�!J�!J�K�K�K�K�Krc������fd�}�j��t��}|�d��}��|tjj��||dg��||�d��dg��||�d��g��tj��s!||�d��dg��n!||�d��gd���||�d��gd	���tj��s"||�d
��gd���n!||�d
��gd���||�d
��gd����td��}||�d��gd���||�d��ddg��||�d��dg��||�d
��dg��||�d
��ddg��||�d��dg��||�d��dg��dS)Nc�f����t|���fd�|D����dS)Nc�2��h|]}�t|����Sr8r�r�s  �rr�zB_BasePathTest.test_rglob_common.<locals>._check.<locals>.<setcomp>�r�rr�r�s  ��rr�z/_BasePathTest.test_rglob_common.<locals>._check�r�rrrr�z*/fileAr�)r�zdirB/linkD/fileBr�zdirA/linkC/fileBzfile*)rr�r��dirC/dirD/fileDr�)rrr�	dirC/dirDr)r�
dirA/linkCrr�rr�rr%r$)r$rrrrr�r�*)r��dirC/novel.txtr�r�r�r�z*/*r�z*.txtr�z*.*)	rrr��rglobrzr�r�r�rr-r�s`   @r�test_rglob_commonz_BasePathTest.test_rglob_common�s����	J�	J�	J�	J�	J�	J��H��
�A�d�G�G��
�W�W�W�
�
�����b�+�/�":�;�;�;���r�G�9������q�w�w�w���,��0�0�0���q�w�w�y�!�!�2�&�&�&��$�&�&�	L��F�1�7�7�9�%�%��~�6�6�6�6��F�1�7�7�9�%�%�(K�(K�(K�
L�
L�
L���q�w�w�w���"C�"C�"C�	D�	D�	D��$�&�&�	��F�1�7�7�4�=�=�#�#�#�
�
�
�
�
�F�1�7�7�4�=�=�#�#�#�
�
�
�	��q�w�w�r�{�{�M�M�M�N�N�N�
�A�d�F�O�O����q�w�w�s�|�|�>�>�>�	?�	?�	?���q�w�w�w���,�0A�!B�C�C�C���q�w�w�u�~�~� 1�2�3�3�3���q�w�w�t�}�}�{�m�,�,�,���q�w�w�r�{�{�V�[�1�2�2�2���q�w�w�w���"2�!3�4�4�4���q�w�w�u�~�~� 0�1�2�2�2�2�2rc����|j}|t���t��d����}hd�}|�|�fd�|D����dS)Nr�>rrrrrr"r%r$r(r�r�r�r�r�r�r�c���h|]}�|z��Sr8r8)rrrus  �rr�z8_BasePathTest.test_rglob_symlink_loop.<locals>.<setcomp>�s��� 7� 7� 7�1��Q�� 7� 7� 7r)rrr�r�r�r)rr|�given�expectrus    @r�test_rglob_symlink_loopz%_BasePathTest.test_rglob_symlink_loop�st���
�H��
�A�d�G�G���A�G�G�C�L�L�!�!��
�
�
��	
���� 7� 7� 7� 7�� 7� 7� 7�8�8�8�8�8rc����d}|j}|t��dz�|�gdg|z�R�}|�d���d�dg|z�����fd�t	d	��D��}|D]%}|�t
|��|���&�fd
�t	d	��D��}�}t	|��D]/}|dz}|D]%}|�t
|��|���&�0dS)N��deepr*T�r�rr�c�:��g|]}�������Sr8)r�)r�j�base�patterns  ��rrz;_BasePathTest.test_glob_many_open_files.<locals>.<listcomp>�s%���8�8�8�����7�#�#�8�8�8r�dc�:��g|]}��d����S)r*)r�)rr�r�s  �rrz;_BasePathTest.test_glob_many_open_files.<locals>.<listcomp>�s#���5�5�5�Q����C���5�5�5r)rrr�r*r�rDrr�)	r�depthr|ru�itersr��ir�r�s	       @@r�test_glob_many_open_filesz'_BasePathTest.test_glob_many_open_files�s9�������H���q��w�w����
�A�d�#�s�e�E�k�#�#�#��	���������(�(�C�5�5�=�)�)��8�8�8�8�8�U�3�Z�Z�8�8�8���	*�	*�B����T�"�X�X�q�)�)�)�)�5�5�5�5�%��*�*�5�5�5�����u���	.�	.�A��C��A��
.�
.��� � ��b���1�-�-�-�-�
.�	.�	.rc���|j}|t��}|�t|�d����|td��h��|�t|�d����|td��h��|�t|�d����t����dS)Nrz
dirA/../file*z
dirA/../fileAz../xyzzy)rrr�rr�r�r{s   r�test_glob_dotdotz_BasePathTest.test_glob_dotdot�s����H��
�A�d�G�G������Q�V�V�D�\�\�*�*�a�a��d�m�m�,=�>�>�>�����Q�V�V�O�4�4�5�5���4��9Q�9Q�7S�T�T�T�����Q�V�V�J�/�/�0�0�#�%�%�8�8�8�8�8rc
�n��|j}|t��dz}|���|dz}|���|dz}|���|dz}|dz}|�|dz��t
j��fd�}tjd|��5|�	tt|�d	������d
��|���|�	tt|�d	������d��|�
d��|�	tt|�d	������d��ddd��dS#1swxYwYdS)
N�permissions�file1�file2�subdir�file3�otherc����|��5}t|��}ddd��n#1swxYwY|�d����tj|��S)Nc��|jSr�)r)�entrys rr�zI_BasePathTest.test_glob_permissions.<locals>.my_scandir.<locals>.<lambda>�s��5�:�r)�key)r��sort�
contextlib�nullcontext)r��
scandir_it�entries�real_scandirs   �r�
my_scandirz7_BasePathTest.test_glob_permissions.<locals>.my_scandir�s������d�#�#�
+�z��z�*�*��
+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+����
+�
+�
+�
+��L�L�5�5�L�6�6�6��)�'�2�2�2s�)�-�-z
os.scandirr�r��r)rrr�r*�touch�
symlink_tor��scandirrrRrr�r�r�r)	rr|r�r�r�r�r�r�r�s	        @r�test_glob_permissionsz#_BasePathTest.test_glob_permissions�s����
�H���q��w�w��&���
�
�����w���
���
�
�
��w���
���
�
�
������w���
����'�)�*�*�*�
�z��	3�	3�	3�	3�	3��Z��j�
1�
1�	:�	:����S��T�Y�Y�s�^�^�!4�!4�5�5�q�9�9�9��L�L�N�N�N����S��T�Y�Y�s�^�^�!4�!4�5�5�q�9�9�9��L�L��������S��T�Y�Y�s�^�^�!4�!4�5�5�q�9�9�9�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:����	:�	:�	:�	:�	:�	:s�*C3F*�*F.�1F.Tc�\�|�|��}|�||��dSr�)�resolver)rrur�strictr�s     r�_check_resolvez_BasePathTest._check_resolves/��
�I�I�f��������H�%�%�%�%�%rc�V
�|j}|td��}|�t��5}|�d���ddd��n#1swxYwY|�|jjtj��|�	t|�d�����tj�
td����|tddd��}|�	t|�d�����tj�
tddd����|tdddd��}|�	t|�d�����tj�tj�
ddd������|tdd	��}|�||��|td
��}|�||td����|tdd
d	��}|�||tdd	����|tddd	��}|�||tdd	����|tdd
d	ddd��}|�||tdd	ddd��d��|tdd
dddd��}tjdkr*|�||tdddd��d��n(|�||tddd��d��t#jt'jdtj�������}|�t"j|��tjtj�
|��tdd����tjtd��tj�
|d����|tdddd	��}|�||tdd	����|tdddddd��}|�||tdddd��d��|tddddddd��}tjdkr%|�|||ddd��d��dS|�||tddd��d��dS)NreT�r�F�in�spamrrrr"rrr&r'r�z-dirD)r�dir�linkX�linkY)rrr�r�r�r�rr@rArBrIr�r�r�r��abspath�_check_resolve_relativerr�	_longpath�tempfile�mkdtemprKr)rr.�_check_resolve_absolute)rr|rurEr*s     r�test_resolve_commonz!_BasePathTest.test_resolve_commons���H��
�A�d�E�N�N��
�
�
�w�
'�
'�	#�2�
�I�I�T�I�"�"�"�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#����	#�	#�	#�	#������+�U�\�:�:�:�� � ��Q�Y�Y�e�Y�%<�%<�!=�!=�!#����d�E�!:�!:�	<�	<�	<�
�A�d�E�4��(�(��� � ��Q�Y�Y�e�Y�%<�%<�!=�!=�!#����d�E�4��!H�!H�	J�	J�	J�
�A�d�D�%��v�.�.��� � ��Q�Y�Y�e�Y�%<�%<�!=�!=�!#��������e�T�6�1R�1R�!S�!S�	U�	U�	U�
�A�d�F�G�$�$���$�$�Q��*�*�*�
�A�d�G�����$�$�Q���$��(8�(8�9�9�9�
�A�d�F�G�W�-�-���$�$�Q���$���(@�(@�A�A�A�
�A�d�F�G�W�-�-���$�$�Q���$���(@�(@�A�A�A�
�A�d�F�G�W�e�T�6�B�B���$�$�Q���$�����*0�)2�)2�38�	:�	:�	:�
�A�d�F�G�T�5�$��?�?��
�7�d�?�?�
�(�(��A�A�d�F�E�4�.4�-6�-6�7<�
>�
>�
>�
>�

�(�(��A�A�d�E�4��,H�,H�%�P�P�P���� 0��57�Y�[�[�!B�!B�!B�
C�
C�����	�(�!�,�,�,�
�
�2�7�<�<��?�?�D���$9�$9�:�:�:�
�
�4��<�<�����a��!9�!9�:�:�:�
�A�d�F�G�W�g�6�6���$�$�Q���$���(@�(@�A�A�A�
�A�d�F�G�W�e�T�6�B�B���$�$�Q���$���t�V�(L�(L�%*�	,�	,�	,�
�A�d�F�G�W�d�E�4��H�H��
�7�d�?�?�
�(�(��A�A�a���f�,E�,E�u�M�M�M�M�M�
�(�(��A�A�d�E�4��,H�,H�%�P�P�P�P�Ps�A�A�Ac��|�t��}|�dtd����|�tj�dd��td����|�tj�dd��td����|dz}|�|�d���|��|dzdz}|�t|jd���|�|�d	���|dzdz��dS)
Nr,�0�1�2Tr��3�4F)
rrr�r/r�r�r�rr�r�r?)rrur�r�s    r�test_resolve_dotz_BasePathTest.test_resolve_dotEs��
�H�H�T�N�N�����S�$�s�)�)�$�$�$����R�W�\�\�#�s�+�+�T�#�Y�Y�7�7�7����R�W�\�\�#�s�+�+�T�#�Y�Y�7�7�7�
��G��������$��/�/��3�3�3�
��G�c�M�����+�Q�Y�t��D�D�D�������%��0�0�!�c�'�C�-�@�@�@�@�@rc�h�|�dd��}tj��}tjt��	|�|���|�t|����tj|��dS#tj|��wxYw)N�non�exist)rrr�rK�chdirr�rr�)rru�old_cwds   r�)test_resolve_nonexist_relative_issue38671z7_BasePathTest.test_resolve_nonexist_relative_issue38671Ss����H�H�U�G�$�$���)�+�+��
������	����Q�Y�Y�[�[�$�(�(�4��*;�*;�<�<�<��H�W�������B�H�W�������s
�AB�B1c��|�t��}|���}|���}t|��|�t
��5|5	ddd��n#1swxYwYddd��n#1swxYwYt|��t|��|���|���|���|�t
��5|5	ddd��n#1swxYwYddd��dS#1swxYwYdSr�)	rrr�r�r��assertWarns�DeprecationWarningrtr�rT)rrur��it2s    r�	test_withz_BasePathTest.test_with]s���H�H�T�N�N��
�Y�Y�[�[���i�i�k�k���S�	�	�	�
�
�
�0�
1�
1�	�	��
�
��
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
	
�R�����S�	�	�	�	���
�
�
�	�	�	����	�
�
����
�
�
�0�
1�
1�	�	��
�
��
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	sl�,B�/A=�1B�=B	�B�B	�B�B�B�D<�D$�D<�$D(	�(D<�+D(	�,D<�<E�Ec��|�t��dz}|���j}|dz}|�|��|�|���j|��|dz}|�|��|�|���j|��dS)Nr�m����)rrr�rk�st_moderr)rru�mode�new_modes    r�
test_chmodz_BasePathTest.test_chmodqs����H�H�T�N�N�W�$���v�v�x�x����&�=��	���������������)�8�4�4�4��%�<��	���������������)�8�4�4�4�4�4rc��|�t��dz}|���}|���j}|dz}|�|d���|�|���j|��|dz}|�|d���|�|���j|��dS)Nr"rT��follow_symlinksr)rrr�r�rkrrr)rrur�rrs     r�test_chmod_follow_symlinks_truez-_BasePathTest.test_chmod_follow_symlinks_trues���
�H�H�T�N�N�W�$��
�I�I�K�K���v�v�x�x����&�=��	����$��/�/�/���������)�8�4�4�4��%�<��	����$��/�/�/���������)�8�4�4�4�4�4rc��|�t��dz}|���}|�|���|��|�|jdz��|�|j|j��|�|���|��dS)Nrr)rrr�rkrrrr)r��rru�sts   r�	test_statz_BasePathTest.test_stat�s����H�H�T�N�N�W�$��
�V�V�X�X����������2�&�&�&�	����
�U�"�#�#�#��������,�,�,����A�F�F�H�H�b�)�)�)�)�)rc��|�t��dz}|���}|�||�d�����dS)Nr"Fr")rrr�rkr�r&s   r�test_stat_no_follow_symlinksz*_BasePathTest.test_stat_no_follow_symlinks�sM���H�H�T�N�N�W�$��
�V�V�X�X�����B����u�� =� =�>�>�>�>�>rc��|�t��dz}|���}|�||�d�����dS)NrFr")rrr�rkrr&s   r�&test_stat_no_follow_symlinks_nosymlinkz4_BasePathTest.test_stat_no_follow_symlinks_nosymlink�sM���H�H�T�N�N�W�$��
�V�V�X�X������Q�V�V�E�V�:�:�;�;�;�;�;rc��|�t��dz}|���}|�||�����dS)Nr")rrr�rkr��lstatr&s   r�
test_lstatz_BasePathTest.test_lstat�sG���H�H�T�N�N�G�#��
�V�V�X�X�����B����	�	�*�*�*�*�*rc��|�t��dz}|���}|�||�����dSr�)rrr�rkrr.r&s   r�test_lstat_nosymlinkz"_BasePathTest.test_lstat_nosymlink�sG���H�H�T�N�N�W�$��
�V�V�X�X������Q�W�W�Y�Y�'�'�'�'�'rz&the pwd module is needed for this testc�H�|�t��dz}|���j}	t	j|��j}n(#t$r|�d|z��YnwxYw|�	||�
����dS)Nrz4user %d doesn't have an entry in the system database)rrr�rk�st_uid�pwd�getpwuid�pw_name�KeyErrorr[rr)rru�uidrs    rr	z_BasePathTest.test_owner�s����H�H�T�N�N�W�$���f�f�h�h�o��	N��<��$�$�,�D�D���	N�	N�	N��M�M�F��L�
N�
N�
N�
N�
N�	N����	
����q�w�w�y�y�)�)�)�)�)��A�"A7�6A7z&the grp module is needed for this testc�H�|�t��dz}|���j}	t	j|��j}n(#t$r|�d|z��YnwxYw|�	||�
����dS)Nrz5group %d doesn't have an entry in the system database)rrr�rk�st_gid�grp�getgrgid�gr_namer7r[rr
)rru�gidrs    rrz_BasePathTest.test_group�s����H�H�T�N�N�W�$���f�f�h�h�o��	O��<��$�$�,�D�D���	O�	O�	O��M�M�G�#�M�
O�
O�
O�
O�
O�	O����	
����q�w�w�y�y�)�)�)�)�)r9c���|�t��dz}|���|�|j��|�|j��dSr�)rrr��unlinkrFrkrts  r�test_unlinkz_BasePathTest.test_unlink�sU���H�H�T�N�N�W�$��	���
�
�
������'�'�'������)�)�)�)�)rc��|�t��dz}|�|j��|�d���dS)N�fileAAAT)�
missing_ok)rrr�rFrArts  r�test_unlink_missing_okz$_BasePathTest.test_unlink_missing_ok�sF���H�H�T�N�N�Y�&�������)�)�)�	���D��!�!�!�!�!rc�&�|�t��dz}|���D]}|����|���|�|j��|�|j��dS)Nr)rrr�r�rA�rmdirrFrkr�s   r�
test_rmdirz_BasePathTest.test_rmdir�s{���H�H�T�N�N�V�#�������	�	�A�
�H�H�J�J�J�J�	���	�	�	������'�'�'������)�)�)�)�)r�linkzos.link() is not presentc��|�t��}|dz}|���j}|dzdz}	|�t
��5|�|��ddd��n#1swxYwYn/#t$r"}|�d|z��Yd}~nd}~wwxYw|�	|���j|��|�	tj�||��d��|�
|j��td��}|�t
��5|�|��ddd��n#1swxYwY|�	tj|��j|��|�
|j��dS)Nrr�fileAAz
os.link(): %sTrD)rrr�rk�st_sizerr�link_to�PermissionErrorr[rr�r�r9r��rel_join)rr|ru�sizer��er�s       r�test_link_toz_BasePathTest.test_link_to�s���H�H�T�N�N��
��K���v�v�x�x���
��J��!��	/��!�!�"4�5�5�
�
��	�	�!����
�
�
�
�
�
�
�
�
�
�
����
�
�
�
����	/�	/�	/��M�M�/�A�-�.�.�.�.�.�.�.�.�����	/������������)�4�0�0�0������)�)�!�Q�/�/��6�6�6����������Y����
�
�
�0�
1�
1�	�	�
�I�I�a�L�L�L�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	���������+�T�2�2�2����������sN�B
�A>�2B
�>B�B
�B�B
�

B6�B1�1B6�E?�?F�Fc��|�t��}|dz}|���j}|dzdz}|�|��|�|���j|��|�tj�	||����|�|�
����|dzdz}td��}|�|��|�tj|��j|��|�|�
����dS�NrrrLrD)rrr�rkrM�hardlink_torr�r�r�r9rtrP)rr|�targetrQrJ�link2�target2s       r�test_hardlink_toz_BasePathTest.test_hardlink_to�s���H�H�T�N�N���W����{�{�}�}�$���6�z�H�$������ � � ���������,�d�3�3�3������(�(���6�6�7�7�7�����
�
���(�(�(��F�
�Y�&���7�#�#��
���'�"�"�"�������)�)�1�4�8�8�8���������'�'�'�'�'rzos.link() is presentc���|�t��}|dz}|dzdz}|�t��5|�|��ddd��dS#1swxYwYdS)NrrrL)rrr�r�rrN�rr|rur�s    r�test_link_to_not_implementedz*_BasePathTest.test_link_to_not_implementeds����H�H�T�N�N��
��K��
��J��!��
�
�
�2�
3�
3�	�	�
�I�I�a�L�L�L�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�A%�%A)�,A)c��|�t��}|dz}|���j}|dzdz}|�|��}|�||��|�|���j|��|�|j��td��}|�|��}|�||�|����|�tj|��j|��|�|j��dSrU)	rrr�rkrM�renamerrFrPr�)rr|rurQr��	renamed_pr��	renamed_qs        r�test_renamez_BasePathTest.test_rename
s
���H�H�T�N�N��
��K���v�v�x�x���
��J��!���H�H�Q�K�K�	�����A�&�&�&���������)�4�0�0�0������'�'�'��Y�����H�H�Q�K�K�	�����D�H�H�Q�K�K�0�0�0���������+�T�2�2�2������'�'�'�'�'rc��|�t��}|dz}|���j}|dzdz}|�|��}|�||��|�|���j|��|�|j��tdd��}|�|��}|�||�|����|�tj|��j|��|�|j��dS)NrrrLrr)	rrr�rkrMrrrFrPr�)rr|rurQr��
replaced_pr��
replaced_qs        r�test_replacez_BasePathTest.test_replaces���H�H�T�N�N��
��K���v�v�x�x���
��J��!���Y�Y�q�\�\�
�����Q�'�'�'���������)�4�0�0�0������'�'�'��V�W�%�%���Y�Y�q�\�\�
�����T�X�X�a�[�[�1�1�1���������+�T�2�2�2������'�'�'�'�'rc�B�|�t��}|�|dz���|�d����|�|dz���|�d����|�|dz���|�d����|�t
��5|dz���ddd��dS#1swxYwYdS)Nr"rr$r#r%r)rrr�r�readlinkr�r�r�s  r�
test_readlinkz_BasePathTest.test_readlink,s=���H�H�T�N�N�����!�g�+�/�/�1�1�4�8�8�G�3D�3D�E�E�E����!�l�*�4�4�6�6����.�1�1�	3�	3�	3����!�g�+�/�/�1�1�4�8�8�F�3C�3C�D�D�D�
�
�
�w�
'�
'�	%�	%�
��[�"�"�$�$�$�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%����	%�	%�	%�	%�	%�	%s�/D�D�Dc�t�|�t��}|dz}|�|�����|���|�|�����|���}|j}|j}tj
t|��|dz
|dz
f��|���|���}|�|j|��|�|j|��|dz}|�|�����|�dd���|�|�����|�
t|jd���dS)N�newfileA�
�newfileBi�F)r�exist_ok�rn)rrr�r�rtr�r�rk�st_mtime�st_mtime_nsr��utimer�r�r�r�)rr|rur'�	old_mtime�old_mtime_nss      r�test_touch_commonz_BasePathTest.test_touch_common6sa���H�H�T�N�N��
�
�N����������$�$�$�	���	�	�	�������
�
�#�#�#�
�V�V�X�X���K�	��~��	���Q���)�b�.�)�b�.�9�:�:�:�	���	�	�	�
�V�V�X�X��������=�=�=������Y�7�7�7�
�
�N����������$�$�$�	���U�U��+�+�+�������
�
�#�#�#����'�1�7�U��;�;�;�;�;rc�<�|�t��}|dz}|���|�d��5}|�|������d��ddd��dS#1swxYwYdS)Nrrwrx)rrr�r�r+rr|r~)rr|rur s    r�test_touch_nochangez!_BasePathTest.test_touch_nochangeNs����H�H�T�N�N��
��K��	���	�	�	�
�V�V�D�\�\�	B�Q����Q�V�V�X�X�^�^�-�-�/@�A�A�A�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B����	B�	B�	B�	B�	B�	Bs�	;B�B�Bc�6�|�t��}|dz}|�|�����|���|�|�����|�|�����|�t��5}|���ddd��n#1swxYwY|�	|j
jtj��dS)N�newdirA)
rrr�r�rtr*r��is_dirr�r�rr@rA�EEXIST)rr|rurEs    r�
test_mkdirz_BasePathTest.test_mkdirUs
���H�H�T�N�N��
�	�M����������$�$�$�	���	�	�	�������
�
�#�#�#�������
�
�#�#�#�
�
�
�w�
'�
'�	�2�
�G�G�I�I�I�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	������+�U�\�:�:�:�:�:s�C$�$C(�+C(c��|�tdd��}|�|�����|�t
��5}|���ddd��n#1swxYwY|�|jj	tj
��|�d���|�|�����|�|�����|�t
��5}|�d���ddd��n#1swxYwY|�|jj	tj
��tj|���j��}|�tdd��}|�dd���|�|�����|�|�����t"jdkrB|�tj|���j��d	|z��|�tj|j���j��|��dS)
N�newdirB�newdirCTr��newdirD�newdirEimr�im)rrr�r�rtr�r�r*rr@rArBr�rzr{rk�S_IMODErr�rr�)rrurErs    r�test_mkdir_parentsz _BasePathTest.test_mkdir_parents`s����H�H�T�9�i�0�0����������$�$�$�
�
�
�w�
'�
'�	�2�
�G�G�I�I�I�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	������+�U�\�:�:�:�	��������������
�
�#�#�#�������
�
�#�#�#�
�
�
�w�
'�
'�	"�2�
�G�G�D�G�!�!�!�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"������+�U�\�:�:�:��|�A�F�F�H�H�,�-�-���H�H�T�9�i�0�0��	����t��$�$�$�������
�
�#�#�#�������
�
�#�#�#�
�7�d�?�?����T�\�!�&�&�(�(�*:�;�;�V�d�]�K�K�K������a�h�m�m�o�o�&=�>�>��E�E�E�E�Es$�A?�?B�B�2E�E�Ec��|�td��}|���j}|�|�����|�|�����|�t��5}|�	��ddd��n#1swxYwY|�
|jjtj
��|�	d���|�|�����|�
|���j|��dS)NrTro)rrr�rk�st_ctimer�rtrzr��FileExistsErrorr*rr@rAr{)rru�st_ctime_firstrEs    r�test_mkdir_exist_okz!_BasePathTest.test_mkdir_exist_okys>���H�H�T�6�"�"�������*��������
�
�#�#�#�������
�
�#�#�#�
�
�
��
/�
/�	�2�
�G�G�I�I�I�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	������+�U�\�:�:�:�	��������������
�
�#�#�#���������*�N�;�;�;�;�;s�B>�>C�Cc���|�td��}|�|�����|�t
��5}|���ddd��n#1swxYwY|�|jj	tj
��|dz}|�d���|���j}|�|�����|�t
��5}|�d���ddd��n#1swxYwY|�|jj	tj
��|�dd���|�|�����|�|���j|��dS)NrrTr��r�rn)
rrr�r�rtr�r�r*rr@rAr{rkr�)rrurEr�s    r�test_mkdir_exist_ok_with_parentz-_BasePathTest.test_mkdir_exist_ok_with_parent�s����H�H�T�6�"�"��������
�
�#�#�#�
�
�
��
/�
/�	�2�
�G�G�I�I�I�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	������+�U�\�:�:�:�
�	�M��	�������������*��������
�
�#�#�#�
�
�
��
/�
/�	"�2�
�G�G�D�G�!�!�!�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"������+�U�\�:�:�:�	����t��,�,�,�������
�
�#�#�#���������*�N�;�;�;�;�;s$�A>�>B�B�(E�E�Ez)FS root cannot be modified on Emscripten.c���|�d������d���|�d������dd���dS)NrTror�)rrr�r*r�s r�test_mkdir_exist_ok_rootz&_BasePathTest.test_mkdir_exist_ok_root�sf��	
����
�
�����%�%�t�%�4�4�4�����
�
�����%�%�d�T�%�B�B�B�B�Brc�4�dD]0}|�|dz��}|���sn�1|�d��|�t��5|dzdz�d���ddd��dS#1swxYwYdS)N�ZYXWVUTSRQPONMLKJIHGFEDCBAz:\z&cannot find a drive that doesn't exist�childr�Tr�)rrrzr[r�r�r*)rr*rus   r�test_mkdir_with_unknown_drivez+_BasePathTest.test_mkdir_with_unknown_drive�s���-�	D�	D�A�����U��#�#�A��8�8�:�:�
���
�
�M�M�B�C�C�C�
�
�
�w�
'�
'�	7�	7�
��[�6�
!�(�(��(�6�6�6�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7�	7�	7s�#B
�
B�Bc�V�|�tdd��}|�|�����|�t
��5}|�d���ddd��n#1swxYwY|�|jj	tj
��|�t
��5}|�dd���ddd��n#1swxYwY|�|jj	tj
��dS)NrrTr�r��rrr�r�rtr�r�r*rr@rAr{r�s   r�test_mkdir_with_child_filez(_BasePathTest.test_mkdir_with_child_file�si���H�H�T�6�7�+�+��������
�
�#�#�#��
�
��
/�
/�	"�2�
�G�G�D�G�!�!�!�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"������+�U�\�:�:�:�
�
�
��
/�
/�	1�2�
�G�G�D�4�G�0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1������+�U�\�:�:�:�:�:s$�B�B�B�C4�4C8�;C8c�N�|�td��}|�|�����|�t
��5}|���ddd��n#1swxYwY|�|jj	tj
��|�t
��5}|�d���ddd��n#1swxYwY|�|jj	tj
��dS)NrTror�r�s   r�test_mkdir_no_parents_filez(_BasePathTest.test_mkdir_no_parents_file�s^���H�H�T�7�#�#��������
�
�#�#�#��
�
��
/�
/�	�2�
�G�G�I�I�I�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	������+�U�\�:�:�:�
�
�
��
/�
/�	#�2�
�G�G�T�G�"�"�"�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#����	#�	#�	#�	#������+�U�\�:�:�:�:�:s$�A>�>B�B�
C0�0C4�7C4c�������td��D�]P�|�td�z��}|�|�����t
j�d
���fd�	}�fd�td��D���t���|dzdz}	tj	d	|��5|�d
d���ddd��n#1swxYwY|�
t|�����n3#t$r&|�
t|�����YnwxYw|�|�������RdS)N� zdirCPC%drc���t|��}����r!�||����|���||��dSr�)r��pop�add)r�r�concurrently_createdr��
real_mkdirs  ���r�my_mkdirzE_BasePathTest.test_mkdir_concurrent_parent_creation.<locals>.my_mkdir�s^����4�y�y���;�;�=�=�3��J�t�T�*�*�*�(�,�,�T�2�2�2��
�4��&�&�&�&�&rc�:��g|]}t�d|zz����S)r�)�bool)r�n�pattern_nums  �rrzG_BasePathTest.test_mkdir_concurrent_parent_creation.<locals>.<listcomp>�s*���F�F�F��t�K�1��6�2�3�3�F�F�Fr��dir1�dir2zos.mkdirTFr�)r)rDrrr�r�rtr�r*r�rrR�assertNotInr�r�r�r�)rrur��p12r�r�r�r�s    @@@@r�%test_mkdir_concurrent_parent_creationz3_BasePathTest.test_mkdir_concurrent_parent_creation�s������� ��9�9�	(�	(�K�����z�K�7�8�8�A����Q�X�X�Z�Z�(�(�(���J�

'�

'�

'�

'�

'�

'�

'�

'�G�F�F�F�U�1�X�X�F�F�F�G�#&�5�5� ��f�*�v�%�C�
A��Z�
�H�5�5�<�<��I�I�d�U�I�;�;�;�<�<�<�<�<�<�<�<�<�<�<����<�<�<�<�
� � ��S���+?�@�@�@�@��#�
>�
>�
>��
�
�c�#�h�h�(<�=�=�=�=�=�
>����
�O�O�A�H�H�J�J�'�'�'�'�7	(�	(s6�"D
�7C�D
�C	�D
�"C	�#D
�
-D:�9D:c���|�t��}|dz}|dzdz}|�|��|�|���|�����|�|���|�����|dzdz}|�t|����|�|���|�����|�|���|�����|�|�	����|dz}|dzdz}|�|d���|�|���|�����|�|���|�����|�
|�	����|�
t|�������dS)	Nrr�linkAA�linkAAAr�linkAAAATr1)
rrr�r�rrkr�r.r�r�rzr�r�r�)rr|rWrJs    r�test_symlink_toz_BasePathTest.test_symlink_to�s����H�H�T�N�N���W����6�z�H�$�����������������f�k�k�m�m�4�4�4����D�J�J�L�L�&�+�+�-�-�8�8�8��6�z�I�%������F���$�$�$���������f�k�k�m�m�4�4�4����D�J�J�L�L�&�+�+�-�-�8�8�8���������'�'�'��V����6�z�J�&������D��9�9�9���������f�k�k�m�m�4�4�4����D�J�J�L�L�&�+�+�-�-�8�8�8�������
�
�&�&�&�����T�\�\�^�^�,�,�-�-�-�-�-rc�`�|�t��}|�|dz�����|�|dz�����|�|dz�����|�|dzdz�����tj��r|�|dz�����|�|dz�����|�|dz���d��|�|d	z���d��|�|d
z���d��dS)Nrrr#rrr"r%r$FudirA�zdirA)rrr�r�rzr�rr-r�r�s  r�test_is_dirz_BasePathTest.test_is_dir�sr���H�H�T�N�N������V��+�+�-�-�.�.�.����!�g�+�-�-�/�/�0�0�0����!�n�,�4�4�6�6�7�7�7����!�g�+��-�5�5�7�7�8�8�8�� �"�"�	@����a�'�k�1�1�3�3�4�4�4��O�O�Q��[�0�0�2�2�3�3�3����a��o�5�5�7�7��?�?�?��
�
�q�<�'�/�/�1�1�5�9�9�9��
�
�q�:�~�-�-�/�/��7�7�7�7�7rc�^�|�t��}|�|dz�����|�|dz�����|�|dz�����|�|dzdz�����tj��r~|�|dz�����|�|dz�����|�|dz�����|�|dz���d	��|�|d
z���d	��dS)Nrrr#rrr"r%r$�fileA�F�fileA)rrr�r��is_filer�rr-r�r�s  r�test_is_filez_BasePathTest.test_is_file	so���H�H�T�N�N������W��-�-�/�/�0�0�0����!�f�*�-�-�/�/�0�0�0����!�n�,�5�5�7�7�8�8�8����!�g�+��-�6�6�8�8�9�9�9�� �"�"�	:��O�O�Q��[�1�1�3�3�4�4�4����a�'�k�2�2�4�4�5�5�5����a��o�6�6�8�8�9�9�9��
�
�q�=�(�1�1�3�3�U�;�;�;��
�
�q�;��/�/�1�1�5�9�9�9�9�9rc�n�|�t��}|�d��}|�|dz�����|�|dz�����|�|dz�����|�|dzdz�����|�|�����tj��r*|�|dz�����|�|�d�����d��|�|�d	�����d��dS)
Nrrrr#rrr"u/�Fz/)rrr�r��is_mountr�rr-r�)rr|�Rs   r�
test_is_mountz_BasePathTest.test_is_mount	sc���H�H�T�N�N���H�H�S�M�M�����!�g�+�/�/�1�1�2�2�2����!�f�*�.�.�0�0�1�1�1����!�n�,�6�6�8�8�9�9�9����!�g�+��-�7�7�9�9�:�:�:�����
�
���%�%�%�� �"�"�	7����a�'�k�3�3�5�5�6�6�6��
�
�d�h�h�y�)�)�2�2�4�4�e�<�<�<��
�
�d�h�h�w�'�'�0�0�2�2�E�:�:�:�:�:rc�4�|�t��}|�|dz�����|�|dz�����|�|dz�����|�|dzdz�����t	j��r~|�|dz�����|�|dz�����|�|dz�����|�|dz���d	��|�|d
z���d	��t	j��rX|�|dz���d	��|�|dz���d	��dSdS)
Nrrr#rrr"r%r$r�Fr�ulinkA�zlinkA)	rrr�r��
is_symlinkrr-r�r�r�r�s  r�test_is_symlinkz_BasePathTest.test_is_symlink	s����H�H�T�N�N�����!�g�+�1�1�3�3�4�4�4����!�f�*�0�0�2�2�3�3�3����!�n�,�8�8�:�:�;�;�;����!�g�+��-�9�9�;�;�<�<�<�� �"�"�	<��O�O�Q��[�4�4�6�6�7�7�7��O�O�Q��[�4�4�6�6�7�7�7��O�O�Q��_�8�8�:�:�;�;�;��
�
�q�=�(�1�1�3�3�U�;�;�;��
�
�q�;��/�/�1�1�5�9�9�9�� �"�"�	>��M�M�1�}�,�5�5�7�7��?�?�?��M�M�1�{�?�3�3�5�5�u�=�=�=�=�=�	>�	>rc�<�|�t��}|�|dz�����|�|dz�����|�|dz�����|�|dzdz�����|�|dz���d��|�|dz���d��dS�Nrrr#rrr�Fr�)rrr�r��is_fifor�r�s  r�test_is_fifo_falsez _BasePathTest.test_is_fifo_false-	s����H�H�T�N�N�����!�g�+�.�.�0�0�1�1�1����!�f�*�-�-�/�/�0�0�0����!�n�,�5�5�7�7�8�8�8����!�g�+��-�6�6�8�8�9�9�9��
�
�q�=�(�1�1�3�3�U�;�;�;��
�
�q�;��/�/�1�1�5�9�9�9�9�9r�mkfifozos.mkfifo() required�vxworksz%fifo requires special path on VxWorksc���|�td��}	tjt	|����n/#t
$r"}|�d|z��Yd}~nd}~wwxYw|�|�����|�	|�
����|�	|�����|�|�td�����d��|�|�td�����d��dS)N�myfifozos.mkfifo(): %su	myfifo�Fzmyfifo)
rrr�r�r�r�rOr[r�r�r��	is_socketr�r�)rr|rRs   r�test_is_fifo_truez_BasePathTest.test_is_fifo_true6	s/��
�H�H�T�8�$�$��	1��I�c�!�f�f�������	1�	1�	1��M�M�+�a�/�0�0�0�0�0�0�0�0�����	1��������	�	���$�$�$���������'�'�'���������%�%�%��
�
�d�h�h�t�^�4�4�<�<�>�>��F�F�F��
�
�d�h�h�t�\�2�2�:�:�<�<�e�D�D�D�D�Ds�!?�
A+�	A&�&A+c�<�|�t��}|�|dz�����|�|dz�����|�|dz�����|�|dzdz�����|�|dz���d��|�|dz���d��dSr�)rrr�r�r�r�r�s  r�test_is_socket_falsez"_BasePathTest.test_is_socket_falseE	s����H�H�T�N�N�����!�g�+�0�0�2�2�3�3�3����!�f�*�/�/�1�1�2�2�2����!�n�,�7�7�9�9�:�:�:����!�g�+��-�8�8�:�:�;�;�;��
�
�q�=�(�3�3�5�5�u�=�=�=��
�
�q�;��1�1�3�3�U�;�;�;�;�;r�AF_UNIXzUnix sockets requiredz/Unix sockets are not implemented on Emscripten.zCannot create socket on WASI.c��|�td��}tjtjtj��}|�|j��	|�t|����nb#t$rU}t|t��sdt|��vr%|�dt|��z��Yd}~nd}~wwxYw|�
|�����|�|�����|�|�����|�|�td�����d��|�|�td�����d��dS)N�mysockzAF_UNIX path too longzcannot bind Unix socket: u	mysock�Fzmysock)rrr��socketr��SOCK_STREAMr)�close�bindr�r��
isinstancerOr[r�r�r�r�r�r�)rr|�sockrRs    r�test_is_socket_truez!_BasePathTest.test_is_socket_trueN	s���
�H�H�T�8�$�$���}�V�^�V�-?�@�@������
�#�#�#�	D��I�I�c�!�f�f�������	D�	D�	D��1�o�.�.�
D�+�s�1�v�v�5�5��
�
�9�C��F�F�B�C�C�C����������	D����	
������
�
�&�&�&���������%�%�%���������%�%�%��
�
�d�h�h�t�^�4�4�>�>�@�@�%�H�H�H��
�
�d�h�h�t�\�2�2�<�<�>�>��F�F�F�F�Fs� "B�
C"�
AC�C"c�<�|�t��}|�|dz�����|�|dz�����|�|dz�����|�|dzdz�����|�|dz���d��|�|dz���d��dSr�)rrr�r��is_block_devicer�r�s  r�test_is_block_device_falsez(_BasePathTest.test_is_block_device_falsee	s����H�H�T�N�N�����!�g�+�6�6�8�8�9�9�9����!�f�*�5�5�7�7�8�8�8����!�n�,�=�=�?�?�@�@�@����!�g�+��-�>�>�@�@�A�A�A��
�
�q�=�(�9�9�;�;�U�C�C�C��
�
�q�;��7�7�9�9�5�A�A�A�A�Arc�<�|�t��}|�|dz�����|�|dz�����|�|dz�����|�|dzdz�����|�|dz���d��|�|dz���d��dSr�)rrr�r��is_char_devicer�r�s  r�test_is_char_device_falsez'_BasePathTest.test_is_char_device_falsen	s����H�H�T�N�N�����!�g�+�5�5�7�7�8�8�8����!�f�*�4�4�6�6�7�7�7����!�n�,�<�<�>�>�?�?�?����!�g�+��-�=�=�?�?�@�@�@��
�
�q�=�(�8�8�:�:�E�B�B�B��
�
�q�;��6�6�8�8�%�@�@�@�@�@rc�X�|�d��}|���s|�d��|�|�����|�|�����|�|�����|�|�d�����d��|�|�d�����d��dS)Nz	/dev/nullz/dev/null requiredu/dev/null�Fz
/dev/null)	rrrtr[r�r�r�r�r�r�r�s  r�test_is_char_device_truez&_BasePathTest.test_is_char_device_truew	s����H�H�[�!�!���x�x�z�z�	0��M�M�.�/�/�/�����(�(�*�*�+�+�+�����*�*�,�,�-�-�-���������%�%�%��
�
�d�h�h�0�1�1�@�@�B�B�E�J�J�J��
�
�d�h�h��/�/�>�>�@�@�%�H�H�H�H�Hrc�B�|�td��}tdtjdz��D]e}tj||��}tj|��}|�|���|������fdS)Nrrr�)	rrr�rDrErFrGrHrrk)rrurIrJr�s     rrKz"_BasePathTest.test_pickling_common�	s����H�H�T�7�#�#���1�f�5��9�:�:�	2�	2�E��\�!�U�+�+�F���f�%�%�B����R�W�W�Y�Y������1�1�1�1�	2�	2rc���|j}|d��}|d��}|�|jd|jd��|�|jd|jd��dS)Nz/usr/bin/fooz/usr/local/binr�r�r�)rrr�r�r\s    r�test_parts_interningz"_BasePathTest.test_parts_interning�	sn���H��
�A�n����
�A������
�
�a�g�a�j�!�'�!�*�-�-�-��
�
�a�g�a�j�!�'�!�*�-�-�-�-�-rc��|�t��}|�tj�dd��td����|�tj�dd��td����|�tj�dd��td����|�|td����|dz���}|�||��|�t|��t��|dz���}|�||��|�t|��t��|dz���}|�||��|�t|��t��|dz���}|�||��|�t|��t��tj
��}tjt��	|�d�����}|�||��|�t|��t��|�d�����}|�||��|�t|��t��|�d�����}|�||��|�t|��t��|�d�����}|�||��|�t|��t��tj|��dS#tj|��wxYw)N�link0�link1rX�link3)rrr�r/r�r�r�r�rrIr�rKr)r�link0_targetr|ru�old_paths     r�_check_complex_symlinksz%_BasePathTest._check_complex_symlinks�	sN���H�H�T�N�N�����R�W�\�\�'�7�3�3�T�'�]�]�C�C�C����R�W�\�\�'�7�3�3�T�'�]�]�C�C�C����R�W�\�\�'�7�3�3�T�'�]�]�C�C�C����\�4��=�=�1�1�1���[�!�!�#�#������A����� � ��Q����.�.�.�
��[�!�!�#�#������A����� � ��Q����.�.�.�
��[�!�!�#�#������A����� � ��Q����.�.�.�
��[�!�!�#�#������A����� � ��Q����.�.�.��9�;�;��
������	�����!�!�)�)�+�+�A����Q��"�"�"��$�$�S��V�V�T�2�2�2�����!�!�)�)�+�+�A����Q��"�"�"��$�$�S��V�V�T�2�2�2�����!�!�)�)�+�+�A����Q��"�"�"��$�$�S��V�V�T�2�2�2�����!�!�)�)�+�+�A����Q��"�"�"��$�$�S��V�V�T�2�2�2��H�X�������B�H�X�������s
�FP,�,Qc�:�|�t��dSr�)r�r�r�s r�test_complex_symlinks_absolutez,_BasePathTest.test_complex_symlinks_absolute�	s���$�$�T�*�*�*�*�*rc�0�|�d��dS)Nr,)r�r�s r�test_complex_symlinks_relativez,_BasePathTest.test_complex_symlinks_relative�	s���$�$�S�)�)�)�)�)rc�l�|�tj�dd����dS)Nrr)r�r�r�r�r�s r�&test_complex_symlinks_relative_dot_dotz4_BasePathTest.test_complex_symlinks_relative_dot_dot�	s,���$�$�R�W�\�\�&�$�%?�%?�@�@�@�@�@r)T)fr5r6r7rvr�rr/r=rFrIrLrOrUrY�unittest�skipIfr4rcrirlrrprur�r�r�r�r�r�skip_unless_symlinkr�r�r�r�r�r�r�r�r�rrrrrr�skip_unless_working_chmodr �
only_posixr$r(r*r,r/r1�
skipUnlessr	r<rrBrFrI�hasattrrSrZr]rbrfrirurwr|r�r�r�rr��only_ntr�r�r�r�r�r�r�r�r�r��sys�platformr�r�r�r�r�r�r�rKr�r�r�r�r�r8rrrres#������I�,B�B�B�B
�w�$���	<�	<�	<�	<�	"�	"�	"�*�*�*�
;�;�;�
M�M�M�)�)�)����Z�Z�Z�,)�)�)��X�_��t��F����
-�
-���
-�G�G�G�(1�1�1�
�X�_�W�:�;�;�,�,�<�;�,�8�8�8�"
B�
B�
B�A�A�A�R�R�R�`�`�`�(B�B�B��"�*�*�#�"�*�H�H�H�L�L�L�:%3�%3�%3�N�"�9�9�#�"�9�$.�.�.�"9�9�9��"�:�:�#�"�:�B&�&�&�&�
9G�F��5��"�:Q�:Q�#�"�:Q�x�"�A�A�#�"�A�������(�(�
5�
5�)�(�
5���(�5�5�)�(��Z�5��(�*�*�)�(�*��"�?�?�#�"�?�
<�<�<�
�"�+�+�#�"�+�
(�(�(�
�X���F�G�G�*�*�H�G�*��X���F�G�G�*�*�H�G�*�*�*�*�"�"�"�
*�*�*��X�����V�,�,�.H�I�I� � �J�I� �*�X�����V�,�,�.H�I�I�(�(�J�I�(�"�X�_�W�W�R��(�(�*@�A�A���B�A��(�(�(�"(�(�(�"�"�%�%�#�"�%�<�<�<�0B�B�B�	;�	;�	;�F�F�F�2
<�
<�
<�<�<�<�"�X�_�]�$O�P�P�C�C�Q�P�C�

�7�7�
�W�7�
;�
;�
;�
;�
;�
;�(�(�(�<�"�.�.�#�"�.�.8�8�8�:�:�:��;�;��Z�;�>�>�>� :�:�:��X�����X�.�.�0F�G�G��X�_�S�\�Y�.�;�=�=�
E�
E�=�=�H�G�
E�<�<�<��X������3�3�5L�M�M��X�_��H����X�_��0���G�G�����N�M�G� B�B�B�A�A�A�	I�	I�	I�2�2�2�.�.�.�'�'�'�R�"�+�+�#�"�+��"�*�*�#�"�*��"�A�A�#�"�A�A�Arrc�.�eZdZejZd�Zd�Zd�ZdS)�PathTestc���|�d��}|�t|��tjdkrt
jnt
j��dSr�)rrr�r�r�rrQrrrts  rr�zPathTest.test_concrete_class�	sV���H�H�S�M�M���
�
�d�1�g�g�#%�7�d�?�?�G����8I�	K�	K�	K�	K�	Krc��tjdkr'|�ttj��dS|�ttj��dS)Nr�)r�rr�rrQrrr�s r�test_unsupported_flavourz!PathTest.test_unsupported_flavour�	sM��
�7�d�?�?����1�7�3D�E�E�E�E�E����1�7�3F�G�G�G�G�Grc���|���}|�td��5t|�d����ddd��dS#1swxYwYdS)NzUnacceptable patternr$)rr�assertRaisesRegexr�r�r�rts  r�test_glob_empty_patternz PathTest.test_glob_empty_pattern�	s����H�H�J�J��
�
#�
#�J�0F�
G�
G�	�	�����������	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�#A � A$�'A$N)	r5r6r7rQ�Pathrrr�r�r�r8rrr�r��	sN������
�,�C�K�K�K�
H�H�H�����rr�c��eZdZejZd�Zdd�d�Zej	e
ped��d���Zd�Z
ej	e
ped��d���Zejd	���Zd
�Zd�Zejeed��d
��ej	ejdkd��d�����Zej	ejdkd��d���ZdS)�
PosixPathTestc��|j}|�t|d�������d��|�t|d�������d��|�t|d�������d��|�t|d�������d��|�t|d�������d��|�t|d�������d��dS)Nrr.r-r=r<r[)rrrr�rTr�s  r�
test_absolutezPosixPathTest.test_absolute�	s;���H������Q�Q�s�V�V�_�_�.�.�/�/��5�5�5�����Q�Q�t�W�W�-�-�/�/�0�0�$�7�7�7�����Q�Q�v�Y�Y�/�/�1�1�2�2�F�;�;�;�	
����Q�Q�t�W�W�-�-�/�/�0�0�$�7�7�7�����Q�Q�u�X�X�.�.�0�0�1�1�5�9�9�9�����Q�Q�w�Z�Z�0�0�2�2�3�3�W�=�=�=�=�=rTr�c���|j|�}|�t��5t|�|����ddd��dS#1swxYwYdSr�)rrr��RuntimeError�printr�)rr�r�r�s    r�_check_symlink_loopz!PosixPathTest._check_symlink_loop�	s����t�x����
�
�
�|�
,�
,�	(�	(��$�,�,�v�&�&�'�'�'�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(����	(�	(�	(�	(�	(�	(s�#A�A�Az,umask is not implemented on Emscripten/WASI.c���tjd��}|�tj|��|�t��}|dz�d��5	ddd��n#1swxYwYtjtd����}|�t
j	|j
��d��tjd��|dz�d��5	ddd��n#1swxYwYtjtd����}|�t
j	|j
��d��dS)Nr�new_filer���other_new_file�)r��umaskr)rrr�r+rkr�rr�r�r�old_maskrur's    r�test_open_modezPosixPathTest.test_open_mode�	s���
�8�A�;�;�������(�+�+�+��H�H�T�N�N���*�n�
"�
"�4�
(�
(�	�	��	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�W�T�*�%�%�
&�
&�������b�j�1�1�5�9�9�9�
�������"�"�
(�
(��
.�
.�	�	��	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�W�T�*�+�+�
,�
,�������b�j�1�1�5�9�9�9�9�9s$�'A5�5A9�<A9�:D�D�Dc�D�tj��}	tjd��|�d��}|�t|�����d��tj|��dS#tj|��wxYw)Nrr�z/spam)r�rKrrrrr�r�)r�current_directoryrus   r�test_resolve_rootzPosixPathTest.test_resolve_root
s����I�K�K��	(��H�S�M�M�M����� � �A����S������-�-�w�7�7�7��H�&�'�'�'�'�'��B�H�&�'�'�'�'���s�AB	�	Bc�,�tjd��}|�tj|��|�t��}|dz���tjtd����}|�t
j	|j
��d��tjd��|dz���tjtd����}|�t
j	|j
��d��|dz�d�	��tjtd����}|�t
j	|j
��d��dS)
Nrrrrr	r
�masked_new_filei�)r)r�rr)rrr�r�rkr�rr�rrs    r�test_touch_modezPosixPathTest.test_touch_mode
sA��
�8�A�;�;�������(�+�+�+��H�H�T�N�N��	
�Z���� � � �
�W�T�*�%�%�
&�
&�������b�j�1�1�5�9�9�9�
������	
�
�	�$�$�&�&�&�
�W�T�*�+�+�
,�
,�������b�j�1�1�5�9�9�9�	
�
�	�%�%�5�%�1�1�1�
�W�T�+�,�,�
-�
-�������b�j�1�1�5�9�9�9�9�9rc��tjdtd����|�td��tjdtd����|�td��tjdtd����|�td��|�tddd���tjtd	��td
����|�td
��tjtd��td����|�td��tjtd��td
����|�td
��|�td
dd���dS)NzlinkX/insider�rzlinkZ/../linkZ�linkZreFr�zlinkU/inside�linkU�linkVzlinkW/../linkW�linkW)r�r.r�rr�r�s r�test_resolve_loopzPosixPathTest.test_resolve_loop
sp��	�
�>�4��=�=�1�1�1�� � ��w�/�/�/�
�
�7�D��M�M�*�*�*�� � ��w�/�/�/�
�
�#�T�'�]�]�3�3�3�� � ��w�/�/�/�� � ��w��e� �D�D�D�
�
�4��'�'��g���7�7�7�� � ��w�/�/�/�
�
�4��=�=�$�w�-�-�0�0�0�� � ��w�/�/�/�
�
�4�(�)�)�4��=�=�9�9�9�� � ��w�/�/�/�� � ��w��e� �D�D�D�D�Drc�z�|j}|t��}t|�d����}t	jt��st��n|}|�||��|�t|�d����t����dS)N�FILEazFILEa*)rrr�r�r�r�fs_is_case_insensitiver�rr|rur�r�s     r�	test_globzPosixPathTest.test_glob3
s����H��
�A�d�G�G���A�F�F�7�O�O�$�$��'�>�t�D�D�O�����%�������'�'�'�����Q�V�V�H�-�-�.�.����6�6�6�6�6rc�|�|j}|td��}t|�d����}t	jt��st��n|}|�||��|�t|�d����t����dS)Nr�FILEdzFILEd*)rrr�r�r�rrrrs     r�
test_rglobzPosixPathTest.test_rglob;
s����H��
�A�d�F�O�O���A�G�G�G�$�$�%�%��'�>�t�D�D�O�����%�������'�'�'�����Q�W�W�X�.�.�/�/����7�7�7�7�7r�getpwallz%pwd module does not expose getpwall()r�zno home directory on VxWorksc���|j}tjd��ddl}|jtj����}|j}|j�	d��pd}|j
��D]-}|j}|j�	d��}||kr|rn�.|}|}d}	|j|��r|dz
}|j|���n#t$rYnwxYw|d��}	|d|�d���}
|d|�d���}|d	|�d���}|d
|�d���}
|d��}|d|�d���}tj��5}|�dd��|�|	���||��d
z��|�|
���||��d
z��|�|���||��d
z��|�|���|��|�|
���|
��|�|���|��|�t&|j��d|d<|�|	���|d����|�|
���||��d
z��|�|���||��d
z��|�|���|��|�|
���|
��|�|���|��|�t&|j��ddd��dS#1swxYwYdS)Nr4rr�fakeuserr
z~/DocumentsrWz
/Documentsrornr$r_�	Documentsz/tmpz/tmp/Documents)rrr�
import_moduler4r5r��getuidr6�pw_dir�rstripr#�getpwnamr7rr`r�rrXr�r)rr|r4�pwdent�username�userhome�	othername�	otherhome�fakename�p1�p2�p3�p4�p5�p6�p7rbs                 r�test_expanduserzPosixPathTest.test_expanduserC
s$��

�H���#�E�*�*�*��
�
�
����b�i�k�k�*�*���>���=�'�'��,�,�3���"�c�l�n�n�	!�	!�F���I��
�,�,�S�1�1�I��H�$�$��$���� �I� �I���	��#�,�x�(�(�
 ��C����#�,�x�(�(�
 ����	�	�	��D�	�����Q�}�
�
��
�Q�'�8�'�'�'�
(�
(��
�Q�(�9�(�(�(�
)�
)��
�Q�*�h�*�*�*�
+�
+��
�Q�(�H�(�(�(�
)�
)��
�Q�r�U�U��
�Q�'�8�'�'�'�
(�
(��
�
*�
,�
,�	;���G�G�F�D�!�!�!����R�]�]�_�_�a�a��k�k�K�.G�H�H�H����R�]�]�_�_�a�a��k�k�K�.G�H�H�H����R�]�]�_�_�a�a�	�l�l�[�.H�I�I�I����R�]�]�_�_�b�1�1�1����R�]�]�_�_�b�1�1�1����R�]�]�_�_�b�1�1�1����l�B�M�:�:�:� �C��K����R�]�]�_�_�a�a�0@�.A�.A�B�B�B����R�]�]�_�_�a�a��k�k�K�.G�H�H�H����R�]�]�_�_�a�a�	�l�l�[�.H�I�I�I����R�]�]�_�_�b�1�1�1����R�]�]�_�_�b�1�1�1����R�]�]�_�_�b�1�1�1����l�B�M�:�:�:�%	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;����	;�	;�	;�	;�	;�	;s%�(%C�
C�C�JO � O$�'O$�darwinz1Bad file descriptor in /dev/fd affects only macOSc�r�	ttjd���d����dd�}|s|�d��|D]�}|���|���|���|���|�	��|�
��|���|�����dS#t$r0}|jtjkr|�d���d}~wwxYw)Nz/dev/fdr�r�z.no file descriptors - issue was not reproducedz Bad file descriptor not handled.)r�rQr�r�r[rtrzr�r�r�r�r�r�r�rA�EBADF�fail)r�file_descriptorsr rRs    r�test_handling_bad_descriptorz*PosixPathTest.test_handling_bad_descriptor|
s'��	�#�G�L��$;�$;�$A�$A�#�$F�$F�G�G����K��#�
P��
�
�N�O�O�O�&�
�
�����
�
�
����
�
�
��	�	�����������!�!�#�#�#�� � �"�"�"��	�	�������
�
�
�
�
�
���	�	�	��w�%�+�%�%��	�	�<�=�=�=������	���s�C8C<�<
D6�+D1�1D6N)r5r6r7rQrrrrrr�r�rrrrrrr�rrr"r�r�r4r�r�r9r?r8rrr�r��	s�������
�
�C�	>�	>�	>�15�(�(�(�(�(�
�X�_�� ��6���:�:�	��:�(�(�(��X�_�� ��6���
:�
:�	��
:��"�E�E�#�"�E�(7�7�7�8�8�8��X�����j�1�1�@�B�B��X�_�S�\�Y�.�3�5�5�3;�3;�5�5�B�B�3;�j�X�_�S�\�X�-�H�J�J���J�J���rr�c�4�eZdZejZd�Zd�Zd�Zd�Z	dS)�WindowsPathTestc
���|j}|�t|d�������d��|�t|d�������d��|�t|d�������d��d}|�t||�������|��|�t||dz�������|dz��|�t||dz�������|dz��t	jd��5}||_|�t|�������|��|�t|d�������|��|�t|d�������tj�	|d����|�t|dd	d
�������tj�	|dd	d
����ddd��dS#1swxYwYdS)NrYr@rez\\server\share\r%rdrQr,r'r+)
rrrr�rTrrRrSr�r�r�)rr|�sharerKs    rrzWindowsPathTest.test_absolute�
s����H��	
����Q�Q�v�Y�Y�/�/�1�1�2�2�F�;�;�;�����Q�Q�w�Z�Z�0�0�2�2�3�3�W�=�=�=�����Q�Q�z�]�]�3�3�5�5�6�6�
�C�C�C�&������Q�Q�u�X�X�.�.�0�0�1�1�5�9�9�9�����Q�Q�u�s�{�^�^�4�4�6�6�7�7����E�E�E�����Q�Q�u�v�~�.�.�7�7�9�9�:�:�E�F�N�K�K�K��Z��
$�
$�	A��"'�F�����S���������0�0�%�8�8�8����S���3�����!2�!2�3�3�U�;�;�;����S���3�����!2�!2�3�3�R�W�\�\�%��5M�5M�N�N�N����S���3��S�!1�!1�!:�!:�!<�!<�=�=��W�\�\�%��c�3�?�?�
A�
A�
A�
	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A����	A�	A�	A�	A�	A�	As�D?K*�*K.�1K.c
��|j}|t��}|�t|�d����|td��h��|�t|�d����|td��h��|�t|�d����|td��h��|�ttt|�d������|�d�h��|�ttt|�d������|�d�h��dS)Nrrz*a\rzF*az\FILEaz\fileA)rrr�rr�r��mapr�r{s   rrzWindowsPathTest.test_glob�
s3���H��
�A�d�G�G������Q�V�V�G�_�_�-�-���4��1A�1A�/C�D�D�D�����Q�V�V�F�^�^�,�,���$����.A�B�B�B�����Q�V�V�E�]�]�+�+�q�q��w�/?�/?�-A�B�B�B�����S��a�f�f�W�o�o�6�6�7�7�Q�-�-�-��I�I�I�����S��a�f�f�U�m�m�4�4�5�5�1�
�
�
��G�G�G�G�Grc
���|j}|td��}|�t|�d����|td��h��|�t|�d����|td��h��|�ttt|�d������|�d�h��dS)Nrr!r�z*\r�z\dirD\FILEd)rrr�rr�r�rEr�r{s   rr"zWindowsPathTest.test_rglob�
s����H��
�A�d�F�O�O������Q�W�W�W�-�-�.�.�!�!�D�:K�2L�2L�0N�O�O�O�����Q�W�W�U�^�^�,�,���$��0D�0D�.F�G�G�G�����S��a�g�g�g�&6�&6�7�7�8�8�a�;N�;N�;N�:O�P�P�P�P�Prc
�`���������	��j�tj��5���dd����dd����dd����dd��d�d<�d����d����d	����d
����d����d���	��t
�j����t
�j����t
�j�����������������������	����	����������	�f	d
�}d�d<|��d�d<d�d<|����dd����dd��d�d<|��d�d<|��ddd��dS#1swxYwYdS)Nr_r]�HOMEPATH�	HOMEDRIVE�alice�USERNAMEz~/My Documentsz~alice/My Documentsz~bob/My Documentsz/~/My Documentszd:~/My Documentsr$c��	���dd���������d������t�j��d�d<�������d�����������d�������������������������������dS)NrKzC:/Users/alice/My DocumentsrJzC:/Users/bob/My Documents)r�rrXr�r)	r|rbr2r3r4r5r6r7rs	���������rr3z.WindowsPathTest.test_expanduser.<locals>.check�
s1������
�D�)�)�)�� � ������!"��#@�!A�!A�C�C�C��!�!�,��
�>�>�>�")��J��� � ������!"��#@�!A�!A�C�C�C�� � ������!"��#>�!?�!?�A�A�A�� � ������"�5�5�5�� � ������"�5�5�5�� � ������"�5�5�5�5�5rzC:\Users\alicezC:\zUsers\alicezC:\Users\eve)rrrr`r�r�rrXr)
rr3r|rbr2r3r4r5r6r7s
` @@@@@@@@rr9zWindowsPathTest.test_expanduser�
s�������������H��
�
*�
,�
,�1	���G�G�F�D�!�!�!��G�G�M�4�(�(�(��G�G�J��%�%�%��G�G�K��&�&�&�%�C�
�O���#�$�$�B���(�)�)�B���&�'�'�B���$�%�%�B���%�&�&�B���2���B����l�B�M�:�:�:����l�B�M�:�:�:����l�B�M�:�:�:����R�]�]�_�_�b�1�1�1����R�]�]�_�_�b�1�1�1����R�]�]�_�_�b�1�1�1�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6�1�C�
�O��E�G�G�G�%�C���,�C�
�O��E�G�G�G��G�G�K��&�&�&��G�G�J��%�%�%�!3�C�
���E�G�G�G�+�C��K��E�G�G�G�c1	�1	�1	�1	�1	�1	�1	�1	�1	�1	�1	�1	����1	�1	�1	�1	�1	�1	s�G2H#�#H'�*H'N)
r5r6r7rQrrrrrr"r9r8rrrArA�
sa������
�
�C�A�A�A�2H�H�H�Q�Q�Q�3�3�3�3�3rrAc�6�eZdZ	Gd�d��Zd�Zd�ZdS)�CompatiblePathTestc�"�eZdZ	d�Zd�Zd�ZdS)�CompatiblePathTest.CompatPathc��||_dSr�)�string)rrRs  r�__init__z&CompatiblePathTest.CompatPath.__init__s
�� �D�K�K�Krc�F�t|��|j�d|����Sr��r�rR�rr�s  r�__truediv__z)CompatiblePathTest.CompatPath.__truediv__s(���4��:�:���6�6�u�6�6�7�7�7rc�F�t|��|�d|j����Sr�rUrVs  r�__rtruediv__z*CompatiblePathTest.CompatPath.__rtruediv__
s(���4��:�:��6�6���6�6�7�7�7rN)r5r6r7rSrWrYr8rr�
CompatPathrP�
sF������	�	!�	!�	!�	8�	8�	8�	8�	8�	8�	8�	8rrZc�Z�tjd��|�d��z}|�||j��|�|jd��|�t��5tjd��dzddd��dS#1swxYwYdS)N�test�rightz
test/rightrl)rQr�rZrzrrRr�r��r�results  r�test_truedivzCompatiblePathTest.test_truediv
s����!�&�)�)�D�O�O�G�,D�,D�D�����f�d�o�6�6�6�������5�5�5�
�
�
�y�
)�
)�	*�	*���V�$�$�r�)�)�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*�	*�	*��;B � B$�'B$c�Z�|�d��tjd��z}|�||j��|�|jd��|�t��5dtjd��zddd��dS#1swxYwYdS)N�leftr\z	left/testrl)rZrQr�rzrrRr�r�r^s  r�
test_rtruedivz CompatiblePathTest.test_rtruedivs�������(�(�7�+;�F�+C�+C�C�����f�d�o�6�6�6�������4�4�4�
�
�
�y�
)�
)�	*�	*���!�&�)�)�)�)�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*�	*�	*raN)r5r6r7rZr`rdr8rrrNrN�
s_�������
8�8�8�8�8�8�8�8� *�*�*�*�*�*�*�*rrN�__main__)4r��collections.abcr�rzr�r�rArQrEr�rkrr�r�test.supportrrrr�test.support.os_helperrr	r<r4�ImportError�objectr�TestCaser:rTrjrMrqr�r��realpathr�r�rPr�rr�r�rrrr�r�rArNr5�mainr8rr�<module>rns�����������	�	�	�	�	�	�	�	�
�
�
�
���������
�
�
�
�
�
�
�
�������������������&�&�&�&�&�&�/�/�/�/�/�/�/�/�"�"�"�"�"�"�3�3�3�3�3�3�3�3���O�O�O�O�O�O�O�O��������C�#�#�#�����&;�&;�&;�&;�&;�v�&;�&;�&;�R!:�!:�!:�!:�!:�'��):�!:�!:�!:�H;6�;6�;6�;6�;6�$�h�&7�;6�;6�;6�DX.�X.�X.�X.�X.��X.�X.�X.�vI&�I&�I&�I&�I&�)�8�+<�I&�I&�I&�XX@�X@�X@�X@�X@�+�X�->�X@�X@�X@�t�����$�h�&7����>
�w�������(�(��.�.��
�(�/�"�'�T�/�E�G�G��
�X�_�R�W��_�F�H�H�
�������+������	������/���	���`A�`A�`A�`A�`A�F�`A�`A�`A�F#�����}�h�/����(�t�t�t�t�t�M�8�#4�t�t���t�n	�_�_�_�_�_�m�X�%6�_�_�	��_�D&*�&*�&*�&*�&*��*�&*�&*�&*�R�z����H�M�O�O�O�O�O��s�A�	A)�(A)