Sindbad~EG File Manager

Current Path : /proc/2568807/root/usr/local/lib/python3.12/test/__pycache__/
Upload File :
Current File : //proc/2568807/root/usr/local/lib/python3.12/test/__pycache__/test_ntpath.cpython-312.pyc

�

'ΜgR�����ddlZddlZddlZddlZddlZddlZddlZddlmZm	Z	ddlm
Z
mZddlm
Z
ddlmZddlmZ	ddlZ	ej(dZ	ddlZdZd	�Zd
�Zd�ZGd�d
ej8�ZGd�de�ZGd�dej>ej8�Z Gd�de�Z!e"dk(rejF�yy#e$rdZY��wxYw#e$rdZY��wxYw#e$rdZY��wxYw)�N)�cpython_only�	os_helper)�
TestFailed�
is_emscripten)�FakePath)�test_genericpath)�
TemporaryFileTFc��tjdd��j}tjtjtjg|_tj|_||dd�}|s,tdjtj����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/lib/python3.12/test/test_ntpath.py�_getshortpathnamer#s����}�}�Z��=�O�O���)�)�6�+;�+;�V�_�_�M��
�������$��a�(�
���B�!�6�&�"7�"7�"9�:�<�
<��-�-�j�9���$��
�3�
��k�z�"�"�c���t|tttjf�r(tjtj|��St|d�rtd�|D��S|S)N�__iter__c3�lK�|],}tjtj|�����.y�w�N)�ntpath�normcase�os�fsdecode)�.0�ps  r�	<genexpr>z_norm.<locals>.<genexpr>3s"����C�d��V�_�_�R�[�[��^�4�d�s�24)
�
isinstance�bytes�strr%�PathLiker#r$r&�hasattr�tuple)rs r�_normr0/sO���$���R�[�[�1�2����r�{�{�4�0�1�1�	��z�	"��C�d�C�C�C��Krc	�Z�|jdd�}t|�}||k7rEt|�t|�k7r.tt	|��dt	|��dt	|�����|jdd�}|jdd�}|jd	d
�}|jdd�}|jd
d�}|jdd�}tj|�jd�}|jdd�jd�}tj�5tjdt�t|�}ddd�t|�t|�k7r.tt	|��dt	|��dt|�����y#1swY�OxYw)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�testerrE7sa��	���D�&�	!�B��R��I��Y��5��#4��i�8H�#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�	�
#�
�Z��E�)�,�,���B���Z��$�y�/�;�<�	<�-�
#�	"�s�-&F!�!F*c��eZdZd�Zd�Zy)�NtpathTestCasec�b�||k(st|�t|�k(ry|j||�yr")r0�assertEqual)�self�path1�path2s   r�assertPathEqualzNtpathTestCase.assertPathEqualPs+���E�>�U�5�\�U�5�\�9�������&rc�L�|jt|�t|��yr")�assertInr0)rJr�pathsets   r�assertPathInzNtpathTestCase.assertPathInUs���
�
�e�D�k�5��>�2rN)�__name__�
__module__�__qualname__rMrQ�rrrGrGOs��'�
3rrGc�f�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Ze
jej ed�d���Ze
jej ed�d
���Ze
jej ed�d���Ze
jej ed�d���Ze
jej ed�d���Ze
jej ed�d���Ze
jej ed�d���Zej ed�d��Zej ed�ej ed�d���Zd�Zej e
j:d�d��Zd�Zej e d�d��Z!d�Z"d�Z#ejHe%d�d��Z&d �Z'd!�Z(ej e d"�d#��Z)ejHe*jVd$k7d%�d&��Z,ejHe*jVd$k7d'�d(��Z-ej e.e/d)�d*�d+��Z0ejHe*jVd$k7d,�d-��Z1ejHe*jVd$k7d,�d.��Z2ejHe*jVd$k7d/�e3d0���Z4ejHe/jjd1k7d2�d3��Z6ejHe/jjd1k(d4�d5��Z7y6)7�
TestNtpathc���tdd�tdd�tdd�tdd�td	d
�tdd�td
d�tdd�tdd�tdd�y)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_splitextZsw���+�_�=��0�2F�G��(�,�7��2�4J�K��-�/@�A��$�h�/��/�1D�E��2�4J�K��3�5L�M��.�0B�Crc��tdd�tdd�tdd�tdd�td	d
�tdd�td
d�tdd�tdd�tdd�tdd�tdd�tdd�tdd�tdd�tdd �td!d"�td#d$�y)%Nzntpath.splitdrive('')r\zntpath.splitdrive('foo'))r[rYzntpath.splitdrive('foo\bar'))r[�foo\barzntpath.splitdrive('foo/bar'))r[�foo/barzntpath.splitdrive('\'))r[r2zntpath.splitdrive('/'))r[�/zntpath.splitdrive('\foo\bar'))r[�\foo\barzntpath.splitdrive('/foo/bar'))r[�/foo/barzntpath.splitdrive("c:foo\bar"))�c:razntpath.splitdrive("c:foo/bar"))rfrbzntpath.splitdrive("c:\foo\bar"))rfrdzntpath.splitdrive("c:/foo/bar"))rfrezntpath.splitdrive('\\'))r3r[zntpath.splitdrive('//'))�//r[z/ntpath.splitdrive("\\conky\mountpoint\foo\bar"))�\\conky\mountpointrdz/ntpath.splitdrive("//conky/mountpoint/foo/bar"))�//conky/mountpointrez-ntpath.splitdrive("\\?\UNC\server\share\dir"))�\\?\UNC\server\sharez\dirz-ntpath.splitdrive("//?/UNC/server/share/dir"))�//?/UNC/server/sharez/dirr]r^s r�test_splitdrivezTestNtpath.test_splitdrivefs����&��1��)�;�7��.�0@�A��-��?��(�*�5��'��3��0�2D�E��.�0@�A��0�2D�E��/�1B�C��2�4H�I��0�2D�E��*�L�9��(�*�5��E�6�	8��@�1�	3��D�5�	7��>�/�	1rc��tdd�tdd�tdd�tdd�td	d
�tdd�td
d�tdd�tdd�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�|jtjd5�d6�td7d8�td9d:�td;d<�td=d>�td?d@�tdAdB�tdCdD�tdEdF�tdGdH�tdIdJ�tdKdL�tdMdN�tdOdP�tdQdR�tdSdT�tdUdV�tdWdX�tdYdZ�td[d\�td]d^�td_d`�tdadb�tdcdd�tdedf�tdgdh�tdidj�tdkdl�tdmdn�tdod(�tdpdq�tdrds�tdtdu�tdvdw�tdxdy�tdzd{�y)|Nzntpath.splitroot(''))r[r[r[zntpath.splitroot('foo'))r[r[rYzntpath.splitroot('foo\bar'))r[r[razntpath.splitroot('foo/bar'))r[r[rbzntpath.splitroot('\'))r[r2r[zntpath.splitroot('/'))r[rcr[zntpath.splitroot('\foo\bar'))r[r2razntpath.splitroot('/foo/bar'))r[rcrbzntpath.splitroot("c:foo\bar"))rfr[razntpath.splitroot("c:foo/bar"))rfr[rbzntpath.splitroot("c:\foo\bar"))rfr2razntpath.splitroot("c:/foo/bar"))rfrcrbzntpath.splitroot('c:\\a'))rfr2�\azntpath.splitroot('c:\\\a/b'))rfr2z\\a/bzntpath.splitroot('c:/\'))rfrcr2zntpath.splitroot('c:\/'))rfr2rczntpath.splitroot('/\a/b\/\'))z/\a/br2z/\zntpath.splitroot('\/a\b/\/'))z\/a\brcz\/zntpath.splitroot('\\'))r3r[r[zntpath.splitroot('//'))rgr[r[z.ntpath.splitroot("\\conky\mountpoint\foo\bar"))rhr2raz.ntpath.splitroot("//conky/mountpoint/foo/bar"))rircrbz/ntpath.splitroot("\\\conky\mountpoint\foo\bar"))z\\\conkyr2�mountpoint\foo\barz/ntpath.splitroot("///conky/mountpoint/foo/bar"))z///conkyrc�mountpoint/foo/barz/ntpath.splitroot("\\conky\\mountpoint\foo\bar"))z\\conky\r2roz/ntpath.splitroot("//conky//mountpoint/foo/bar"))z//conky/rcrpu//conky/MOUNTPOİNT/foo/bar)u//conky/MOUNTPOİNTrcrbzntpath.splitroot("//?/c:"))�//?/c:r[r[zntpath.splitroot("//./c:"))z//./c:r[r[zntpath.splitroot("//?/c:/"))rqrcr[zntpath.splitroot("//?/c:/dir"))rqrc�dirzntpath.splitroot("//?/UNC"))z//?/UNCr[r[zntpath.splitroot("//?/UNC/"))z//?/UNC/r[r[z#ntpath.splitroot("//?/UNC/server/"))z//?/UNC/server/r[r[z(ntpath.splitroot("//?/UNC/server/share"))rkr[r[z,ntpath.splitroot("//?/UNC/server/share/dir"))rkrcrrzIntpath.splitroot("//?/VOLUME{00000000-0000-0000-0000-000000000000}/spam"))z0//?/VOLUME{00000000-0000-0000-0000-000000000000}rc�spamz&ntpath.splitroot("//?/BootPartition/"))z//?/BootPartitionrcr[z&ntpath.splitroot("//./BootPartition/"))z//./BootPartitionrcr[z&ntpath.splitroot("//./PhysicalDrive0"))z//./PhysicalDrive0r[r[zntpath.splitroot("//./nul"))z//./nulr[r[zntpath.splitroot("\\?\c:"))�\\?\c:r[r[zntpath.splitroot("\\.\c:"))z\\.\c:r[r[zntpath.splitroot("\\?\c:\"))rtr2r[zntpath.splitroot("\\?\c:\dir"))rtr2rrzntpath.splitroot("\\?\UNC"))z\\?\UNCr[r[zntpath.splitroot("\\?\UNC\"))z\\?\UNC\r[r[z#ntpath.splitroot("\\?\UNC\server\"))z\\?\UNC\server\r[r[z(ntpath.splitroot("\\?\UNC\server\share"))rjr[r[z,ntpath.splitroot("\\?\UNC\server\share\dir"))rjr2rrzIntpath.splitroot("\\?\VOLUME{00000000-0000-0000-0000-000000000000}\spam"))z0\\?\VOLUME{00000000-0000-0000-0000-000000000000}r2rsz&ntpath.splitroot("\\?\BootPartition\"))z\\?\BootPartitionr2r[z&ntpath.splitroot("\\.\BootPartition\"))z\\.\BootPartitionr2r[z&ntpath.splitroot("\\.\PhysicalDrive0"))z\\.\PhysicalDrive0r[r[zntpath.splitroot("\\.\nul"))�\\.\nulr[r[zntpath.splitroot("//")zntpath.splitroot("///"))z///r[r[zntpath.splitroot("///y"))z///yr[r[zntpath.splitroot("//x"))z//xr[r[zntpath.splitroot("//x/"))z//x/r[r[zntpath.splitroot(" :/foo"))z :rcrYzntpath.splitroot("/:/foo"))r[rcz:/foo)rErIr#�	splitrootr^s r�test_splitrootzTestNtpath.test_splitroot~s���%�|�4��(�/�:��-�/C�D��,�.A�B��'��8��&�
�6��/�1G�H��-�/C�D��/�1G�H��.�0E�F��1�3K�L��/�1G�H�	�,�.A�B��0�2I�J�	�*�,=�>��*�,=�>��0�2I�J��0�2I�J�	�)�+;�<��'��8��D�:�	<��?�5�	7��F�9�	;��@�3�	5��F�<�	>��@�6�	8�	
����)�)�*G�H�@�	B�	�+�-?�@��+�-?�@��,�.A�B��/�1G�H��,�.A�B��-�/C�D��4�6Q�R��9�;[�\��=�?c�d��Z�P�	R��7�9W�X��7�9W�X��7�9W�X��,�.A�B��.�0E�F��.�0E�F��0�2I�J��3�5O�P��/�1G�H��1�3K�L��9�;[�\��>�4�	6��C�9�	;��^�T�	V��;�=_�`��;�=_�`��:�<]�^��/�1G�H�	�'��8��(�/�:��)�+;�<��(�/�:��)�+;�<�	�+�-?�@��+�-?�@rc��tdd�tdd�tdd�tdd�td	d
�tdd�y)
Nzntpath.split("c:\foo\bar"))zc:\foo�barz*ntpath.split("\\conky\mountpoint\foo\bar"))z\\conky\mountpoint\fooryzntpath.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�sP���-�/A�B��@�4�	6�	�%�|�4��8�.�	0�	�$�k�2��4�6Q�Rrc��tdd�tdd�tdd�tdd�tdd�tdd�y)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�sF���%�q�)��8�!�<��&��*��+�Q�/�	�6��:��*�A�.rc�L�tdd�tdd�tdd�y)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�s,���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[�td\d]�td^d_�td`da�tdbdS�y)cNzntpath.join("")r[zntpath.join("", "", "")zntpath.join("a")�azntpath.join("/a")z/azntpath.join("\a")rnzntpath.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/brfzc:a/br{zc:/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/bzntpath.join('\\', 'computer')z
\\computerz#ntpath.join('\\computer\', 'share')z\\computer\sharez%ntpath.join('\\computer\share\', 'a')z\\computer\share\az'ntpath.join('\\computer\share\a\', 'b')r])rJ�x�ys   r�	test_joinzTestNtpath.test_join�s���� �"�%��(�"�-��!�3�'��"�D�)��#�U�+��"�D�)��)�7�3��(�%�0��+�Y�7��-�y�9��-�y�9��-�u�5��/��=��.�
�;��%�s�+��1�3�7��%�u�-��1�5�9��'��/��3�U�;��&��-��*�J�7��+�[�9��,�j�9��)�7�3��,�l�;��-�{�;��*�H�5��-�}�=��.��=��7�9P�Q��8�:P�Q��;�=X�Y��+�V�4��,�f�5��*�H�5��-�x�8��+�X�6��.��9��8�:P�Q��9�;Q�R��:�<R�S��+�W�5��.��=��,�h�7��/��?�S�A�W����1�5�q�9�W�S�	�?�A\�]��=�?Z�[��;�=X�Y��;�=T�U��:�<T�U��7�9P�Q��0�.�A��7�9N�O��:�<T�U��=�?Z�[rc�4�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<�y)=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:/')rzzntpath.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<s����5�v�>��)�6�2��.��7��*�H�5��+�X�6��0�(�;��-�y�9��.�	�:��3�Y�?��&��.��%�t�,��$�d�+��%�t�,��'��0��/��6��/��8��.��<��0�-�@��-�y�9��8�:P�Q��.�
�;��3�^�D��B�DY�Z��E�G_�`��?��K��@�,�O��5�;P�Q��6�;P�Q��8�;P�Q��9�;P�Q�	�/��?��-�{�;��+�Y�7��(�&�1rc���tjtj��}t	d|�t	d|�t	d|�t	d|�t	d|�y)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_curdirfsM���?�?�2�9�9�;�/���%�x�0��'��2��7��B��(�(�3��8�(�Crc���tjtj��}t	dtj
|��t	dtj
tj
|���t	dtj|�ddz�t	dtj
tj
|���t	dtj|�ddz�y)Nzntpath.realpath('..')zntpath.realpath('../..')z&ntpath.realpath('/'.join(['..'] * 50))rr2zntpath.realpath('..\..')z&ntpath.realpath('\'.join(['..'] * 50)))r#r�r%r�rE�dirname�
splitdriver�s  r�test_realpath_pardirzTestNtpath.test_realpath_pardirns����?�?�2�9�9�;�/���&����x�(@�A��)��~�~�f�n�n�X�6�7�	9��7�� � ��*�1�-��4�	6��*��~�~�f�n�n�X�6�7�	9��8�� � ��*�1�-��4�	6rzneed _getfinalpathnamec��tjtj�}t	|d�j�|j
tj|�|j
tj|dz�tj||dz�|jtj|dz�|�|jtjtj|dz��tj|��tjD�chc]}|�d���	c}ttj ��z
}|j#�j%�}|j'tj|�|�|j'|dztjtjdzd���ycc}w)N�wb�1z:\�spamF��strict)r#�abspathr�TESTFN�open�close�
addCleanup�unlinkr%�symlinkrM�realpathr:�string�ascii_uppercase�set�
listdrives�popr<rI)rJ�ABSTFN�c�drives�ds     r�test_realpath_basiczTestNtpath.test_realpath_basiczsO�����	� 0� 0�1���V�T�� � �"����	�(�(�&�1����	�(�(�&�3�,�7�
�
�
�6�6�C�<�(����V�_�_�V�c�\�:�F�C����V�_�_�R�[�[��#��-F�G����V�,�	.�
&,�%;�%;�<�%;��Q�C�s�)�%;�<�s�2�=�=�?�?S�S���J�J�L���!���������+�Q�/�	
����(�*�����)9�)9�H�)D�U�S�	U��=s�"Gc��tjtj�}t	j
|dz|�|j
tj|�|jttj|d��|jttj|dzd��|jttj|dzd��y)Nr�Tr��2r�)r#r�rr�r%r�r�r��assertRaises�FileNotFoundErrorr�r�rJr�s  r�test_realpath_strictzTestNtpath.test_realpath_strict�s���
���	� 0� 0�1��
�
�
�6�C�<��(����	�(�(�&�1����+�V�_�_�f�T��R����+�V�_�_�f�s�l�SW��X����'�6�?�?�F�X�4E�d��Src��tjtj�}t	|d�j�|j
tj|�|j
tj|dz�tj|tj|dz��|jtj|dz�|�y)Nr�r�)
r#r�rr�r�r�r�r�r%r��relpathrMr�r�s  r�test_realpath_relativez!TestNtpath.test_realpath_relative�s������	� 0� 0�1���V�T�� � �"����	�(�(�&�1����	�(�(�&�3�,�7�
�
�
�6�6�>�>�&�3�,�7�8����V�_�_�V�c�\�:�F�Crc�H	�tjtj�}t	j
|�|j
tj|�tj|�5t	j
d�t	jd�t	jdd�t	jdd�t	jd�t	jdd�t	jdd�t	jd	d
�t	jdd�t	jd
d�t	j|dzd�t	jdd�|jtjd�|dz�|jtjd�|dz�|jtjd
�|dz�|jtjd�|dz�|jtjd�|dz�|jtjd�|dz�|jtjd�|dz�|jtjd�|dz�|jtjd�t	j|dz��|jtjd�t	j|dz��|jtjd�t	j|dz��|jtjd�t	j|dz��|jtjd�t	j|dz��|jtjd �t	j|dz��|jtjd!�t	j|dz��|jtjd"�t	j|dz��ddd�y#1swYyxYw)#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_symlinks�sh�����	� 0� 0�1��
��������	�(�(�&�1�
�
!�
!�&�
)��H�H�X���H�H�X���J�J�s�K�(��J�J�t�X�&��H�H�T�N��J�J�s�F�#��J�J�y�(�+��J�J�}�i�0��J�J�*�I�6��J�J�<�i�H��J�J�v�
�*�I�6��J�J�-�y�9�� � �����!:�!'�+�!5�
7�� � �����!?�!'�/�!9�
;�
� � �����!<�!'�.�!8�
:�� � �����!@�!'�*<�!<�
>�� � �����!;�!'�*?�!?�
A�� � �����!;�!'�*Q�!Q�
S�� � �����!;�!'�+�!5�
7�� � �����!;�!'�+�!5�
7�
� � �����!;�!#���V�k�-A�!B�
D�� � �����!@�!#���V�o�-E�!F�
H�� � �����!=�!#���V�n�-D�!E�
G�� � �����!A�!#���V�6H�-H�!I�
K�� � �����!<�!#���V�6K�-K�!L�
N�� � �����!=�!#���V�6]�-]�!^�
`�� � �����!<�!#���V�k�-A�!B�
D�� � �����!<�!#���V�k�-A�!B�
D�_*�
)�
)�s
�.P!R�R!c�J�tjtj�}|j	tj
|�|j	tj
|dz�|j	tj
|dz�|j	tj
|dz�|j	tj
|dz�|j	tj
|dz�t
j||�|jtj|�|�t
j|dz|dz�t
j|dz|dz�|dz|dzf}|jtj|dz�|�|jtj|dz�|�|jtj|dz�d�|D��|jtj|dz�tj|��|jtj|d	z�tj|�d
z�t
j|dz|dz�|jtj|dztj|�zdz�|dz�|jtj|dztj|�zdz�|�t
jtj|�d
z|dz�|jtj|dz�|dz�t
jdtjtj|��zdztj|�zdz|dz�|jtj|dz�|dz�|jtjtj|��|�y)Nr�r�r�r�r��1\xc3�HK�|]}tj|d����y�w)r�N)r#�join)r'�rs  rr)z9TestNtpath.test_realpath_symlink_loops.<locals>.<genexpr>�s����A��1�6�;�;�q�#�.��s� "�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�s2�����	� 0� 0�1�����	�(�(�&�1����	�(�(�&�3�,�7����	�(�(�&�3�,�7����	�(�(�&�3�,�7����	�(�(�&�3�,�7����	�(�(�&�3�,�7�
�
�
�6�6�"����V�_�_�V�4�f�=�
�
�
�6�C�<��#��.�
�
�
�6�C�<��#��.��S�L�&�3�,�/�����&�/�/�&�3�,�7��B����&�/�/�&�3�,�7��B����&�/�/�&�6�/�:�A��A�	C����V�_�_�V�g�-=�>�#�^�^�F�3�	5����V�_�_�V�j�-@�A�#�^�^�F�3�e�;�	=�
�
�
�6�C�<��#��.����V�_�_�V�i�-?�/5���v�/F�.G�IL�.M�N�#�c�\�	+�	
���&�/�/�&�9�*<�,2�O�O�F�,C�+D�FI�+J�K�"�	$�	�
�
�6�?�?�6�*�V�3�V�c�\�B����V�_�_�V�c�\�:�F�S�L�I�
�
�
�6�F�O�O�F�N�N�6�,B�C�C���"�O�O�F�3�4�69�:�;A�C�<�	I����V�_�_�V�c�\�:�F�S�L�I�	
���V�_�_�V�_�_�V�-D�E�v�Nrc��tjtj�}|j	tj
|�|j	tj
|dz�|j	tj
|dz�|j	tj
|dz�|j	tj
|dz�|j	tj
|dz�t
j||�|jttj|d��t
j|dz|dz�t
j|dz|dz�|jttj|dzd��|jttj|dzd��|jttj|dzd��|jtj|d	zd��tj|��|jttj|d
zd��t
j|dz|dz�|jttj|dztj|�zdzd��|jttj|dztj|�zdzd��t
jtj|�d
z|dz�|jttj|dzd��t
jdtjtj|��zdztj|�zdz|dz�|jttj|dzd��|jttjtj|�d��y)Nr�r�r�r�r�Tr�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_stricts�����	� 0� 0�1�����	�(�(�&�1����	�(�(�&�3�,�7����	�(�(�&�3�,�7����	�(�(�&�3�,�7����	�(�(�&�3�,�7����	�(�(�&�3�,�7�
�
�
�6�6�"����'�6�?�?�F�4��H�
�
�
�6�C�<��#��.�
�
�
�6�C�<��#��.����'�6�?�?�F�S�L���N����'�6�?�?�F�S�L���N����'�6�?�?�F�V�O�D��Q�	
���V�_�_�V�g�-=�d�K�#�^�^�F�3�	5����'�6�?�?�F�Z�4G�PT��U�
�
�
�6�C�<��#��.����'�6�?�?�F�Y�4F�/5���v�/F�5G�IL�5M�48�	�	:�	
���'�6�?�?� �9�,�v���v�/F�F��L�!%�	�	'�	�
�
�6�?�?�6�*�V�3�V�c�\�B����'�6�?�?�F�S�L���N�
�
�
�6�F�O�O�F�N�N�6�,B�C�C���"�O�O�F�3�4�69�:�;A�C�<�	I����'�6�?�?�F�S�L���N�	
���'�6�?�?�F�O�O�F�4K�!%�	�	'rc��tjtj�}|j	tj
|dz�|j	tj
d|zdz�|j	tj
|dz�|j	tj
|dz�t
|dzd�5}|jd�ddd�tj|dz|dz�t
d|zdzd�5}|jd�ddd�tjd|zdz|dz�|jtj|dz�|dz�|jtj|dz�d|zdz�t
tj|dz�d	�5}|j|j�d�ddd�t
tj|dz�d	�5}|j|j�d�ddd�|jtjd|zdz�d|zdz�|jtjd|zdz�d|zdz�y#1swY���xYw#1swY���xYw#1swY��xYw#1swY��xYw)
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� 0�1�����	�(�(�&�3�,�7����	�(�(�)�f�*<�t�*C�D����	�(�(�&�7�*:�;����	�(�(�&�8�*;�<�
�&�3�,��
%��
�G�G�D�M�&�
�
�
�6�C�<��'�!1�2�
�)�f�$�t�+�T�
2�a�
�G�G�D�M�3�
�
�
�9�v�%��,�f�x�.?�@����V�_�_�V�g�-=�>�#�c�\�	+����V�_�_�V�h�->�?�&��/�$�6�	8��&�/�/�&�7�"2�3�T�
:�a����Q�V�V�X�t�,�;�
�&�/�/�&�8�"3�4�d�
;�q����Q�V�V�X�t�,�<�	
���V�_�_�Y��-?�'�-I�J�&��/�#�5�	7����V�_�_�Y��-?�(�-J�K�&��/�$�6�	8�-&�
%��3�
2��;�
:��
;�
;�s0�J�
J"�>!J/�	!J;�J�"J,�/J8�;Kc��tdd�y)Nzntpath.realpath('NUL')r�r]r^s r�test_realpath_nulzTestNtpath.test_realpath_nul_s
���'��4rzneed _getshortpathnamec�r�tjtj�}tj|�tj
|�t
j|�|jtj
|�tj|d�}t
j|�t|�}tj|d�}tj|d�}t|d�5}|jd�ddd�|j|tj|��tj|�5|j|tjd��ddd�tj|j!��5|j|tjd��ddd�tj|�5|j|tjd��ddd�y#1swY��xYw#1swY��xYw#1swY�fxYw#1swYyxYw)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_cwdcs������	� 0� 0�1������ ����� �
��������	�(�(�&�1����F�,E�F�
�
�����*�=�9�����]�J�?�� �+�+�n�j�A��
�.�$�
'�1�
�G�G�J��(�	
���^�V�_�_�_�-M�N�
�
!�
!�-�
0�� � ������1L�M�1�
�
!�
!�-�"5�"5�"7�
8�� � ������1L�M�9�
�
!�
!�.�
1�� � ������1L�M�2�
1�(�
'��
1�
0��
8�
8��
1�
1�s0�1H�&H�&H!�&H-�H�H�!H*�-H6c�\�tj�5}|j�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�y#1swYyxYw)(NryrY�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_expandvars�s��
�
*�
*�
,���I�I�K��C��J� �C��K�!�C��L��-�u�5��2�I�>��3�X�>��3�[�A��2�J�?��/��9��2�I�>��/��9��2�G�<��2�H�=��2�J�?��3�Y�?��2�H�=��4�h�?��9�=�I��0�(�;��3�Y�?��7��I��4�l�C�/-�
,�
,�s�DD"�"D+zneed os_helper.FS_NONASCIIc���d�}tj�5}|j�tj}||d<d|z||<|dd|z�|d|zd|z�|dd|z�|d	|zd
|z�|dd|z�|d
|zd
|z�|dd|z�|dj	|�d|z�|dd|z�|dj	|�d
|z�ddd�y#1swYyxYw)Nc�"�td|z|�y)Nzntpath.expandvars(%r)r])�valuer�s  r�checkz2TestNtpath.test_expandvars_nonascii.<locals>.check�s���*�U�2�H�=rrs�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_nonascii�s��	>�
�
*�
*�
,���I�I�K� �,�,�H�"�C��K�!�H�,�C��M��+�x�(�2�3��)�h�&�	�H�(<�=��,��(� 2�3��*�x�'��h�)>�?��+�x�(�2�3��)�h�&�	�H�(<�=��,��8� 3�4��*�#�#�H�-�{�X�/E�F��+�w��1�2��)�"�"�8�,�j�8�.C�D�-�
,�
,�s�C
C.�.C7c��tdd�tj�5}|j�tdd�d|d<d|d<d	|d
<tdd�tdd
�|d=tdd�tdd�|j�d
|d<d	|d
<tdd�tdd
�tdd�tdd�tdd�tdd�|j�d|d<d
|d<d	|d
<tdd�tdd
�|j�d
|d<d|d
<tdd�tdd
�ddd�y#1swYyxYw)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�sn���*�F�3�
�
*�
*�
,���I�I�K��/��9�%�C���+�C�
�O�$�C�
�O��/�1B�C��+�->�?��K� ��/��?��+�]�;��I�I�K�!2�C�
��$�C�
�O��/�1B�C��+�->�?��9�.�
0��7�,�
.��5�.�
0��3�,�
.�
�I�I�K� �C��K�!2�C�
��$�C�
�O��/�1B�C��+�->�?�
�I�I�K�!2�C�
��$�C�
�O��/��9��+�->�?�U-�
,�
,�s�D*E�Ezabspath 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�y#1swYyxYw)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")ruzntpath.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#r�)rJ�cwd_dir�drive�_s    r�test_abspathzTestNtpath.test_abspath�s���'��0��A�CZ�[��A�CZ�[��4�:J�K��8�:J�K��/�*�=��0�*�=��)�L�9��*�L�9��'�6�:��(�:�>��*�:�>��+�>�B��.�>�B��0�>�B��1�>�B��+�|�D��,�~�F��.�~�F��/�7I�J��1�7I�J��2�7I�J��4�7I�J��5�7I�J��1�:M�N��2�:O�P��4�:O�P��5�:O�P��7�:O�P��8�:O�P��/��>��,�v�6��-�v�6��/�*�=��0�*�=�
�
�
�	� 0� 0�
1�W��'��1��(�'�E�/�:��(�'�E�/�:��(�(��1�H�E�1��,�e�g�o�>�2�
1�
1�s
�AH#�#H,c��tdd�tdd�tdd�tdd�tjtj�5}t	j
|�}tdd	|zd
z�tdd	|zdz�ddd�td
d�tdd�tdd�tdd�tdd�tdd�tdd�tdd�tdd�tdd�td d�td!d�td"d�td#d�y#1swY��xYw)$Nzntpath.relpath("a")r�z#ntpath.relpath(ntpath.abspath("a"))zntpath.relpath("a/b")r�zntpath.relpath("../a/b")z..\a\bzntpath.relpath("a", "../b")r�rnzntpath.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_relpaths*���$�c�*��4�c�:��&��/��)�:�6�
�
�
�	� 0� 0�
1�W�����1�J��0�&��2C�E�2I�J��2�F�:�4E�h�4N�O�2�	�+�[�9��;�=T�U��Q�S^�_��)�3�/��9�;V�W��;�U�C��4�o�F��4�l�C��5�7J�K��5��G��)�3�/��+�S�1��/��5��3�S�9�#2�
1�s�:D?�?Ec���d�}�fd�}�jttjg�|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��jttjd&dg��jttjd&d'g��jttjd(dg��jttjdd)g��jttjdd*g��jttjdd)g�y)+Nc�B�td|zjdd�|�y)Nzntpath.commonpath(%r)r3r2)rEr8)�pathsr�s  rr�z)TestNtpath.test_commonpath.<locals>.check$s"���+�e�3�<�<�V�T�J��
rc
�����j|tj|��j|tj|D�cgc]}tj|���c}�ycc}wr")r�r#�
commonpathr%r:)�excrr(rJs   �r�check_errorz/TestNtpath.test_commonpath.<locals>.check_error'sP������c�6�#4�#4�e�<����c�6�#4�#4�7<�=�u�!�r�{�{�1�~�u�=�
?��=s�A&zC:\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 Filesrs�alotr[�and\jam�and\spam�andzand\\jamz
and\spam\\z	and\.\jamz
.\and\spam)rrr)rrrz	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�rs`  r�test_commonpathzTestNtpath.test_commonpath#s���	�	?�
	
���*�f�&7�&7��<��J�!4�o� F�G��J�!4�6G� H�I��J�!2�O� D�E��J��2E� F�G�
�"�#�%8�9�
�"�$7�8�:M�N�
�$�&9�:�!�	#�
�$�&;�<�!�	#�
�$�&=�>�!�	#�
�%�'=�>�!�	#�
�v�y�!�6�*�
�"�I�.��7�
�"�$<�=�!�	#�
�'�)A�B�!�	#�
�"�N�3�V�<�
�$�n�5�v�>�
�'�)?�@�!�	#�
�'�)?�@�!�	#�
�%�'?�@�!�	#�	�J�!4�6I� J�K�
�v�h���
�v�v���'�
�v�v���#�
�z�;�'��/�
�|�_�-�u�5�
�}�n�-�u�5�
�/��4�
�.��6�
�|�]�+�W�5�
�r�d�B��
�r�<� �"�%��J��^� 4�5����)�V�%6�%6�/�1I�J�	L����)�V�%6�%6�/�1E�F�	H����)�V�%6�%6�+�-E�F�	H����)�V�%6�%6�.�0I�J�	L����)�V�%6�%6�.�0E�F�	H����)�V�%6�%6�*�,E�F�	Hrz&Emscripten cannot fstat unnamed files.c	�*�t�5}t�5}|jtj|j	�|j	���|jtj|j	�|j	���tjdk(r4|jt�5tjdd�ddd�ddd�ddd�y#1swY�xYw#1swY�xYw#1swYyxYw)N�win32���)
r	�
assertTruer#�sameopenfile�fileno�assertFalse�sys�platformr�r)rJ�tf1�tf2s   r�test_sameopenfilezTestNtpath.test_sameopenfilehs���
�_��]�_���O�O�F�/�/��
�
��c�j�j�l�K�L����V�0�0�����s�z�z�|�L�M��|�|�w�&��&�&�w�/��'�'��B�/�0�&5�_�_�0�/��&5�_��_�_�s;�D	�B+C=�C1�C=� D	�1C:�6C=�=D	�D	�	Dc��|jtjd��|jtjd��|jtjd��|jtjd��|jtjd��|jtjd��|jtjd��|jtjd��|jtjd	��|jtjd
��|jtjd��|jtjd��tj�5}|jtj|��ddd�tjd
k(�r@tjd�}tj|�\}}tj|�5|jtj|j���|jtj|j���ddd�|jtjd��|jtjd��|jtjd��|jtjd��yy#1swY��_xYw#1swY��xYw)Nrzr�r{zC:/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$\)r#r#�ismountr�temp_dirr&r'r(r%�getenvr�r�r��upper)rJr��test_cwdrrs     r�test_ismountzTestNtpath.test_ismountvs��������v�.�/�������v�.�/�������u�-�.�������u�-�.�������}�5�6�������}�5�6�������w�/�0�������w�/�0�������v�.�/�������v�.�/�������~�6�7�������~�6�7�
�
�
�
!�Q����V�^�^�A�.�/�"��<�<�7�"��y�y��.�H� �+�+�H�5�K�E�4��%�%�h�/�� � �������
�!>�?�� � �������
�!>�?�0�
�O�O�F�N�N�+>�?�@��O�O�F�N�N�+@�A�B��O�O�F�N�N�+?�@�A��O�O�F�N�N�+A�B�C�!#�"�
!��0�/�s�%M�A%M�M�Mc�`�|j|j�|j��y)z<Assert that two strings are equal ignoring case differences.N)rIr�)rJ�s1�s2s   r�
assertEqualCIzTestNtpath.assertEqualCI�s���������R�X�X�Z�0rzOS helpers require 'nt' modulec���tjtj�}|t	j
|�fD]Y}tj|�}tj|�d}tj|�d}|j||��[tjtj�\}}|j|d�|j|d�tjtjj��\}}	|j||�|j|	d�tjtjfD]�}tj|�}
|j!|
t"�|jt%|
�d�tj|j��}|j!|t&�|jt%|�d���y)Nr)�nt�_getfinalpathnamer'�
executabler%r:�_getvolumepathnamer#r�r7�
_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_helpers�s}��
�)�)�#�.�.�9�
�����J� 7�7�D��/�/��5�K��*�*�4�0��3�J� &� 1� 1�+� >�q� A�����z�+<�=�	8��$�$�S�_�_�5�	��T����3��"����4��#��(�(����)?�)?�)A�B�
��v������$����6�1�%��Z�Z����0�D��-�-�d�3�J��!�!�*�c�2����s�:���2��/�/����
�>�L��!�!�,��6����s�<�0�!�4�1rr!z/Can only test junctions with creation on win32.c�F�tj�5}tj|�5tjd�ddl}	|j
dd�|jtjd��|jtjd��|jtjd�tjd��ddd�ddd�y#t$rtjd��wxYw#1swY�4xYw#1swYyxYw)N�tmpdirr�testjuncz!creating the test junction failed)rr/r�r%r��_winapi�CreateJunctionr�unittest�SkipTestr#r#�
isjunctionr&rMr�)rJr�rPs   r�test_isjunctionzTestNtpath.test_isjunction�s���
�
�
�
!�Q��%�%�a�(�����"��Q��*�*�8�Z�@����� 1� 1�*� =�>�� � ��!2�!2�8�!<�=��$�$�V�_�_�Z�%@�&�/�/�RZ�B[�\�)�"�
!���Q�"�+�+�,O�P�P�Q��
)�(��"�
!�s;�D�D�C)�BD�D�)D�D�D	�D�D z#drive letters are a windows conceptc��tjjd�}|�t|�dk7s|ddk7rt	j
d��|j
tjjd|z��y)N�SystemDrive�r~�:z'SystemDrive is not defined or malformedz\\.\)	r%�environ�getrBrRrSr&r�isfile)rJrs  r�test_isfile_driveletterz"TestNtpath.test_isfile_driveletter�s_���
�
���}�-���=�C��J�!�O�u�Q�x�3���#�#�$M�N�N���������	�E�(9�:�;r�pipezneed os.pipe()c�.�tj�\}}	|jtj|��tj
|�tj
|�y#tj
|�tj
|�wxYwr")r%r^r&r#r\r�)rJ�pr�pws   r�test_isfile_anonymous_pipez%TestNtpath.test_isfile_anonymous_pipe�s]��������B�	����V�]�]�2�.�/��H�H�R�L��H�H�R�L��
�H�H�R�L��H�H�R�L�s�$A(�(,Bzwindows onlyc
��ddl}dtj���}|j||jdddddd�}	|jt
j|��|j|�y#|j|�wxYw)Nrz//./PIPE/python_isfile_test_r~)	rPr%�getpid�CreateNamedPipe�PIPE_ACCESS_INBOUNDr&r#r\�CloseHandle)rJrP�
named_pipe�hs    r�test_isfile_named_pipez!TestNtpath.test_isfile_named_pipe�sx���3�B�I�I�K�=�A�
��#�#�J�$+�$?�$?�$%�q�!�Q��1�
6��	#����V�]�]�:�6�7�����"��G����"�s�$A5�5Bc�t�|jtjjd��|jtjj	d��|jtjjd��|j
tjjd��y)Nz\\.\CON)r&r%rr\�isdir�islinkr#�existsr^s r�test_con_devicezTestNtpath.test_con_device�sl����������
�3�4���������z�2�3���������
�3�4���������z�2�3rzFast paths are only for win32c��|jtjjtj
u�|j
tjtjj��|jtjjtju�|j
tjtjj��|jtjjtju�|j
tjtjj��|jtjjtju�|j
tjtjj��|jtjjtj u�|j
tjtjj��yr")r#r%rr�r9�_path_normpathr&�inspect�
isfunctionrl�_path_isdirr\�_path_isfilerm�_path_islinkrn�_path_existsr^s r�test_fast_paths_in_usez!TestNtpath.test_fast_paths_in_use�s@��	
������(�(�B�,=�,=�=�>�����+�+�B�G�G�,<�,<�=�>�������
�
����7�8�����+�+�B�G�G�M�M�:�;���������"�/�/�9�:�����+�+�B�G�G�N�N�;�<���������"�/�/�9�:�����+�+�B�G�G�N�N�;�<���������"�/�/�9�:�����+�+�B�G�G�N�N�;�<rr9zDev Drives only exist on Win32c�8�|jtjtj�d�|jtjd�d�|jtjd�d�|jtjtj�d�d�|jtjd��|jt�5tjd�ddd�y#1swYyxYw)N)TFr��.rz2\\?\Volume{00000000-0000-0000-0000-000000000000}\\)rOr#�
isdevdriverr�r%�listvolumesr&r�rr9�_path_isdevdriver^s r�test_isdevdrivezTestNtpath.test_isdevdrives���	
�
�
�f�'�'�	�(8�(8�9�=�I��
�
�f�'�'��,�m�<��
�
�f�'�'��-�}�=��
�
�f�'�'����(8��(;�<�m�L�����*�*�+`�a�b�
�
�
�w�
'���� U�V�(�
'�
'�s�1D�Dz'isdevdrive fallback only used off Win32c�h�|jtjtj��yr")r&r#r{rr�r^s r�test_isdevdrive_fallbackz#TestNtpath.test_isdevdrive_fallbacks#��	
����*�*�9�+;�+;�<�=rN)8rRrSrTr_rlrwr|rr�r�r�r�r�r�skip_unless_symlinkrR�
skipUnless�HAVE_GETFINALPATHNAMEr�r�r�r�r�r�r�r��HAVE_GETSHORTPATHNAMEr�r�r�r�rr9r
rr�skipIfrr+r3r7rLr'r(rUr]r.r%rbrjrorrx�namer~r�rUrrrWrWYsE��
D�1�0XA�t
S�/�"�D\�L(2�TD�
6��"�"��X���.�0H�I�U�J�#�U�*�"�"��X���.�0H�I�	T�J�#�	T��"�"��X���.�0H�I�D�J�#�D��"�"��X���.�0H�I�5D�J�#�5D�n�"�"��X���.�0H�I�+O�J�#�+O�Z�"�"��X���.�0H�I�('�J�#�('�T�"�"��X���.�0H�I�8�J�#�8�@�X���.�0H�I�5�J�5��X���.�0H�I��X���.�0H�I�N�J�J�N�6D�4�X����.�.�0L�M�E�N�E�&-@�b�X����;�<�)?�=�)?�V:�0CH�J�X�_�_�]�$L�M�0�N�0�"D�H1��X����=�>�5�?�5�:�X�_�_�S�\�\�W�,�._�`�
]�a�
]��X�_�_�S�\�\�W�,�.S�T�<�U�<��X�����V�,�.>�?��@���X�_�_�S�\�\�W�,�n�=�	#�>�	#��X�_�_�S�\�\�W�,�n�=�4�>�4��X�_�_�S�\�\�W�,�.M�N��
=��O�
=��X�_�_�R�W�W��_�&F�G�W�H�W��X�_�_�R�W�W��_�&O�P�>�Q�>rrWc��eZdZeZdgZy)�NtCommonTestr�N)rRrSrTr#�
pathmodule�
attributesrUrrr�r�s���J���Jrr�c��eZdZeZd�Zd�Zd�Zd�Zd�Z	d�Z
d�Zd�Zd	�Z
d
�Zd�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zy)�
PathLikeTestsc�8�tj|_ttj�|_|jtj|j�t|jdd�5}|jd�ddd�y#1swYyxYw)N�xbrstest_ntpath.PathLikeTests)	rr��	file_namer�	file_pathr�r�r�r�)rJ�files  r�setUpzPathLikeTests.setUpsd��"�)�)���!�)�"2�"2�3������	�(�(�$�.�.�9�
�$�.�.�$��
*�d��J�J�3�4�+�
*�
*�s�5B�Bc�h�|j||j�||j��yr")rMr�r�)rJ�funcs  r�_check_functionzPathLikeTests._check_function%s$�����T�$�.�.�1�4����3G�Hrc�
�|j|jj�tjdk(rK|jt
jd�d�|jt
jd�d�yy)Nr!uΩΩuωΩzabcdef)r�rr$r'r(rIr#r^s r�test_path_normcasez PathLikeTests.test_path_normcase(s]�����T�Y�Y�/�/�0��<�<�7�"����V�_�_�^�<�g�F����V�_�_�\�:�L�I�#rc�N�|j|jj�yr")r�r�isabsr^s r�test_path_isabszPathLikeTests.test_path_isabs.������T�Y�Y�_�_�-rc��|j|jjdtd�d�|jjddd��y)Nr��br�)rIrr�rr^s r�test_path_joinzPathLikeTests.test_path_join1s;�����������X�c�]�C�@�������S�#�6�	8rc�N�|j|jj�yr")r�r�splitr^s r�test_path_splitzPathLikeTests.test_path_split5r�rc�N�|j|jj�yr")r�r�splitextr^s r�test_path_splitextz PathLikeTests.test_path_splitext8������T�Y�Y�/�/�0rc�N�|j|jj�yr")r�rr�r^s r�test_path_splitdrivez"PathLikeTests.test_path_splitdrive;������T�Y�Y�1�1�2rc�N�|j|jj�yr")r�rrvr^s r�test_path_splitrootz!PathLikeTests.test_path_splitroot>s�����T�Y�Y�0�0�1rc�N�|j|jj�yr")r�rr�r^s r�test_path_basenamez PathLikeTests.test_path_basenameAr�rc�N�|j|jj�yr")r�rr�r^s r�test_path_dirnamezPathLikeTests.test_path_dirnameD������T�Y�Y�.�.�/rc�N�|j|jj�yr")r�rrmr^s r�test_path_islinkzPathLikeTests.test_path_islinkGs�����T�Y�Y�-�-�.rc�N�|j|jj�yr")r�r�lexistsr^s r�test_path_lexistszPathLikeTests.test_path_lexistsJr�rc�N�|j|jj�yr")r�rr.r^s r�test_path_ismountzPathLikeTests.test_path_ismountMr�rc�N�|j|jj�yr")r�r�
expanduserr^s r�test_path_expanduserz"PathLikeTests.test_path_expanduserPr�rc�N�|j|jj�yr")r�r�
expandvarsr^s r�test_path_expandvarsz"PathLikeTests.test_path_expandvarsSr�rc�N�|j|jj�yr")r�rr�r^s r�test_path_normpathz PathLikeTests.test_path_normpathVr�rc�N�|j|jj�yr")r�rr�r^s r�test_path_abspathzPathLikeTests.test_path_abspathYr�rc�N�|j|jj�yr")r�rr�r^s r�test_path_realpathz PathLikeTests.test_path_realpath\r�rc�N�|j|jj�yr")r�rr�r^s r�test_path_relpathzPathLikeTests.test_path_relpath_r�rc��|jj|j|jg�}|j	||j�yr")rrr�r�rM)rJ�common_paths  r�test_path_commonpathz"PathLikeTests.test_path_commonpathbs7���i�i�*�*�D�N�N�D�N�N�+K�L�����[�$�.�.�9rc�N�|j|jj�yr")r�rrlr^s r�test_path_isdirzPathLikeTests.test_path_isdirfr�rN)rRrSrTr#rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rUrrr�r�sw���D�5�I�J�.�8�.�1�3�2�1�0�/�0�0�3�3�1�0�1�0�:�.rr��__main__)$rrr#r%r�r'rRr=�test.supportrrrr�test.support.os_helperrr�r�tempfiler	r9�ImportErrorr:r��AttributeErrorr
r�rr0rE�TestCaserGrW�
CommonTestr�r�rR�mainrUrr�<module>r�s���
�	�
�
���0�2�+�!�"��
�!�
���!��#��!��
#��<�03�X�&�&�3�y>��y>�x�#�.�.��0A�0A��
M.�N�M.�`�z���H�M�M�O���s"��
�B����"�!��"���"�!��"�s6�C�C�C �C�C�C�C� C*�)C*

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists