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

�KeY����ddlZddlZddlZddlZddlZddlmZddlmZmZddl	m
Z
ddlmZddl
mZ	ddlZn
#e$rdZYnwxYw	ejdZn
#e$rdZYnwxYw	ddlZdZd	�Zn
#e$rdZYnwxYwd
�Zd�ZGd�d
ej��ZGd�de��ZGd�dejej��ZGd�de��Zedkrej ��dSdS)�N)�	os_helper)�
TestFailed�
is_emscripten)�FakePath)�test_genericpath)�
TemporaryFileTFc��tjdd���j}tjtjtjg|_tj|_||dd��}|s3td�tj	�������tj
|��}||||��}|d|�S)N�kernel32T)�use_last_errorrz&failed to get short path name 0x{:08X})�ctypes�WinDLL�GetShortPathNameW�	c_wchar_p�c_uint32�argtypes�restype�OSError�format�get_last_error�create_unicode_buffer)�path�GSPN�
result_len�results    �:/usr/local/apps/python3/lib/python3.11/test/test_ntpath.py�_getshortpathnamer!s����}�Z��=�=�=�O���)�6�+;�V�_�M��
������T�$��a�(�(�
��	<��B�!�6�&�"7�"9�"9�:�:�<�<�
<��-�j�9�9���T�$��
�3�3�
��k�z�k�"�"�c���t|tttjf��r&tjtj|����St|d��rtd�|D����S|S)N�__iter__c3�bK�|]*}tjtj|����V��+dS�N)�ntpath�normcase�os�fsdecode��.0�ps  r�	<genexpr>z_norm.<locals>.<genexpr>1s4����C�C��V�_�R�[��^�^�4�4�C�C�C�C�C�Cr)
�
isinstance�bytes�strr$�PathLiker"r#r%�hasattr�tuple)rs r�_normr0-sm���$���R�[�1�2�2�D���r�{�4�0�0�1�1�1�	��z�	"�	"�D��C�C�d�C�C�C�C�C�C��Krc	�$�|�dd��}t|��}||kr^t|��t|��kr>tt	|���dt	|���dt	|�������|�dd��}|�dd��}|�d	d
��}|�dd��}|�d
d��}|�dd��}tj|���d��}|�dd���d��}tj
��5tjdt��t|��}ddd��n#1swxYwYt|��t|��kr>tt	|���dt	|���dt|�������dS)N�\�\\z should return: z but returned: z('z(b'z("z(b"z['z[b'z["z[b"z, 'z, b'z, "z, b"�latin1�ascii�backslashreplace�ignore)�replace�evalr0rr,r$�fsencode�decode�encode�warnings�catch_warnings�simplefilter�DeprecationWarning�repr)�fn�
wantResult�	gotResults   r�testerrE5s��	���D�&�	!�	!�B��R���I��Y���5��#4�#4��i�8H�8H�#H�#H���B������Z�����#�i�.�.�.�:�;�;�	;�
���D�%�	 �	 �B�	���D�%�	 �	 �B�	���D�%�	 �	 �B�	���D�%�	 �	 �B�	���E�6�	"�	"�B�	���E�6�	"�	"�B�	��R���	�	��	)�	)�B�	���7�.�	/�	/�	6�	6�w�	?�	?�B�	�	 �	"�	"�����h�(:�;�;�;���H�H�	�������������������
�Z���E�)�,�,�,�,���B������Z�����$�y�/�/�/�;�<�<�	<�-�,s�1*F'�'F+�.F+c��eZdZd�Zd�ZdS)�NtpathTestCasec��||ks t|��t|��krdS|�||��dSr!)r0�assertEqual)�self�path1�path2s   r�assertPathEqualzNtpathTestCase.assertPathEqualNsB���E�>�>�U�5�\�\�U�5�\�\�9�9��F������&�&�&�&�&rc�f�|�t|��t|����dSr!)�assertInr0)rJr�pathsets   r�assertPathInzNtpathTestCase.assertPathInSs(���
�
�e�D�k�k�5��>�>�2�2�2�2�2rN)�__name__�
__module__�__qualname__rMrQ�rrrGrGMs2������'�'�'�
3�3�3�3�3rrGc��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zej
ejed
��d�����Zej
ejed
��d�����Zej
ejed
��d
�����Zej
ejed
��d�����Zej
ejed
��d�����Zej
ejed
��d�����Zej
ejed
��d�����Zejed
��d���Zejed
��ejed��d�����Zd�Zejejd��d���Zd�Zejed��d���Z d�Z!d�Z"ej#e$d��d���Z%d�Z&d �Z'ejed!��d"���Z(d#S)$�
TestNtpathc�F�tdd��tdd��tdd��tdd��td	d
��tdd��td
d��tdd��tdd��tdd��dS)Nzntpath.splitext("foo.ext"))�foo�.extzntpath.splitext("/foo/foo.ext"))z/foo/foorZzntpath.splitext(".ext"))rZ�zntpath.splitext("\foo.ext\foo"))z\foo.ext\foor[zntpath.splitext("foo.ext\"))zfoo.ext\r[zntpath.splitext(""))r[r[zntpath.splitext("foo.bar.ext"))zfoo.barrZz!ntpath.splitext("xx/foo.bar.ext"))z
xx/foo.barrZz!ntpath.splitext("xx\foo.bar.ext"))z
xx\foo.barrZzntpath.splitext("c:a/b\c.d"))zc:a/b\cz.d�rE�rJs r�
test_splitextzTestNtpath.test_splitextXs����+�_�=�=�=��0�2F�G�G�G��(�,�7�7�7��2�4J�K�K�K��-�/@�A�A�A��$�h�/�/�/��/�1D�E�E�E��2�4J�K�K�K��3�5L�M�M�M��.�0B�C�C�C�C�Crc�v�tdd��tdd��tdd��tdd��td	d
��tdd��td
d��tdd��|�tjd��d��tdd��tdd��tdd��tdd��tdd��tdd��tdd ��td!d"��td#d$��td%d&��td'd(��td)d*��td+d,��td-d.��td/d0��td1d2��td3d4��td5d6��td7d8��td9d:��td;d<��td=d>��td?d@��tdAdB��tdCdD��dS)ENzntpath.splitdrive("c:\foo\bar"))�c:�\foo\barzntpath.splitdrive("c:/foo/bar"))r`�/foo/barz/ntpath.splitdrive("\\conky\mountpoint\foo\bar"))z\\conky\mountpointraz/ntpath.splitdrive("//conky/mountpoint/foo/bar"))z//conky/mountpointrbz0ntpath.splitdrive("\\\conky\mountpoint\foo\bar"))z\\\conky�\mountpoint\foo\barz0ntpath.splitdrive("///conky/mountpoint/foo/bar"))z///conky�/mountpoint/foo/barz0ntpath.splitdrive("\\conky\\mountpoint\foo\bar"))z\\conky\rcz0ntpath.splitdrive("//conky//mountpoint/foo/bar"))z//conky/rdu//conky/MOUNTPOİNT/foo/bar)u//conky/MOUNTPOİNTrbzntpath.splitdrive("//?/c:"))�//?/c:r[zntpath.splitdrive("//?/c:/"))re�/zntpath.splitdrive("//?/c:/dir"))re�/dirzntpath.splitdrive("//?/UNC"))z//?/UNCr[zntpath.splitdrive("//?/UNC/"))z//?/UNC/r[z$ntpath.splitdrive("//?/UNC/server/"))z//?/UNC/server/r[z)ntpath.splitdrive("//?/UNC/server/share"))�//?/UNC/server/sharer[z-ntpath.splitdrive("//?/UNC/server/share/dir"))rhrgzJntpath.splitdrive("//?/VOLUME{00000000-0000-0000-0000-000000000000}/spam"))z0//?/VOLUME{00000000-0000-0000-0000-000000000000}z/spamz'ntpath.splitdrive("//?/BootPartition/"))z//?/BootPartitionrfzntpath.splitdrive("\\?\c:"))�\\?\c:r[zntpath.splitdrive("\\?\c:\"))rir2zntpath.splitdrive("\\?\c:\dir"))ri�\dirzntpath.splitdrive("\\?\UNC"))z\\?\UNCr[zntpath.splitdrive("\\?\UNC\"))z\\?\UNC\r[z$ntpath.splitdrive("\\?\UNC\server\"))z\\?\UNC\server\r[z)ntpath.splitdrive("\\?\UNC\server\share"))�\\?\UNC\server\sharer[z-ntpath.splitdrive("\\?\UNC\server\share\dir"))rkrjzJntpath.splitdrive("\\?\VOLUME{00000000-0000-0000-0000-000000000000}\spam"))z0\\?\VOLUME{00000000-0000-0000-0000-000000000000}z\spamz'ntpath.splitdrive("\\?\BootPartition\"))z\\?\BootPartitionr2zntpath.splitdrive("//"))z//r[zntpath.splitdrive("///"))z///r[zntpath.splitdrive("///y"))z///yr[zntpath.splitdrive("//x"))z//xr[zntpath.splitdrive("//x/"))z//x/r[)rErIr"�
splitdriver]s r�test_splitdrivezTestNtpath.test_splitdriveds����2�#�	%�	%�	%��0�!�	#�	#�	#��E�6�	8�	8�	8��@�1�	3�	3�	3��G�5�	7�	7�	7��A�/�	1�	1�	1��G�8�	:�	:�	:��A�2�	4�	4�	4�	
����*�+H�I�I�<�	>�	>�	>�	�,�n�=�=�=��-��?�?�?��0�2D�E�E�E��-��?�?�?��.�0@�A�A�A��5�7N�O�O�O��:�<X�Y�Y�Y��>�@`�a�a�a��[�L�	N�	N�	N��8�:T�U�U�U��/�1B�C�C�C��1�3F�G�G�G��4�6L�M�M�M��0�2D�E�E�E��2�4H�I�I�I��:�<X�Y�Y�Y��?�Ab�c�c�c��D�5�	7�	7�	7��_�P�	R�	R�	R��<�>\�]�]�]�	�(�*�5�5�5��)�;�7�7�7��*�L�9�9�9��)�;�7�7�7��*�L�9�9�9�9�9rc���tdd��tdd��tdd��tdd��td	d
��tdd��dS)
Nzntpath.split("c:\foo\bar"))zc:\foo�barz*ntpath.split("\\conky\mountpoint\foo\bar"))z\\conky\mountpoint\foorozntpath.split("c:\"))�c:\r[z#ntpath.split("\\conky\mountpoint\"))z\\conky\mountpoint\r[zntpath.split("c:/"))�c:/r[z#ntpath.split("//conky/mountpoint/"))z//conky/mountpoint/r[r\r]s r�
test_splitzTestNtpath.test_split�s����-�/A�B�B�B��@�4�	6�	6�	6�	�%�|�4�4�4��8�.�	0�	0�	0�	�$�k�2�2�2��4�6Q�R�R�R�R�Rrc���tdd��tdd��tdd��tdd��tdd��tdd��dS)Nzntpath.isabs("c:\")�z#ntpath.isabs("\\conky\mountpoint\")zntpath.isabs("\foo")zntpath.isabs("\foo\bar")z"ntpath.isabs("\\conky\mountpoint")zntpath.isabs("\\.\C:")r\r]s r�
test_isabszTestNtpath.test_isabs�sp���%�q�)�)�)��8�!�<�<�<��&��*�*�*��+�Q�/�/�/�	�6��:�:�:��*�A�.�.�.�.�.rc�f�tdd��tdd��tdd��dS)Nz>ntpath.commonprefix(["/home/swenson/spam", "/home/swen/spam"])z
/home/swenz;ntpath.commonprefix(["\home\swen\spam", "\home\swen\eggs"])z\home\swen\z;ntpath.commonprefix(["/home/swen/spam", "/home/swen/spam"])z/home/swen/spamr\r]s r�test_commonprefixzTestNtpath.test_commonprefix�sT���O��	�	�	��R��	!�	!�	!��L� �	"�	"�	"�	"�	"rc	���tdd��tdd��tdd��tdd��tdd	��td
d��tdd
��tdd��tdd��tdd��tdd��tdd��tdd��tdd��tdd��tdd��tdd��tdd��tdd��td d��td!d"��td#d$��td%d&��td'd(��td)d*��td+d,��td-d.��td/d0��td1d2��td3d4��td5d6��td7d8��td9d:��td;d<��td=d<��td>d0��td?d0��td@d0��tdAd0��tdBd8��tdCd8��tdDd8��tdEdF��tdGdH��tdIdJ��tdKdL��dMD]}dND]}tdO|�dP|�dQ�|����tdRdS��tdTdS��tdUdS��tdVdW��tdXdY��tdZd[��dS)\Nzntpath.join("")r[zntpath.join("", "", "")zntpath.join("a")�azntpath.join("/a")z/azntpath.join("\a")�\azntpath.join("a:")za:zntpath.join("a:", "\b")za:\bzntpath.join("a", "\b")z\bzntpath.join("a", "b", "c")za\b\czntpath.join("a\", "b", "c")zntpath.join("a", "b\", "c")zntpath.join("a", "b", "\c")z\czntpath.join("d:\", "\pleep")zd:\pleepzntpath.join("d:\", "a", "b")zd:\a\bzntpath.join('', 'a')z ntpath.join('', '', '', '', 'a')zntpath.join('a', '')za\z ntpath.join('a', '', '', '', '')zntpath.join('a\', '')z!ntpath.join('a\', '', '', '', '')zntpath.join('a/', '')za/zntpath.join('a/b', 'x/y')za/b\x/yzntpath.join('/a/b', 'x/y')z/a/b\x/yzntpath.join('/a/b/', 'x/y')z/a/b/x/yzntpath.join('c:', 'x/y')zc:x/yzntpath.join('c:a/b', 'x/y')z	c:a/b\x/yzntpath.join('c:a/b/', 'x/y')z	c:a/b/x/yzntpath.join('c:/', 'x/y')zc:/x/yzntpath.join('c:/a/b', 'x/y')z
c:/a/b\x/yzntpath.join('c:/a/b/', 'x/y')z
c:/a/b/x/yz&ntpath.join('//computer/share', 'x/y')z//computer/share\x/yz'ntpath.join('//computer/share/', 'x/y')z//computer/share/x/yz*ntpath.join('//computer/share/a/b', 'x/y')z//computer/share/a/b\x/yzntpath.join('a/b', '/x/y')z/x/yzntpath.join('/a/b', '/x/y')zntpath.join('c:', '/x/y')zntpath.join('c:a/b', '/x/y')zntpath.join('c:/', '/x/y')zntpath.join('c:/a/b', '/x/y')z'ntpath.join('//computer/share', '/x/y')z(ntpath.join('//computer/share/', '/x/y')z)ntpath.join('//computer/share/a', '/x/y')zntpath.join('c:', 'C:x/y')zC:x/yzntpath.join('c:a/b', 'C:x/y')z	C:a/b\x/yzntpath.join('c:/', 'C:x/y')zC:/x/yzntpath.join('c:/a/b', 'C:x/y')z
C:/a/b\x/y)
r[za/bz/a/br`zc:a/brqzc:/a/bz//computer/sharez//computer/share/z//computer/share/a/b)zd:zd:x/yzd:/zd:/x/yz//machine/commonz//machine/common/z//machine/common/x/yzntpath.join(z, �)z*ntpath.join('\\computer\share\', 'a', 'b')z\\computer\share\a\bz)ntpath.join('\\computer\share', 'a', 'b')z&ntpath.join('\\computer\share', 'a\b')z*ntpath.join('//computer/share/', 'a', 'b')z//computer/share/a\bz)ntpath.join('//computer/share', 'a', 'b')z//computer/share\a\bz&ntpath.join('//computer/share', 'a/b')z//computer/share\a/br\)rJ�x�ys   r�	test_joinzTestNtpath.test_join�s���� �"�%�%�%��(�"�-�-�-��!�3�'�'�'��"�D�)�)�)��#�U�+�+�+��"�D�)�)�)��)�7�3�3�3��(�%�0�0�0��+�Y�7�7�7��-�y�9�9�9��-�y�9�9�9��-�u�5�5�5��/��=�=�=��.�
�;�;�;��%�s�+�+�+��1�3�7�7�7��%�u�-�-�-��1�5�9�9�9��'��/�/�/��3�U�;�;�;��&��-�-�-��*�J�7�7�7��+�[�9�9�9��,�j�9�9�9��)�7�3�3�3��,�l�;�;�;��-�{�;�;�;��*�H�5�5�5��-�}�=�=�=��.��=�=�=��7�9P�Q�Q�Q��8�:P�Q�Q�Q��;�=X�Y�Y�Y��+�V�4�4�4��,�f�5�5�5��*�H�5�5�5��-�x�8�8�8��+�X�6�6�6��.��9�9�9��8�:P�Q�Q�Q��9�;Q�R�R�R��:�<R�S�S�S��+�W�5�5�5��.��=�=�=��,�h�7�7�7��/��?�?�?�S�	:�	:�A�W�
:�
:�������1�1�1�5�q�9�9�9�9�
:�	�?�A\�]�]�]��=�?Z�[�[�[��;�=X�Y�Y�Y��;�=T�U�U�U��:�<T�U�U�U��7�9P�Q�Q�Q�Q�Qrc�F�tdd��tdd��tdd��tdd��tdd��td	d
��tdd��td
d��tdd��tdd��tdd��tdd��tdd��tdd��tdd��tdd��tdd��tdd��td d!��td"d#��td$d%��td&d'��td(d)��td*d+��td,d-��td.d/��td0d1��td2d1��td3d1��td4d1��td5d6��td7d8��td9d:��td;d<��dS)=Nz$ntpath.normpath('A//////././//.//B')zA\Bzntpath.normpath('A/./B')zntpath.normpath('A/foo/../B')zntpath.normpath('C:A//B')zC:A\Bzntpath.normpath('D:A/./B')zD:A\Bzntpath.normpath('e:A/foo/../B')ze:A\Bzntpath.normpath('C:///A//B')zC:\A\Bzntpath.normpath('D:///A/./B')zD:\A\Bz"ntpath.normpath('e:///A/foo/../B')ze:\A\Bzntpath.normpath('..')�..zntpath.normpath('.')�.zntpath.normpath('')zntpath.normpath('/')r2zntpath.normpath('c:/')rpzntpath.normpath('/../.././..')zntpath.normpath('c:/../../..')zntpath.normpath('../.././..')�..\..\..zntpath.normpath('K:../.././..')z
K:..\..\..zntpath.normpath('C:////a/b')zC:\a\bz'ntpath.normpath('//machine/share//a/b')z\\machine\share\a\bzntpath.normpath('\\.\NUL')�\\.\NULzntpath.normpath('\\?\D:/XY\Z')z\\?\D:/XY\Zz1ntpath.normpath('handbook/../../Tests/image.png')z..\Tests\image.pngz4ntpath.normpath('handbook/../../../Tests/image.png')z..\..\Tests\image.pngz.ntpath.normpath('handbook///../a/.././../b/c')z..\b\cz/ntpath.normpath('handbook/a/../..///../../b/c')z	..\..\b\cz$ntpath.normpath('//server/share/..')�\\server\share\z%ntpath.normpath('//server/share/../')z'ntpath.normpath('//server/share/../..')z(ntpath.normpath('//server/share/../../')zntpath.normpath('\\foo\\')z\\foo\\zntpath.normpath('\\foo\')z\\foo\zntpath.normpath('\\foo')z\\foozntpath.normpath('\\')r3r\r]s r�
test_normpathzTestNtpath.test_normpath�sS���5�v�>�>�>��)�6�2�2�2��.��7�7�7��*�H�5�5�5��+�X�6�6�6��0�(�;�;�;��-�y�9�9�9��.�	�:�:�:��3�Y�?�?�?��&��.�.�.��%�t�,�,�,��$�d�+�+�+��%�t�,�,�,��'��0�0�0��/��6�6�6��/��8�8�8��.��<�<�<��0�-�@�@�@��-�y�9�9�9��8�:P�Q�Q�Q��.�
�;�;�;��3�^�D�D�D��B�DY�Z�Z�Z��E�G_�`�`�`��?��K�K�K��@�,�O�O�O��5�;P�Q�Q�Q��6�;P�Q�Q�Q��8�;P�Q�Q�Q��9�;P�Q�Q�Q�	�/��?�?�?��-�{�;�;�;��+�Y�7�7�7��(�&�1�1�1�1�1rc���tjtj����}t	d|��t	d|��t	d|��t	d|��t	d|��dS)Nzntpath.realpath('.')zntpath.realpath('./.')z&ntpath.realpath('/'.join(['.'] * 100))zntpath.realpath('.\.')z&ntpath.realpath('\'.join(['.'] * 100)))r"�normpathr$�getcwdrE�rJ�expecteds  r�test_realpath_curdirzTestNtpath.test_realpath_curdir#sr���?�2�9�;�;�/�/���%�x�0�0�0��'��2�2�2��7��B�B�B��(�(�3�3�3��8�(�C�C�C�C�Crc��tjtj����}t	dtj|����t	dtjtj|������t	dtj|��ddz��t	dtjtj|������t	dtj|��ddz��dS)Nzntpath.realpath('..')zntpath.realpath('../..')z&ntpath.realpath('/'.join(['..'] * 50))rr2zntpath.realpath('..\..')z&ntpath.realpath('\'.join(['..'] * 50)))r"r�r$r�rE�dirnamerlr�s  r�test_realpath_pardirzTestNtpath.test_realpath_pardir+s����?�2�9�;�;�/�/���&���x�(@�(@�A�A�A��)��~�f�n�X�6�6�7�7�	9�	9�	9��7�� ��*�*�1�-��4�	6�	6�	6��*��~�f�n�X�6�6�7�7�	9�	9�	9��8�� ��*�*�1�-��4�	6�	6�	6�	6�	6rzneed _getfinalpathnamec�0�tjtj��}t	|d�����|�tj|��|�tj|dz��tj	||dz��|�
tj|dz��|��|�
tjtj|dz����tj|����dS�N�wb�1)
r"�abspathr�TESTFN�open�close�
addCleanup�unlinkr$�symlinkrM�realpathr:�rJ�ABSTFNs  r�test_realpath_basiczTestNtpath.test_realpath_basic7s�����	� 0�1�1���V�T��� � �"�"�"����	�(�&�1�1�1����	�(�&�3�,�7�7�7�
�
�6�6�C�<�(�(�(����V�_�V�c�\�:�:�F�C�C�C����V�_�R�[��#��-F�-F�G�G���V�,�,�	.�	.�	.�	.�	.rc�X�tjtj��}t	j|dz|��|�tj|��|�ttj
|d���|�ttj
|dzd���dS)Nr�T��strict�2)r"r�rr�r$r�r�r��assertRaises�FileNotFoundErrorr�r�s  r�test_realpath_strictzTestNtpath.test_realpath_strictDs���
��	� 0�1�1��
�
�6�C�<��(�(�(����	�(�&�1�1�1����+�V�_�f�T��R�R�R����+�V�_�f�s�l�SW��X�X�X�X�Xrc��tjtj��}t	|d�����|�tj|��|�tj|dz��tj	|tj
|dz����|�tj|dz��|��dSr�)
r"r�rr�r�r�r�r�r$r��relpathrMr�r�s  r�test_realpath_relativez!TestNtpath.test_realpath_relativeOs�����	� 0�1�1���V�T��� � �"�"�"����	�(�&�1�1�1����	�(�&�3�,�7�7�7�
�
�6�6�>�&�3�,�7�7�8�8�8����V�_�V�c�\�:�:�F�C�C�C�C�Crc�|	�tjtj��}t	j|��|�tj|��tj|��5t	jd��t	j	d��t	j
dd��t	j
dd��t	j	d��t	j
dd��t	j
dd��t	j
d	d
��t	j
dd��t	j
d
d��t	j
|dzd��t	j
dd��|�tjd��|dz��|�tjd��|dz��|�tjd
��|dz��|�tjd��|dz��|�tjd��|dz��|�tjd��|dz��|�tjd��|dz��|�tjd��|dz��|�tjd��t	j
|dz����|�tjd��t	j
|dz����|�tjd��t	j
|dz����|�tjd��t	j
|dz����|�tjd��t	j
|dz����|�tjd ��t	j
|dz����|�tjd!��t	j
|dz����|�tjd"��t	j
|dz����ddd��dS#1swxYwYdS)#N�subdirr��	recursiver��parentrJ�missing�brokenz
broken\bar�broken1zself\self\broken�broken2z"subdir\parent\subdir\parent\broken�broken3z\broken�broken4zrecursive\..\broken�broken5z\missingz
broken\fooz\missing\fooz\broken\barzbroken1\bazz\broken\bar\bazz\self\self\missingz$\subdir\parent\subdir\parent\missingsbrokens
broken\foosbroken1sbroken1\bazsbroken2sbroken3sbroken4sbroken5)r"r�rr�r$�mkdirr��rmtree�
change_cwd�chdirr�rMr�r:r�s  r�test_realpath_broken_symlinksz(TestNtpath.test_realpath_broken_symlinksZs�����	� 0�1�1��
���������	�(�&�1�1�1�
�
!�&�
)�
)�0	D�0	D��H�X�����H�X�����J�s�K�(�(�(��J�t�X�&�&�&��H�T�N�N�N��J�s�F�#�#�#��J�y�(�+�+�+��J�}�i�0�0�0��J�*�I�6�6�6��J�<�i�H�H�H��J�v�
�*�I�6�6�6��J�-�y�9�9�9�� � ����!:�!:�!'�+�!5�
7�
7�
7�� � ����!?�!?�!'�/�!9�
;�
;�
;�
� � ����!<�!<�!'�.�!8�
:�
:�
:�� � ����!@�!@�!'�*<�!<�
>�
>�
>�� � ����!;�!;�!'�*?�!?�
A�
A�
A�� � ����!;�!;�!'�*Q�!Q�
S�
S�
S�� � ����!;�!;�!'�+�!5�
7�
7�
7�� � ����!;�!;�!'�+�!5�
7�
7�
7�
� � ����!;�!;�!#��V�k�-A�!B�!B�
D�
D�
D�� � ����!@�!@�!#��V�o�-E�!F�!F�
H�
H�
H�� � ����!=�!=�!#��V�n�-D�!E�!E�
G�
G�
G�� � ����!A�!A�!#��V�6H�-H�!I�!I�
K�
K�
K�� � ����!<�!<�!#��V�6K�-K�!L�!L�
N�
N�
N�� � ����!=�!=�!#��V�6]�-]�!^�!^�
`�
`�
`�� � ����!<�!<�!#��V�k�-A�!B�!B�
D�
D�
D�� � ����!<�!<�!#��V�k�-A�!B�!B�
D�
D�
D�_0	D�0	D�0	D�0	D�0	D�0	D�0	D�0	D�0	D�0	D�0	D�0	D����0	D�0	D�0	D�0	D�0	D�0	Ds�'P=R1�1R5�8R5c�l�tjtj��}|�tj|��|�tj|dz��|�tj|dz��|�tj|dz��|�tj|dz��|�tj|dz��t
j||��|�tj	|��|��t
j|dz|dz��t
j|dz|dz��|dz|dzf}|�
tj	|dz��|��|�
tj	|dz��|��|�
tj	|dz��d�|D����|�tj	|dz��tj|����|�tj	|d	z��tj|��d
z��t
j|dz|dz��|�tj	|dztj|��zdz��|dz��|�
tj	|dztj|��zdz��|��t
jtj|��d
z|dz��|�tj	|dz��|dz��t
jdtjtj|����zdztj|��zdz|dz��|�tj	|dz��|dz��|�tj	tj|����|��dS)Nr�r�r}�cry�1\xc3�@K�|]}tj|d��V��dS)r|N)r"�join)r'�rs  rr)z9TestNtpath.test_realpath_symlink_loops.<locals>.<genexpr>�s.����A�A�1�6�;�q�#�.�.�A�A�A�A�A�Ar�1\..�1\..\xz\xr|�1\..\�a\b�..\r2)
r"r�rr�r�r�r$r�rMr�rQr��basename)rJr�r�s   r�test_realpath_symlink_loopsz&TestNtpath.test_realpath_symlink_loops�s�����	� 0�1�1�����	�(�&�1�1�1����	�(�&�3�,�7�7�7����	�(�&�3�,�7�7�7����	�(�&�3�,�7�7�7����	�(�&�3�,�7�7�7����	�(�&�3�,�7�7�7�
�
�6�6�"�"�"����V�_�V�4�4�f�=�=�=�
�
�6�C�<��#��.�.�.�
�
�6�C�<��#��.�.�.��S�L�&�3�,�/�����&�/�&�3�,�7�7��B�B�B����&�/�&�3�,�7�7��B�B�B����&�/�&�6�/�:�:�A�A��A�A�A�	C�	C�	C����V�_�V�g�-=�>�>�#�^�F�3�3�	5�	5�	5����V�_�V�j�-@�A�A�#�^�F�3�3�e�;�	=�	=�	=�
�
�6�C�<��#��.�.�.����V�_�V�i�-?�/5��v�/F�/F�.G�IL�.M�N�N�#�c�\�	+�	+�	+�	
���&�/�&�9�*<�,2�O�F�,C�,C�+D�FI�+J�K�K�"�	$�	$�	$�	�
�6�?�6�*�*�V�3�V�c�\�B�B�B����V�_�V�c�\�:�:�F�S�L�I�I�I�
�
�6�F�O�F�N�6�,B�,B�C�C�C���"�O�F�3�3�4�69�:�;A�C�<�	I�	I�	I����V�_�V�c�\�:�:�F�S�L�I�I�I�	
���V�_�V�_�V�-D�-D�E�E�v�N�N�N�N�Nrc��tjtj��}|�tj|��|�tj|dz��|�tj|dz��|�tj|dz��|�tj|dz��|�tj|dz��t
j||��|�ttj
|d���t
j|dz|dz��t
j|dz|dz��|�ttj
|dzd���|�ttj
|dzd���|�ttj
|dzd���|�tj
|d	zd���tj|����|�ttj
|d
zd���t
j|dz|dz��|�ttj
|dztj
|��zdzd���|�ttj
|dztj
|��zdzd���t
jtj
|��d
z|dz��|�ttj
|dzd���t
jdtj
tj|����zdztj
|��zdz|dz��|�ttj
|dzd���|�ttj
tj
|��d���dS)Nr�r�r}r�ryTr�r�r�r�r|r�r�r�r2)r"r�rr�r�r�r$r�r�rr�rMr�r�r�s  r�"test_realpath_symlink_loops_strictz-TestNtpath.test_realpath_symlink_loops_strict�s�����	� 0�1�1�����	�(�&�1�1�1����	�(�&�3�,�7�7�7����	�(�&�3�,�7�7�7����	�(�&�3�,�7�7�7����	�(�&�3�,�7�7�7����	�(�&�3�,�7�7�7�
�
�6�6�"�"�"����'�6�?�F�4��H�H�H�
�
�6�C�<��#��.�.�.�
�
�6�C�<��#��.�.�.����'�6�?�F�S�L���N�N�N����'�6�?�F�S�L���N�N�N����'�6�?�F�V�O�D��Q�Q�Q�	
���V�_�V�g�-=�d�K�K�K�#�^�F�3�3�	5�	5�	5����'�6�?�F�Z�4G�PT��U�U�U�
�
�6�C�<��#��.�.�.����'�6�?�F�Y�4F�/5��v�/F�/F�5G�IL�5M�48�	�	:�	:�	:�	
���'�6�?� �9�,�v��v�/F�/F�F��L�!%�	�	'�	'�	'�	�
�6�?�6�*�*�V�3�V�c�\�B�B�B����'�6�?�F�S�L���N�N�N�
�
�6�F�O�F�N�6�,B�,B�C�C�C���"�O�F�3�3�4�69�:�;A�C�<�	I�	I�	I����'�6�?�F�S�L���N�N�N�	
���'�6�?�F�O�F�4K�4K�!%�	�	'�	'�	'�	'�	'rc��tjtj��}|�tj|dz��|�tjd|zdz��|�tj|dz��|�tj|dz��t
|dzd��5}|�d��ddd��n#1swxYwYtj	|dz|dz��t
d|zdzd��5}|�d��ddd��n#1swxYwYtj	d|zdz|dz��|�
tj|dz��|dz��|�
tj|dz��d|zdz��t
tj|dz��d	��5}|�|�
��d��ddd��n#1swxYwYt
tj|dz��d	��5}|�|�
��d��ddd��n#1swxYwY|�
tjd|zdz��d|zdz��|�
tjd|zdz��d|zdz��dS)
N�3z\\?\z3.�3linkz3.linkr��0�1�rb)r"r�rr�r�r�r��writer$r�rMr�rI�read)rJr��fs   r�test_realpath_symlink_prefixz'TestNtpath.test_realpath_symlink_prefix�s�����	� 0�1�1�����	�(�&�3�,�7�7�7����	�(�)�f�*<�t�*C�D�D�D����	�(�&�7�*:�;�;�;����	�(�&�8�*;�<�<�<�
�&�3�,��
%�
%�	��
�G�G�D�M�M�M�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�6�C�<��'�!1�2�2�2�
�)�f�$�t�+�T�
2�
2�	�a�
�G�G�D�M�M�M�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�9�v�%��,�f�x�.?�@�@�@����V�_�V�g�-=�>�>�#�c�\�	+�	+�	+����V�_�V�h�->�?�?�&��/�$�6�	8�	8�	8��&�/�&�7�"2�3�3�T�
:�
:�	-�a����Q�V�V�X�X�t�,�,�,�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�
�&�/�&�8�"3�4�4�d�
;�
;�	-�q����Q�V�V�X�X�t�,�,�,�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�	
���V�_�Y��-?�'�-I�J�J�&��/�#�5�	7�	7�	7����V�_�Y��-?�(�-J�K�K�&��/�$�6�	8�	8�	8�	8�	8sH�C#�#C'�*C'�E�E�E�.)H#�#H'�*H'�)J�J�Jc�&�tdd��dS)Nzntpath.realpath('NUL')r�r\r]s r�test_realpath_nulzTestNtpath.test_realpath_nuls���'��4�4�4�4�4rzneed _getshortpathnamec��tjtj��}tj|��tj|��t
j|��|�tj|��tj	|d��}t
j|��t|��}tj	|d��}tj	|d��}t|d��5}|�d��ddd��n#1swxYwY|�
|tj|����tj|��5|�
|tjd����ddd��n#1swxYwYtj|�����5|�
|tjd����ddd��n#1swxYwYtj|��5|�
|tjd����ddd��dS#1swxYwYdS)N�MyVeryLongDirectoryNamezfile.txtr�scontent)r"r�rr�r�r�r$r�r�r�rr�r�rMr�r��lower)rJr��
test_dir_long�test_dir_short�test_file_long�test_file_shortr�s       r�test_realpath_cwdzTestNtpath.test_realpath_cwds)����	� 0�1�1����� � � ���� � � �
���������	�(�&�1�1�1���F�,E�F�F�
�
������*�=�9�9����]�J�?�?�� �+�n�j�A�A��
�.�$�
'�
'�	 �1�
�G�G�J����	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 ����	 �	 �	 �	 �	
���^�V�_�_�-M�-M�N�N�N�
�
!�-�
0�
0�	N�	N�� � �����1L�1L�M�M�M�	N�	N�	N�	N�	N�	N�	N�	N�	N�	N�	N����	N�	N�	N�	N�
�
!�-�"5�"5�"7�"7�
8�
8�	N�	N�� � �����1L�1L�M�M�M�	N�	N�	N�	N�	N�	N�	N�	N�	N�	N�	N����	N�	N�	N�	N�
�
!�.�
1�
1�	N�	N�� � �����1L�1L�M�M�M�	N�	N�	N�	N�	N�	N�	N�	N�	N�	N�	N�	N����	N�	N�	N�	N�	N�	NsH�-D�D�D�)F�F�F�<)G1�1G5�8G5�)I�I
�
I
c��tj��5}|���d|d<d|d<d|d<tdd��tdd	��td
d��tdd
��tdd��tdd��tdd��tdd��tdd��tdd��tdd��tdd	��tdd��tdd��tdd��td d!��td"d#��td$d%��td&d'��ddd��dS#1swxYwYdS)(NrorY�baz1z{foo�baz2z{foo}zntpath.expandvars("foo")zntpath.expandvars("$foo bar")zbar barzntpath.expandvars("${foo}bar")�barbarzntpath.expandvars("$[foo]bar")z	$[foo]barzntpath.expandvars("$bar bar")z$bar barzntpath.expandvars("$?bar")z$?barzntpath.expandvars("$foo}bar")zbar}barzntpath.expandvars("${foo")z${foozntpath.expandvars("${{foo}}")zbaz1}zntpath.expandvars("$foo$foo")zntpath.expandvars("$bar$bar")z$bar$barzntpath.expandvars("%foo% bar")zntpath.expandvars("%foo%bar")zntpath.expandvars("%foo%%foo%")z$ntpath.expandvars("%%foo%%foo%foo%")z%foo%foobarzntpath.expandvars("%?bar%")z%?bar%zntpath.expandvars("%foo%%bar")zbar%barz ntpath.expandvars("'%foo%'%bar")z'%foo%'%barzntpath.expandvars("bar'%foo%")z	bar'%foo%)r�EnvironmentVarGuard�clearrE�rJ�envs  r�test_expandvarszTestNtpath.test_expandvars1s���
�
*�
,�
,�	D���I�I�K�K�K��C��J� �C��K�!�C��L��-�u�5�5�5��2�I�>�>�>��3�X�>�>�>��3�[�A�A�A��2�J�?�?�?��/��9�9�9��2�I�>�>�>��/��9�9�9��2�G�<�<�<��2�H�=�=�=��2�J�?�?�?��3�Y�?�?�?��2�H�=�=�=��4�h�?�?�?��9�=�I�I�I��0�(�;�;�;��3�Y�?�?�?��7��I�I�I��4�l�C�C�C�/	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D����	D�	D�	D�	D�	D�	Ds�EE5�5E9�<E9zneed os_helper.FS_NONASCIIc�H�d�}tj��5}|���tj}||d<d|z||<|dd|z��|d|zd|z��|dd|z��|d	|zd
|z��|dd|z��|d
|zd
|z��|dd|z��|d�|��d|z��|dd|z��|d�|��d
|z��ddd��dS#1swxYwYdS)Nc�,�td|z|��dS)Nzntpath.expandvars(%r)r\)�valuer�s  r�checkz2TestNtpath.test_expandvars_nonascii.<locals>.checkMs���*�U�2�H�=�=�=�=�=r�spam�hamz	$spam barz%s barz$%s barz
${spam}barz%sbarz${%s}barzham%sbarz	$spam}barz%s}barz$%s}barz
%spam% barz%{}% barz	ham%s barz	%spam%barz%{}%bar)rr�r��FS_NONASCIIr)rJr�r��nonasciis    r�test_expandvars_nonasciiz#TestNtpath.test_expandvars_nonasciiKs���	>�	>�	>�
�
*�
,�
,�	E���I�I�K�K�K� �,�H�"�C��K�!�H�,�C��M��E�+�x�(�2�3�3�3��E�)�h�&�	�H�(<�=�=�=��E�,��(� 2�3�3�3��E�*�x�'��h�)>�?�?�?��E�+�x�(�2�3�3�3��E�)�h�&�	�H�(<�=�=�=��E�,��8� 3�4�4�4��E�*�#�#�H�-�-�{�X�/E�F�F�F��E�+�w��1�2�2�2��E�)�"�"�8�,�,�j�8�.C�D�D�D�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E����	E�	E�	E�	E�	E�	Es�C3D�D�Dc�h�tdd��tj��5}|���tdd��d|d<d|d<d	|d
<tdd��tdd
��|d=tdd��tdd��|���d
|d<d	|d
<tdd��tdd
��tdd��tdd��tdd��tdd��|���d|d<d
|d<d	|d
<tdd��tdd
��|���d
|d<d|d
<tdd��tdd
��ddd��dS#1swxYwYdS)Nzntpath.expanduser("test")�testzntpath.expanduser("~test")z~test�C:\�	HOMEDRIVEz
Users\eric�HOMEPATH�eric�USERNAMEz
C:\Users\testzntpath.expanduser("~")z
C:\Users\ericz
Users\test�USERPROFILEz"ntpath.expanduser("~test\foo\bar")zC:\Users\test\foo\barz"ntpath.expanduser("~test/foo/bar")zC:\Users\test/foo/barzntpath.expanduser("~\foo\bar")zC:\Users\eric\foo\barzntpath.expanduser("~/foo/bar")zC:\Users\eric/foo/barzF:\�HOME�idle)rErr�r�r�s  r�test_expanduserzTestNtpath.test_expanduser_sW���*�F�3�3�3�
�
*�
,�
,�*	@���I�I�K�K�K��/��9�9�9�%�C���+�C�
�O�$�C�
�O��/�1B�C�C�C��+�->�?�?�?��K� ��/��?�?�?��+�]�;�;�;��I�I�K�K�K�!2�C�
��$�C�
�O��/�1B�C�C�C��+�->�?�?�?��9�.�
0�
0�
0��7�,�
.�
.�
.��5�.�
0�
0�
0��3�,�
.�
.�
.�
�I�I�K�K�K� �C��K�!2�C�
��$�C�
�O��/�1B�C�C�C��+�->�?�?�?�
�I�I�K�K�K�!2�C�
��$�C�
�O��/��9�9�9��+�->�?�?�?�U*	@�*	@�*	@�*	@�*	@�*	@�*	@�*	@�*	@�*	@�*	@�*	@����*	@�*	@�*	@�*	@�*	@�*	@s�E6F'�'F+�.F+zabspath requires 'nt' modulec��tdd��tdd��tdd��tdd��td	d��td
d��tdd��td
d��tdd��tdd��tdd��tdd��tdd��tdd��tdd��tdd��tdd��tdd��tdd��tdd ��td!d ��td"d ��td#d ��td$d ��td%d&��td'd(��td)d(��td*d(��td+d(��td,d(��td-d��td.d��td/d��td0d��td1d��tjtj��5}td2|��td3|d4z��td5|d6z��t	j|��\}}td7|d8z��ddd��dS#1swxYwYdS)9Nzntpath.abspath("C:\")r�z-ntpath.abspath("\\?\C:////spam////eggs. . .")z\\?\C:\spam\eggsz-ntpath.abspath("\\.\C:////spam////eggs. . .")z\\.\C:\spam\eggsz#ntpath.abspath("//spam//eggs. . .")z\\spam\eggsz#ntpath.abspath("\\spam\\eggs. . .")zntpath.abspath("C:/spam. . .")zC:\spamzntpath.abspath("C:\spam. . .")zntpath.abspath("C:/nul")z\\.\nulzntpath.abspath("C:\nul")zntpath.abspath("//..")r3zntpath.abspath("//../")z\\..\zntpath.abspath("//../..")zntpath.abspath("//../../")z\\..\..\zntpath.abspath("//../../../")zntpath.abspath("//../../../..")z ntpath.abspath("//../../../../")zntpath.abspath("//server")z\\serverzntpath.abspath("//server/")z	\\server\zntpath.abspath("//server/..")zntpath.abspath("//server/../")z\\server\..\z ntpath.abspath("//server/../..")z!ntpath.abspath("//server/../../")z#ntpath.abspath("//server/../../..")z$ntpath.abspath("//server/../../../")z ntpath.abspath("//server/share")z\\server\sharez!ntpath.abspath("//server/share/")r�z#ntpath.abspath("//server/share/..")z$ntpath.abspath("//server/share/../")z&ntpath.abspath("//server/share/../..")z'ntpath.abspath("//server/share/../../")zntpath.abspath("C:\nul. . .")zntpath.abspath("//... . .")zntpath.abspath("//.. . . .")zntpath.abspath("//../... . .")zntpath.abspath("//../.. . . .")zntpath.abspath("")zntpath.abspath(" ")z\ zntpath.abspath("?")z\?zntpath.abspath("/abc/")z\abc)rEr�temp_cwdr�r"rl)rJ�cwd_dir�drive�_s    r�test_abspathzTestNtpath.test_abspath�s=���'��0�0�0��A�CZ�[�[�[��A�CZ�[�[�[��4�:J�K�K�K��8�:J�K�K�K��/�*�=�=�=��0�*�=�=�=��)�L�9�9�9��*�L�9�9�9��'�6�:�:�:��(�:�>�>�>��*�:�>�>�>��+�>�B�B�B��.�>�B�B�B��0�>�B�B�B��1�>�B�B�B��+�|�D�D�D��,�~�F�F�F��.�~�F�F�F��/�7I�J�J�J��1�7I�J�J�J��2�7I�J�J�J��4�7I�J�J�J��5�7I�J�J�J��1�:M�N�N�N��2�:O�P�P�P��4�:O�P�P�P��5�:O�P�P�P��7�:O�P�P�P��8�:O�P�P�P��/��>�>�>��,�v�6�6�6��-�v�6�6�6��/�*�=�=�=��0�*�=�=�=�
�
�	� 0�
1�
1�	?�W��'��1�1�1��(�'�E�/�:�:�:��(�'�E�/�:�:�:��(��1�1�H�E�1��,�e�g�o�>�>�>�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?����	?�	?�	?�	?�	?�	?s�A!J=�=K�Kc�2�tdd��tdd��tdd��tdd��tjtj��5}t	j|��}tdd	|zd
z��tdd	|zdz��ddd��n#1swxYwYtd
d��tdd��tdd��tdd��tdd��tdd��tdd��tdd��tdd��tdd��td d��td!d��td"d��td#d��dS)$Nzntpath.relpath("a")ryz#ntpath.relpath(ntpath.abspath("a"))zntpath.relpath("a/b")r�zntpath.relpath("../a/b")z..\a\bzntpath.relpath("a", "../b")r�rzzntpath.relpath("a/b", "../c")z\a\bzntpath.relpath("a", "b/c")z..\..\az*ntpath.relpath("c:/foo/bar/bat", "c:/x/y")z..\..\foo\bar\batz@ntpath.relpath("//conky/mountpoint/a", "//conky/mountpoint/b/c")zntpath.relpath("a", "a")r�z(ntpath.relpath("/foo/bar/bat", "/x/y/z")z..\..\..\foo\bar\batz*ntpath.relpath("/foo/bar/bat", "/foo/bar")�batz#ntpath.relpath("/foo/bar/bat", "/")zfoo\bar\batz#ntpath.relpath("/", "/foo/bar/bat")r�z$ntpath.relpath("/foo/bar/bat", "/x")z..\foo\bar\batz$ntpath.relpath("/x", "/foo/bar/bat")z
..\..\..\xzntpath.relpath("/", "/")zntpath.relpath("/a", "/a")zntpath.relpath("/a/b", "/a/b")z"ntpath.relpath("c:/foo", "C:/FOO"))rErr�r�r"r�)rJr��
currentdirs   r�test_relpathzTestNtpath.test_relpath�s����$�c�*�*�*��4�c�:�:�:��&��/�/�/��)�:�6�6�6�
�
�	� 0�
1�
1�	P�W����1�1�J��0�&��2C�E�2I�J�J�J��2�F�:�4E�h�4N�O�O�O�	P�	P�	P�	P�	P�	P�	P�	P�	P�	P�	P����	P�	P�	P�	P�	�+�[�9�9�9��;�=T�U�U�U��Q�S^�_�_�_��)�3�/�/�/��9�;V�W�W�W��;�U�C�C�C��4�o�F�F�F��4�l�C�C�C��5�7J�K�K�K��5��G�G�G��)�3�/�/�/��+�S�1�1�1��/��5�5�5��3�S�9�9�9�9�9s�AB,�,B0�3B0c���d�}�fd�}��ttjg��|tddg��|tddg��|tddg��|tddg��|dgd��|ddgd��|ddgd��|ddgd��|dd	gd��|d
dgd��|dd
gd��|dd
gd��|ddgd��|ddgd��|ddgd��|ddgd��|ddgd��|ddgd��|ddgd��|tddg��|dgd��|ddgd��|ddgd��|ddgd��|ddgd��|ddgd��|gd�d��|gd �d��|d!d"gd#��|dgd��|dd$gd��|tdd%g����ttjd&dg����ttjd&d'g����ttjd(dg����ttjdd)g����ttjdd*g����ttjdd)g��dS)+Nc�T�td|z�dd��|��dS)Nzntpath.commonpath(%r)r3r2)rEr8)�pathsr�s  rr�z)TestNtpath.test_commonpath.<locals>.check�s9���+�e�3�<�<�V�T�J�J��
�
�
�
�
rc�����|tj|����|tjd�|D����dS)Nc�6�g|]}tj|����SrU)r$r:r&s  r�
<listcomp>zCTestNtpath.test_commonpath.<locals>.check_error.<locals>.<listcomp>�s ��=�=�=�!�r�{�1�~�~�=�=�=r)r�r"�
commonpath)�excrrJs  �r�check_errorz/TestNtpath.test_commonpath.<locals>.check_error�sX������c�6�#4�e�<�<�<����c�6�#4�=�=�u�=�=�=�
?�
?�
?�
?�
?rzC:\Program Filesz
Program FileszC:Program Filesz\Program FileszC:\Program Files\zC:\\Program FileszC:\Program Files\\zC:\.\Program FileszC:\Program Files\.r�zC:\binzC:\Program Files\BarzC:\Program Files\FoozC:\ProjectszC:/Program Files/Barzc:/program files/barzc:\program fileszD:\Program Filesr��alotr[�and\jam�and\spam�andzand\\jamz
and\spam\\z	and\.\jamz
.\and\spam)rr
r)rr
rz	C:and\jamz
C:and\spamzC:andz	spam\alotz
\spam\alotsC:\Program FileszProgram Files\Foos
Program FilessC:\Program Files\FoosProgram Files\Foo)r��
ValueErrorr"r�	TypeError)rJr�r
s`  r�test_commonpathzTestNtpath.test_commonpath�s����	�	�	�	?�	?�	?�	?�	?�
	
���*�f�&7��<�<�<���J�!4�o� F�G�G�G���J�!4�6G� H�I�I�I���J�!2�O� D�E�E�E���J��2E� F�G�G�G�
��"�#�%8�9�9�9�
��"�$7�8�:M�N�N�N�
��$�&9�:�!�	#�	#�	#�
��$�&;�<�!�	#�	#�	#�
��$�&=�>�!�	#�	#�	#�
��%�'=�>�!�	#�	#�	#�
��v�y�!�6�*�*�*�
��"�I�.��7�7�7�
��"�$<�=�!�	#�	#�	#�
��'�)A�B�!�	#�	#�	#�
��"�N�3�V�<�<�<�
��$�n�5�v�>�>�>�
��'�)?�@�!�	#�	#�	#�
��'�)?�@�!�	#�	#�	#�
��%�'?�@�!�	#�	#�	#�	��J�!4�6I� J�K�K�K�
��v�h�����
��v�v���'�'�'�
��v�v���#�#�#�
��z�;�'��/�/�/�
��|�_�-�u�5�5�5�
��}�n�-�u�5�5�5�
��/�/�/��4�4�4�
��.�.�.��6�6�6�
��|�]�+�W�5�5�5�
��r�d�B����
��r�<� �"�%�%�%���J��^� 4�5�5�5����)�V�%6�/�1I�J�	L�	L�	L����)�V�%6�/�1E�F�	H�	H�	H����)�V�%6�+�-E�F�	H�	H�	H����)�V�%6�.�0I�J�	L�	L�	L����)�V�%6�.�0E�F�	H�	H�	H����)�V�%6�*�,E�F�	H�	H�	H�	H�	Hrz&Emscripten cannot fstat unnamed files.c	�~�t��5}t��5}|�tj|���|�������|�tj|���|�������tjdkrG|�t��5tjdd��ddd��n#1swxYwYddd��n#1swxYwYddd��dS#1swxYwYdS)N�win32���)
r�
assertTruer"�sameopenfile�fileno�assertFalse�sys�platformr�r)rJ�tf1�tf2s   r�test_sameopenfilezTestNtpath.test_sameopenfiles���
�_�_�
	0��]�_�_�
	0���O�O�F�/��
�
���c�j�j�l�l�K�K�L�L�L����V�0������s�z�z�|�|�L�L�M�M�M��|�w�&�&��&�&�w�/�/�0�0��'��B�/�/�/�0�0�0�0�0�0�0�0�0�0�0����0�0�0�0�
	0�
	0�
	0�
	0�
	0�
	0�
	0�
	0�
	0�
	0�
	0����
	0�
	0�
	0�
	0�
	0�
	0�
	0�
	0�
	0�
	0�
	0�
	0�
	0�
	0�
	0�
	0����
	0�
	0�
	0�
	0�
	0�
	0sY�D2�CD�!D�7D�D�D�
D�D�D2�D	�D2�!D	�"D2�2D6�9D6c�B�|�tjd����|�tjd����|�tjd����|�tjd����|�tjd����|�tjd����|�tjd����|�tjd����|�tjd	����|�tjd
����|�tjd����|�tjd����tj��5}|�tj|����ddd��n#1swxYwYtjd
k�rgtj	d��}tj
|��\}}tj|��5|�tj|�������|�tj|�
������ddd��n#1swxYwY|�tjd����|�tjd����|�tjd����|�tjd����dSdS)Nrpr�rqzC:/z\\.\c:\z\\.\C:\sc:\sC:\sc:/sC:/s\\.\c:\s\\.\C:\r�
SystemRootz\\localhost\c$z\\localhost\c$\s\\localhost\c$s\\localhost\c$\)rr"�ismountr�temp_dirrrrr$�getenvrlr�r��upper)rJ�d�test_cwdr�rs     r�test_ismountzTestNtpath.test_ismount'sL�������v�.�.�/�/�/������v�.�.�/�/�/������u�-�-�.�.�.������u�-�-�.�.�.������}�5�5�6�6�6������}�5�5�6�6�6������w�/�/�0�0�0������w�/�/�0�0�0������v�.�.�/�/�/������v�.�.�/�/�/������~�6�6�7�7�7������~�6�6�7�7�7�
�
�
!�
!�	0�Q����V�^�A�.�.�/�/�/�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0����	0�	0�	0�	0��<�7�"�"��y��.�.�H� �+�H�5�5�K�E�4��%�h�/�/�
@�
@�� � ������
�
�!>�!>�?�?�?�� � ������
�
�!>�!>�?�?�?�
@�
@�
@�
@�
@�
@�
@�
@�
@�
@�
@����
@�
@�
@�
@�
�O�O�F�N�+>�?�?�@�@�@��O�O�F�N�+@�A�A�B�B�B��O�O�F�N�+?�@�@�A�A�A��O�O�F�N�+A�B�B�C�C�C�C�C�!#�"s%�((H�H �#H �7A3K6�6K:�=K:c�|�	|�|���|�����dSr!)rIr�)rJ�s1�s2s   r�
assertEqualCIzTestNtpath.assertEqualCIKs1��J���������R�X�X�Z�Z�0�0�0�0�0rzOS helpers require 'nt' modulec�*�tjtj��}|t	j|��fD]`}tj|��}tj|��d}tj|��d}|�	||���atj
tj��\}}|�|d��|�|d��tj
tj�
����\}}	|�||��|�|	d��tjtjfD]�}tj|��}
|�|
t"��|�t%|
��d��tj|�
����}|�|t&��|�t%|��d����dS)Nr)�nt�_getfinalpathnamer�
executabler$r:�_getvolumepathnamer"rlr*�
_getdiskusage�exec_prefix�
assertGreaterr<rI�prefix�assertIsInstancer,�lenr+)rJr.r�volume_path�
path_drive�volume_path_drive�cap�free�b_cap�b_free�
final_path�b_final_paths            r�test_nt_helperszTestNtpath.test_nt_helpersOs���
�)�#�.�9�9�
����J� 7� 7�7�	>�	>�D��/��5�5�K��*�4�0�0��3�J� &� 1�+� >� >�q� A�����z�+<�=�=�=�=��$�S�_�5�5�	��T����3��"�"�"����4��#�#�#��(���)?�)?�)A�)A�B�B�
��v������$�$�$����6�1�%�%�%��Z���0�	5�	5�D��-�d�3�3�J��!�!�*�c�2�2�2����s�:����2�2�2��/����
�
�>�>�L��!�!�,��6�6�6����s�<�0�0�!�4�4�4�4�	5�	5rN))rRrSrTr^rmrrrurwr~r�r�r�r�skip_unless_symlink�unittest�
skipUnless�HAVE_GETFINALPATHNAMEr�r�r�r�r�r�r�r��HAVE_GETSHORTPATHNAMEr�r�r�r�r�r,r�rr�skipIfrrr&r*r?rUrrrWrWWs�������
D�
D�
D�4:�4:�4:�l
S�
S�
S�/�/�/�"�"�"�?R�?R�?R�B(2�(2�(2�TD�D�D�
6�
6�
6��"��X��.�0H�I�I�	.�	.�J�I�#�"�	.��"��X��.�0H�I�I�Y�Y�J�I�#�"�Y��"��X��.�0H�I�I�D�D�J�I�#�"�D��"��X��.�0H�I�I�5D�5D�J�I�#�"�5D�n�"��X��.�0H�I�I�+O�+O�J�I�#�"�+O�Z�"��X��.�0H�I�I�('�('�J�I�#�"�('�T�"��X��.�0H�I�I�8�8�J�I�#�"�8�@�X��.�0H�I�I�5�5�J�I�5��X��.�0H�I�I��X��.�0H�I�I�N�N�J�I�J�I�N�6D�D�D�4�X���.�0L�M�M�E�E�N�M�E�&-@�-@�-@�b�X���;�<�<�)?�)?�=�<�)?�V:�:�:�0CH�CH�CH�J�X�_�]�$L�M�M�0�0�N�M�0�"D�"D�"D�H1�1�1��X���=�>�>�5�5�?�>�5�5�5rrWc��eZdZeZdgZdS)�NtCommonTestr�N)rRrSrTr"�
pathmodule�
attributesrUrrrGrGms�������J���J�J�JrrGc��eZdZeZd�Zd�Zd�Zd�Zd�Z	d�Z
d�Zd�Zd	�Z
d
�Zd�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZdS)�
PathLikeTestsc�6�tj|_ttj��|_|�tj|j��t|jdd��5}|�d��ddd��dS#1swxYwYdS)N�xbrstest_ntpath.PathLikeTests)	rr��	file_namer�	file_pathr�r�r�r�)rJ�files  r�setUpzPathLikeTests.setUpvs���"�)���!�)�"2�3�3������	�(�$�.�9�9�9�
�$�.�$��
*�
*�	5�d��J�J�3�4�4�4�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5�	5�	5s�+B�B�Bc�j�|�||j��||j����dSr!)rMrOrN)rJ�funcs  r�_check_functionzPathLikeTests._check_function}s6�����T�T�$�.�1�1�4�4���3G�3G�H�H�H�H�Hrc��|�|jj��tjdkr*|�t
jd��d��dSdS)NruΩΩuωΩ)rTrr#rrrIr"r]s r�test_path_normcasez PathLikeTests.test_path_normcase�sV�����T�Y�/�0�0�0��<�7�"�"����V�_�^�<�<�g�F�F�F�F�F�#�"rc�D�|�|jj��dSr!)rTr�isabsr]s r�test_path_isabszPathLikeTests.test_path_isabs�� �����T�Y�_�-�-�-�-�-rc��|�|j�dtd��d��|j�ddd����dS)Nry�br�)rIrr�rr]s r�test_path_joinzPathLikeTests.test_path_join�sS����������X�c�]�]�C�@�@������S�#�6�6�	8�	8�	8�	8�	8rc�D�|�|jj��dSr!)rTr�splitr]s r�test_path_splitzPathLikeTests.test_path_split�rZrc�D�|�|jj��dSr!)rTr�splitextr]s r�test_path_splitextz PathLikeTests.test_path_splitext��!�����T�Y�/�0�0�0�0�0rc�D�|�|jj��dSr!)rTrrlr]s r�test_path_splitdrivez"PathLikeTests.test_path_splitdrive��!�����T�Y�1�2�2�2�2�2rc�D�|�|jj��dSr!)rTrr�r]s r�test_path_basenamez PathLikeTests.test_path_basename�rdrc�D�|�|jj��dSr!)rTrr�r]s r�test_path_dirnamezPathLikeTests.test_path_dirname��!�����T�Y�.�/�/�/�/�/rc�D�|�|jj��dSr!)rTr�islinkr]s r�test_path_islinkzPathLikeTests.test_path_islink�s!�����T�Y�-�.�.�.�.�.rc�D�|�|jj��dSr!)rTr�lexistsr]s r�test_path_lexistszPathLikeTests.test_path_lexists�rlrc�D�|�|jj��dSr!)rTrr r]s r�test_path_ismountzPathLikeTests.test_path_ismount�rlrc�D�|�|jj��dSr!)rTr�
expanduserr]s r�test_path_expanduserz"PathLikeTests.test_path_expanduser�rgrc�D�|�|jj��dSr!)rTr�
expandvarsr]s r�test_path_expandvarsz"PathLikeTests.test_path_expandvars�rgrc�D�|�|jj��dSr!)rTrr�r]s r�test_path_normpathz PathLikeTests.test_path_normpath�rdrc�D�|�|jj��dSr!)rTrr�r]s r�test_path_abspathzPathLikeTests.test_path_abspath�rlrc�D�|�|jj��dSr!)rTrr�r]s r�test_path_realpathz PathLikeTests.test_path_realpath�rdrc�D�|�|jj��dSr!)rTrr�r]s r�test_path_relpathzPathLikeTests.test_path_relpath�rlrc��|j�|j|jg��}|�||j��dSr!)rrrOrNrM)rJ�common_paths  r�test_path_commonpathz"PathLikeTests.test_path_commonpath�s>���i�*�*�D�N�D�N�+K�L�L�����[�$�.�9�9�9�9�9rc�D�|�|jj��dSr!)rTr�isdirr]s r�test_path_isdirzPathLikeTests.test_path_isdir�rZrN)rRrSrTr"rrQrTrVrYr]r`rcrfrirkrorrrtrwrzr|r~r�r�r�r�rUrrrKrKrsZ�������D�5�5�5�I�I�I�G�G�G�
.�.�.�8�8�8�.�.�.�1�1�1�3�3�3�1�1�1�0�0�0�/�/�/�0�0�0�0�0�0�3�3�3�3�3�3�1�1�1�0�0�0�1�1�1�0�0�0�:�:�:�.�.�.�.�.rrK�__main__)!r"r$rrAr=�test.supportrrr�test.support.os_helperrr�r�tempfilerr,�ImportErrorr-rC�AttributeErrorrrDrr0rE�TestCaserGrW�
CommonTestrGrKrR�mainrUrr�<module>r�sg��
�
�
�
�	�	�	�	�
�
�
�
���������"�"�"�"�"�"�2�2�2�2�2�2�2�2�+�+�+�+�+�+�!�!�!�!�!�!�"�"�"�"�"�"��
�I�I�I�I������
�B�B�B�����
!�
���!�����"�"�"�!����"����
#��M�M�M�!��
#�
#�
#�
#��	�"�"�"�!����"���� ���<�<�<�03�3�3�3�3�X�&�3�3�3�T5�T5�T5�T5�T5��T5�T5�T5�l�����#�.��0A����
I.�I.�I.�I.�I.�N�I.�I.�I.�X�z����H�M�O�O�O�O�O��s3�;�A�A�	A�A�A�!A+�+A5�4A5