a zeK@s<ddlZddlZddlZddlZddlZddlmZmZddlm Z m Z ddl m Z z ddl Z WneyvdZ Yn0z ejWneydZYn0dZz ddlZWneydZYn0dZddZd d Zd d ZGd ddejZGdddeZGddde jejZGdddeZedkr8edS)N) TestFailedFakePath)supporttest_genericpath) TemporaryFileFTcCsntjdddj}tjtjtjg|_tj|_||dd}|sLtdt t |}||||}|d|S)NZkernel32T)Zuse_last_errorrz&failed to get short path name 0x{:08X}) ctypesZWinDLLZGetShortPathNameWZ c_wchar_pZc_uint32argtypesZrestypeOSErrorformatZget_last_errorZcreate_unicode_buffer)pathZGSPNZ result_lenresultr D/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_ntpath.py_getshortpathnames   rcCsBt|tttjfr"tt|St|dr>t dd|DS|S)N__iter__css|]}tt|VqdSN)ntpathnormcaseosfsdecode.0pr r r /z_norm..) isinstancebytesstrrPathLikerrrhasattrtuple)r r r r_norm+s  r!cCs$|dd}t|}||krJt|t|krJtdt|t|t|f|dd}|dd}|dd }|d d }|d d }|dd}t|d}|ddd}t $t dt t|}Wdn1s0Yt|t|kr tdt|t|t |fdS)N\\\z%%s should return: %s but returned: %sz('z(b'z("z(b"z['z[b'z["z[b"z, 'z, b'z, "z, b"latin1asciibackslashreplaceignore)replaceevalr!rrrfsencodedecodeencodewarningscatch_warnings simplefilterDeprecationWarningrepr)fnZ wantResultZ gotResultr r rtester3s*         &r3c@seZdZddZddZdS)NtpathTestCasecCs,||kst|t|krdS|||dSr)r! assertEqual)selfZpath1Zpath2r r rassertPathEqualLszNtpathTestCase.assertPathEqualcCs|t|t|dSr)ZassertInr!)r6r Zpathsetr r r assertPathInQszNtpathTestCase.assertPathInN)__name__ __module__ __qualname__r7r8r r r rr4Ksr4c@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ e j eedddZe j eedddZe j eedddZe j eedddZe j eedddZeedddZeedeed d!d"Zd#d$Zee jd%d&d'Zd(d)Zeed*d+d,Zd-d.Zd/d0Z d1d2Z!d3d4Z"d5d6Z#eed7d8d9Z$d:S); TestNtpathcCshtddtddtddtddtd d td d td dtddtddtdddS)Nzntpath.splitext("foo.ext"))foo.extzntpath.splitext("/foo/foo.ext"))z/foo/foor>zntpath.splitext(".ext"))r>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.barr>z!ntpath.splitext("xx/foo.bar.ext"))z xx/foo.barr>z!ntpath.splitext("xx\foo.bar.ext"))z xx\foo.barr>zntpath.splitext("c:a/b\c.d"))zc:a/b\cz.dr3r6r r r test_splitextVs         zTestNtpath.test_splitextcCsftddtddtddtddtd d td d td dtdd|tdddS)Nzntpath.splitdrive("c:\foo\bar"))c:\foo\barzntpath.splitdrive("c:/foo/bar"))rC/foo/barz/ntpath.splitdrive("\\conky\mountpoint\foo\bar"))z\\conky\mountpointrDz/ntpath.splitdrive("//conky/mountpoint/foo/bar"))z//conky/mountpointrEz0ntpath.splitdrive("\\\conky\mountpoint\foo\bar"))r?z\\\conky\mountpoint\foo\barz0ntpath.splitdrive("///conky/mountpoint/foo/bar"))r?z///conky/mountpoint/foo/barz0ntpath.splitdrive("\\conky\\mountpoint\foo\bar"))r?z\\conky\\mountpoint\foo\barz0ntpath.splitdrive("//conky//mountpoint/foo/bar"))r?z//conky//mountpoint/foo/baru//conky/MOUNTPOİNT/foo/bar)u//conky/MOUNTPOİNTrE)r3r5r splitdriverAr r rtest_splitdrivebs6 zTestNtpath.test_splitdrivecCs@tddtddtddtddtd d td d dS) Nzntpath.split("c:\foo\bar"))zc:\foobarz*ntpath.split("\\conky\mountpoint\foo\bar"))z\\conky\mountpoint\foorHzntpath.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@rAr r r test_splitws   zTestNtpath.test_splitcCs,tddtddtddtdddS)Nzntpath.isabs("c:\")z#ntpath.isabs("\\conky\mountpoint\")zntpath.isabs("\foo")zntpath.isabs("\foo\bar")r@rAr r r test_isabss   zTestNtpath.test_isabscCs"tddtddtdddS)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@rAr r rtest_commonprefixszTestNtpath.test_commonprefixcCs6tddtddtddtddtdd td d td d tddtddtddtddtddtddtddtddtddtddtddtddtd dtd!d"td#d$td%d&td'd(td)d*td+d,td-d.td/d0td1d2td3d4td5d6td7d8td9d:td;d<td=d<td>d0td?d0td@d0tdAd0tdBd8tdCd8tdDd8tdEdFtdGdHtdIdJtdKdLdMD]$}dND]}tdO||f|qؐqtdPdQtdRdQtdSdQtdTdUtdVdWtdXdYdS)ZNzntpath.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/brCzc:a/brJzc:/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/yzntpath.join(%r, %r)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@)r6xyr r r test_joinsn                                                   zTestNtpath.test_joincCstddtddtddtddtddtd d td d td dtddtddtddtddtddtddtddtddtddtddtd d!td"d#td$d%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('/')r"zntpath.normpath('c:/')rIzntpath.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\Zr@rAr r r test_normpaths,                     zTestNtpath.test_normpathcCsDtt}td|td|td|td|td|dS)Nzntpath.realpath('.')zntpath.realpath('./.')z&ntpath.realpath('/'.join(['.'] * 100))zntpath.realpath('.\.')z&ntpath.realpath('\'.join(['.'] * 100)))rnormpathrgetcwdr3r6expectedr r rtest_realpath_curdirs     zTestNtpath.test_realpath_curdircCs~tt}tdt|tdtt|tdt|ddtdtt|tdt|dddS)Nzntpath.realpath('..')zntpath.realpath('../..')z&ntpath.realpath('/'.join(['..'] * 50))rr"zntpath.realpath('..\..')z&ntpath.realpath('\'.join(['..'] * 50)))rrYrrZr3dirnamerFr[r r rtest_realpath_pardirszTestNtpath.test_realpath_pardirzneed _getfinalpathnamecCsttj}t|d|tj||tj|dt ||d| t |d|| t t |dt |dSNwb1) rabspathrTESTFNopenclose addCleanupunlinkrsymlinkr7realpathr*r6ABSTFNr r rtest_realpath_basics zTestNtpath.test_realpath_basiccCsjttj}t|d|tj||tj|dt |t |d| t |d|dSr`) rrcrrdrerfrgrhrrirelpathr7rjrkr r rtest_realpath_relatives  z!TestNtpath.test_realpath_relativecCstttj}t||tj|t|.tdt dt ddt ddt dt ddt ddt d d t d d t d dt |ddt dd| t d|d| t d|d| t d |d| t d|d| t d |d| t d|d| t d|d| t d|d| t dt |d| t dt |d| t dt |d| t dt |d| t dt |d| t d t |d| t d!t |d| t d"t |dWdn1sf0YdS)#NZsubdirrU recursiverTparentr6missingbrokenz broken\barZbroken1zself\self\brokenZbroken2z"subdir\parent\subdir\parent\brokenZbroken3z\brokenZbroken4zrecursive\..\brokenZbroken5z\missingz broken\fooz \missing\fooz \broken\barz broken1\bazz\broken\bar\bazz\self\self\missingz$\subdir\parent\subdir\parent\missingsbrokens broken\foosbroken1s broken1\bazsbroken2sbroken3sbroken4sbroken5)rrcrrdrmkdirrgrmtree change_cwdchdirrir7rjr*rkr r rtest_realpath_broken_symlinkss                                     z(TestNtpath.test_realpath_broken_symlinkscCsNttj}|tj||tj|d|tj|d|tj|d|tj|d|tj|dt|||t ||t|d|dt|d|d|d|df}| t |d|| t |d|| t |ddd|D|t |d t ||t |d t |d t|d |d|t |d t |d|d | t |d t |d|tt |d|d|t |d|dtdt t |dt |d|d|t |d|d|t t ||dS)Nrb2rRcrOz1\xcss|]}t|dVqdS)rQN)rjoin)rrr r rrirz9TestNtpath.test_realpath_symlink_loops..z1\..z1\..\xz\xrQz1\..\a\b..\r") rrcrrdrgrhrrir7rjr8r^basename)r6rlr\r r rtest_realpath_symlink_loopsRsf    z&TestNtpath.test_realpath_symlink_loopscCsttj}|tj|d|tjd|d|tj|d|tj|dt|dd}|dWdn1s0Yt |d|dtd|dd}|dWdn1s0Yt d|d|d| t |d|d| t |dd|dtt |dd  }| | dWdn1sl0Ytt |dd  }| | dWdn1s0Y| t d|dd|d| t d|dd|ddS) N3z\\?\z3.Z3linkz3.linkra01rb)rrcrrdrgrhrewriterrir7rjr5read)r6rlfr r rtest_realpath_symlink_prefixs6 (( 00  z'TestNtpath.test_realpath_symlink_prefixcCstdddS)Nzntpath.realpath('NUL')rWr@rAr r rtest_realpath_nulszTestNtpath.test_realpath_nulzneed _getshortpathnamecCstttj}t|t|t||tj|t |d}t|t |}t |d}t |d}t |d}| dWdn1s0Y| |t|t|"| |tdWdn1s0Yt|"| |tdWdn1s(0Yt|"| |tdWdn1sf0YdS)NZMyVeryLongDirectoryNamezfile.txtrascontent)rrcrrdrhrurrtrgr{rrerr7rjrvlower)r6rlZ test_dir_longZtest_dir_shortZtest_file_longZtest_file_shortrr r rtest_realpath_cwds&         ( 02 zTestNtpath.test_realpath_cwdcCs t}|d|d<d|d<d|d<tddtdd td d td d tddtddtddtddtddtdd tddtdd tdd tdd tddtd d!td"d#td$d%td&d'Wdn1s0YdS)(NrHr=Zbaz1z{fooZbaz2z{foo}zntpath.expandvars("foo")zntpath.expandvars("$foo bar")zbar barzntpath.expandvars("${foo}bar")Zbarbarzntpath.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%)rEnvironmentVarGuardclearr3r6envr r rtest_expandvarss0                   zTestNtpath.test_expandvarszneed support.FS_NONASCIIcCsdd}t}|tj}||d<d|||<|dd||d|d||dd ||d |d ||d d ||d|d||dd||d|d||dd ||d|d |Wdn1s0YdS)NcSstd||dS)Nzntpath.expandvars(%r)r@)valuer\r r rchecksz2TestNtpath.test_expandvars_nonascii..checkspamZhamz $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)rrr FS_NONASCIIr )r6rrZnonasciir r rtest_expandvars_nonasciis   z#TestNtpath.test_expandvars_nonasciicCstddt}|tddd|d<d|d<tdd td d |d=tdd td d|d |d <tdd td d tddtddtddtdd|d|d<d |d <tdd td d Wdn1s0YdS)Nzntpath.expanduser("test")testzntpath.expanduser("~test")z~testz eric\idleHOMEPATHC:\ HOMEDRIVEz C:\eric\testzntpath.expanduser("~")z C:\eric\idlez eric\test USERPROFILEz"ntpath.expanduser("~test\foo\bar")zC:\eric\test\foo\barz"ntpath.expanduser("~test/foo/bar")zC:\eric\test/foo/barzntpath.expanduser("~\foo\bar")zC:\eric\idle\foo\barzntpath.expanduser("~/foo/bar")zC:\eric\idle/foo/barzF:\HOME)r3rrrrr r rtest_expandusers@          zTestNtpath.test_expanduserzabspath requires 'nt' modulecCs|tddttjR}td|td|dtd|dt|\}}td|d Wdn1sn0YdS) Nzntpath.abspath("C:\")rzntpath.abspath("")zntpath.abspath(" ")z\ zntpath.abspath("?")z\?zntpath.abspath("/abc/")z\abc)r3rtemp_cwdrdrrF)r6cwd_dirdrive_r r r test_abspaths  zTestNtpath.test_abspathcCstddtddtddtddttj>}t|}tdd |d td d |d Wdn1sx0Ytd dtddtddtddtddtddtddtddtddtddtd dtd!dtd"dtd#ddS)$Nzntpath.relpath("a")rOz#ntpath.relpath(ntpath.abspath("a"))zntpath.relpath("a/b")r}zntpath.relpath("../a/b")z..\a\bzntpath.relpath("a", "../b")r~rPzntpath.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")rUz(ntpath.relpath("/foo/bar/bat", "/x/y/z")z..\..\..\foo\bar\batz*ntpath.relpath("/foo/bar/bat", "/foo/bar")Zbatz#ntpath.relpath("/foo/bar/bat", "/")z foo\bar\batz#ntpath.relpath("/", "/foo/bar/bat")rVz$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"))r3rrrdrr)r6rZ currentdirr r r test_relpaths,     0             zTestNtpath.test_relpathcsZdd}fdd}ttjg|tddg|tddg|tddg|tddg|dgd|ddgd|d dgd|d d gd|d d gd|d d gd|ddgd|ddgd|ddgd|ddgd|ddgd|d dgd|ddgd|ddgd|ddgd|tddg|dgd|ddgd|ddgd|ddgd|ddgd|dd gd|gd!d|gd"d|d#d$gd%|dgd|dd&gd|tdd'gttjd(dgttjd(d)gttjd*dgttjdd+gttjdd,gttjdd+gdS)-NcSstd|dd|dS)Nzntpath.commonpath(%r)r#r")r3r()pathsr\r r rr8sz)TestNtpath.test_commonpath..checkcs.|tj||tjdd|DdS)NcSsg|]}t|qSr )rr*rr r r >rzCTestNtpath.test_commonpath..check_error..) assertRaisesr commonpath)excrrAr r check_error;s  z/TestNtpath.test_commonpath..check_errorzC:\Program Filesz Program FileszC:Program Filesz\Program FileszC:\Program Files\zC:\\Program FileszC:\Program Files\\zC:\.\Program FileszC:\Program Files\.rzC:\binzC:\Program Files\BarzC:\Program Files\Fooz C:\ProjectszC:/Program Files/Barzc:/program files/barzc:\program fileszD:\Program Filesralotr?and\jamand\spamandzand\\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 ValueErrorrr TypeError)r6rrr rArtest_commonpath7s          zTestNtpath.test_commonpathc Cst}t}|t|||t||tjdkr|t tddWdn1sz0YWdn1s0YWdn1s0YdS)Nwin32) r assertTruer sameopenfilefileno assertFalsesysplatformrr )r6Ztf1Ztf2r r rtest_sameopenfile|s   zTestNtpath.test_sameopenfilecCs|td|td|td|td|td|td|td|td|td |td |td |td t }|t|Wdn1s0Ytjd krttj \}}t t tj 8|t| |t| Wdn1sf0Y|td|td|td|tddS)NrIrrJzC:/z\\.\c:\z\\.\C:\sc:\sC:\sc:/sC:/s\\.\c:\s\\.\C:\rz\\localhost\c$z\\localhost\c$\s\\localhost\c$s\\localhost\c$\)rrismountrZtemp_dirrrrrF executablervr^rupper)r6drr r r r test_ismounts. . 4zTestNtpath.test_ismountcCs|||dS)zsD            }J