a 5êdgÅVã@s²dZddlZddlZddlZddlZddlZddlmZddlm Z ddl m Z ddd„Z Gd d „d ƒZ Gd d „d e ejƒZGd d„de ƒZGdd„dejƒZedkr®e ¡dS)z3 Tests common to genericpath, ntpath and posixpath éN)Úsupport)Úassert_python_ok)ÚFakePathófoocCs:t|ddƒ}| |¡Wdƒn1s,0YdS)NÚxbr)ÚopenÚwrite)ÚfilenameÚdataÚfp©r ú1/usr/local/lib/python3.9/test/test_genericpath.pyÚ create_filesrc@s¾eZdZgd¢ZgZdd„Zdd„Zdd„Zdd „Zd d „Z e   e e d ƒd ¡dd„ƒZdd„Zdd„Zdd„Zdd„Zejdd„ƒZdd„Zdd„Zdd„Zejd d!„ƒZd"d#„Zd$d%„Zd&S)'Ú GenericTest)Ú commonprefixÚgetsizeÚgetatimeÚgetctimeÚgetmtimeÚexistsÚisdirÚisfilec Csd|j|jD]R}| t¡4t|j|ƒƒ| d |jj|¡¡‚Wdƒq 1sT0Yq dS)Nz!{}.{}() did not raise a TypeError) Úcommon_attributesÚ attributesÚ assertRaisesÚ TypeErrorÚgetattrÚ pathmoduleZfailÚformatÚ__name__)ÚselfÚattrr r r Útest_no_arguments  ÿzGenericTest.test_no_argumentc CsŽ|jj}| |gƒd¡| |ddgƒd¡| |ddgƒd¡| |ddgƒd¡| |ddgƒd ¡| |d d gƒd ¡| |d d gƒd ¡| |d dgƒd¡| |ddgƒd¡| |ddgƒd¡| |ddgƒd¡| |ddgƒd¡| |ddgƒd¡gd¢}|D]t}|D]h}|||gƒ}| | |¡¡| | |¡¡||krt|ƒ}| |||d…|||d…¡qqdS)NÚz/home/swenson/spamz/home/swen/spamz /home/swenz/home/swen/eggsz /home/swen/zhome:swenson:spamzhome:swen:spamz home:swenz:home:swen:spamz:home:swen:eggsz :home:swen:s/home/swenson/spams/home/swen/spams /home/swens/home/swen/eggss /home/swen/shome:swenson:spamshome:swen:spams home:swens:home:swen:spams:home:swen:eggss :home:swen:) r#ÚabcZXbcdZXbZXYZabcdZaXcZabdÚabZaXZabcXé)rrÚ assertEqualÚ assertTrueÚ startswithÚlenZassertNotEqual)r rZtestlistÚs1Ús2ÚpÚnr r r Útest_commonprefix s|þ þ þ þ þ þ þ þ þ þ þ þ þ  zGenericTest.test_commonprefixcCs^tj}| tj|¡t|dƒ| |j |¡d¡t  |¡t|dƒ| |j |¡d¡dS)NsHelloés Hello World!é ) rÚTESTFNÚ addCleanupÚunlinkrr'rrÚosÚremove)r r r r r Ú test_getsizecs   zGenericTest.test_getsizecCs´tj}| tj|¡t|dƒt|ddƒ}| d¡Wdƒn1sJ0Yt|ddƒ}| ¡}Wdƒn1s~0Y| |d¡|  |j   |¡|j   |¡¡dS)Nrr%róbarÚrbsfoobar) rr2r3r4rrrÚreadr'ZassertLessEqualrrr)r r Úfr r r r Ú test_filetimens (&   þzGenericTest.test_filetimecCsntj}t |¡}| tj|¡| |j |¡d¡| |j |¡d¡t |ƒ| |j |¡d¡| |j |¡d¡| |j |d¡d¡| |j |d¡d¡| |j |d¡d¡| |j |d¡d¡|jt urj| |j  |¡d¡| |j  |¡d¡| |j  |d¡d¡| |j  |d¡d¡| |j  |d¡d¡| |j  |d¡d¡dS)NFTõí¿¿óÿúó) rr2r5Úfsencoder3r4ÚassertIsrrrÚ genericpathÚlexists©r r Z bfilenamer r r Ú test_exists€s&  zGenericTest.test_existsÚpipezrequires os.pipe()c Csdt ¡\}}z*| |j |¡¡Wt |¡t |¡nt |¡t |¡0| |j |¡¡dS©N)r5rGr(rrÚcloseÚ assertFalse)r ÚrÚwr r r Útest_exists_fd›s   ÿ  zGenericTest.test_exists_fdc Cs6tj}t |¡}| |j |¡d¡| |j |¡d¡| |j |d¡d¡| |j |d¡d¡| |j |d¡d¡| |j |d¡d¡z>t|ƒ| |j |¡d¡| |j |¡d¡Wt |¡n t |¡0z@t  |¡| |j |¡d¡| |j |¡d¡Wt  |¡n t  |¡0dS©NFr=r>r?r@T) rr2r5rArBrrrr4ÚmkdirÚrmdirrEr r r Ú test_isdir¥s$  zGenericTest.test_isdirc Cs6tj}t |¡}| |j |¡d¡| |j |¡d¡| |j |d¡d¡| |j |d¡d¡| |j |d¡d¡| |j |d¡d¡z>t|ƒ| |j |¡d¡| |j |¡d¡Wt |¡n t |¡0z@t  |¡| |j |¡d¡| |j |¡d¡Wt  |¡n t  |¡0dSrN) rr2r5rArBrrrr4rOrPrEr r r Ú test_isfile¾s$  zGenericTest.test_isfilecCsxtj}tjd}| tj|¡| tj|¡t|ƒ| |j ||¡¡t|ƒ| |j ||¡¡|  t |jj¡dS©NÚ2) rr2r3r4rr(rÚsamefilerJrr)r Zfile1Zfile2r r r Ú test_samefile×s zGenericTest.test_samefilecCs|tj}tjd}| tj|¡| tj|¡t|ƒ|||ƒ| |j ||¡¡t  |¡t|ƒ|  |j ||¡¡dSrS) rr2r3r4rr(rrUr5r6rJ©r ÚfuncÚtest_fn1Útest_fn2r r r Ú_test_samefile_on_link_funcås   z'GenericTest._test_samefile_on_link_funccCs| tj¡dSrH)r[r5Úsymlink©r r r r Útest_samefile_on_symlinkôsz$GenericTest.test_samefile_on_symlinkc CsHz| tj¡Wn2tyB}z| d|¡WYd}~n d}~00dS©Nz os.link(): %s)r[r5ÚlinkÚPermissionErrorÚskipTest©r Úer r r Útest_samefile_on_linkøsz!GenericTest.test_samefile_on_linkcCs’tj}tjd}| tj|¡| tj|¡t|ƒt |¡}| |j  |t |¡¡¡t|ƒt |¡}|  |j  ||¡¡|  t |jj ¡dSrS) rr2r3r4rr5Ústatr(rÚsamestatrJrr)r rYrZZstat1Zstat2r r r Ú test_samestatþs   zGenericTest.test_samestatcCs˜tjd}tjd}| tj|¡| tj|¡t|ƒ|||ƒ| |j t  |¡t  |¡¡¡t  |¡t|ƒ|  |j t  |¡t  |¡¡¡dS)NÚ1rT) rr2r3r4rr(rrgr5rfr6rJrWr r r Ú_test_samestat_on_link_funcs   ÿ ÿz'GenericTest._test_samestat_on_link_funccCs| tj¡dSrH)rjr5r\r]r r r Útest_samestat_on_symlinksz$GenericTest.test_samestat_on_symlinkc CsHz| tj¡Wn2tyB}z| d|¡WYd}~n d}~00dSr_)rjr5r`rarbrcr r r Útest_samestat_on_link"sz!GenericTest.test_samestat_on_linkc Csœtj}| tj|¡t|ƒt|ddƒ`}| ¡}t|ddƒ,}| ¡}| |j  ||¡¡Wdƒn1sp0YWdƒn1sŽ0YdS)Nr9r) rr2r3r4rrÚfilenor(rÚ sameopenfile)r r Úfp1Úfd1Úfp2Úfd2r r r Útest_sameopenfile(szGenericTest.test_sameopenfileN)rÚ __module__Ú __qualname__rrr"r/r7r<rFÚunittestÚ skipUnlessÚhasattrr5rMrQrRrVr[rZskip_unless_symlinkr^rerhrjrkrlrsr r r r rs,C    rc@seZdZeZdd„ZdS)ÚTestGenericTestc CsXtjD]J}|dkrqt|j|ƒ}|j|d|dvr\|dƒ|dƒ|dƒ|dƒnÖ| ttf¡|dƒWdƒn1sˆ0Y| ttf¡|dƒWdƒn1s¾0Y|  t d¡|dƒWdƒn1sò0Y|  t d¡|dƒWdƒn1s(0YWdƒq1sH0YqdS) Nr)r!)rrru /tmpí¿¿abcdss /tmpÿabcdsz /tmpabcdss /tmpabcdsz embedded null) rrrrZsubTestrÚOSErrorÚUnicodeEncodeErrorÚUnicodeDecodeErrorÚassertRaisesRegexÚ ValueError)r r!rXr r r Útest_invalid_paths:s$   &&&z"TestGenericTest.test_invalid_pathsN)rrtrurCrrr r r r ry4sryc@sˆeZdZejgd¢Zdd„Zdd„Zdd„Ze  e j d¡d d „ƒZ d d „Z d d„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„ZdS)Ú CommonTest)ÚcurdirÚpardirÚextsepÚsepÚpathsepÚdefpathÚaltsepÚdevnullÚnormcaseÚ splitdriveÚ expandvarsÚnormpathÚabspathÚjoinÚsplitÚsplitextÚisabsÚbasenameÚdirnamerDÚislinkÚismountÚ expanduserrŒÚrealpathcCs||jj}dD]}||ƒ}| |||ƒ¡q | |dƒd¡| |dƒd¡ddddgtdƒddhfD]}| t||¡qddS)N)z FoO/./BaRs FoO/./BaRr#óTrg@Úo)rr‰r'Ú bytearrayrr)r r‰r-Úpathr r r Ú test_normcase^szCommonTest.test_normcasecCsl|jj}| |dƒd¡| |dƒd¡| |dƒd¡| |dƒd¡| |d ƒd ¡| |d ƒd ¡dS) Nú/foo/bar)r#rúfoo:bar)r#ržú:foo:bar)r#rŸó/foo/bar)r˜r ófoo:bar)r˜r¡ó:foo:bar)r˜r¢)rrŠr')r rŠr r r Útest_splitdrivelszCommonTest.test_splitdrivecCs¸|jj}t ¡}| ¡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#¡Wdƒn1sª0YdS)$NZbarÚfooZbaz1z{fooZbaz2z{foo}z$foo barzbar barz ${foo}barZbarbarz $[foo]barz$bar barz$?barz$foo}barzbar}barz${fooz${{foo}}zbaz1}z$foo$fooz$bar$barrs$foo barsbar bars ${foo}barsbarbars $[foo]bars$bar bars$?bars$foo}barsbar}bars${foos${{foo}}sbaz1}s$foo$foos$bar$bar)rr‹rÚEnvironmentVarGuardÚclearr')r r‹Úenvr r r Útest_expandvarsws8 zCommonTest.test_expandvarszneed support.FS_NONASCIIcsNˆjj‰‡‡fdd„}t ¡}| ¡tj}||d<d|||<|||ƒ|dd|ƒ|dd|ƒ|d |d |ƒ|d |d |ƒ|d d |ƒ|t |¡t |¡ƒ|dt d|¡ƒ|dt d|¡ƒ|t d |¡t d |¡ƒ|t d |¡t d |¡ƒ|dt d |¡ƒWdƒn1s@0YdS)Ncsˆ ˆ|ƒ|¡dSrH)r')ÚvalueZexpected©r‹r r r Úcheck™sz2CommonTest.test_expandvars_nonascii..checkZspamZhamz $spam barz%s barz ${spam}barz%sbarz${%s}barzham%sbarz $bar%s barz $spam}barz%s}bars $spam bars ${spam}bars $spam}bar)rr‹rr¥r¦Ú FS_NONASCIIr5rA)r r«r§Znonasciir rªr Útest_expandvars_nonascii–s.    ÿ ÿz#CommonTest.test_expandvars_nonasciicCsÎ| d|j d¡¡t ¡0t dt¡| d|j d¡¡Wdƒn1sR0Ytjdkrjdnd}t ¡Dt dt¡dd|ddfD]}|  |j |¡t ¡q’Wdƒn1sÀ0YdS) Nr¤ÚignorerÚwin32r˜sfòòs/foosC:\) ÚassertInrrÚwarningsÚcatch_warningsÚ simplefilterÚDeprecationWarningÚsysÚplatformÚassertIsInstanceÚbytes)r Zundecodable_pathr›r r r Ú test_abspath°s  2  zCommonTest.test_abspathcCs`| d|j d¡¡t ¡0t dt¡| d|j d¡¡Wdƒn1sR0YdS)Nr¤r®r)r°rr—r±r²r³r´r]r r r Ú test_realpath¿s  zCommonTest.test_realpathcCs"dD]}| |j |¡t¡qdS)N)r#Ú.ú/ú\z///foo/.//bar//)r·rrŒÚstr)r r›r r r Útest_normpath_issue5827Åsz"CommonTest.test_normpath_issue5827c Cs”|jj}dD]}| ||ƒt¡q d}zt |¡WnttfyJYnF0t  |¡*dD]}| ||ƒt¡q\Wdƒn1s†0YdS)N)r#Zfuuufùùz/fuuzU:\uçwð) rrr·r¾r5rAÚAttributeErrorr{rÚtemp_cwd)r rr›Zunicwdr r r Útest_abspath_issue3426Ês z!CommonTest.test_abspath_issue3426c Csštjrtjdvrtj}ntjr&tj}n | d¡t ¡Nt dt ¡t  |¡|  ¡Wdƒn1sn0YWdƒn1sŒ0YdS)N)r¯Údarwinzneed support.TESTFN_NONASCIIr®) rZTESTFN_UNDECODABLErµr¶ZTESTFN_NONASCIIrbr±r²r³r´rÁr¹)r Únamer r r Útest_nonascii_abspathÜsû    z CommonTest.test_nonascii_abspathc CsÞtjdtfdd´d}| t|¡|j dd¡Wdƒn1sJ0Y| t|¡|j dd¡Wdƒn1s„0Y| td¡|j dd¡Wdƒn1s¾0Y| td¡|j dd¡Wdƒn1sø0Y| td¡|j d¡Wdƒn1s20Y| td ¡|j g¡Wdƒn1sl0Y| td ¡&|j td ƒtd ƒ¡Wdƒn1s°0YWdƒn1sÐ0YdS) Nr#T©Úquietú.Can't mix strings and bytes in path componentsóbytesr¾Úinté*Úlistršrr8)rÚcheck_warningsÚ BytesWarningr}rrrŽrš©r Úerrmsgr r r Útest_join_errorsîs ,,,,,,zCommonTest.test_join_errorsc Csntjdttffdd@d}| t|¡|j dd¡Wdƒn1sN0Y| t|¡|j dd¡Wdƒn1sˆ0Y| td¡|j dd¡Wdƒn1sÂ0Y| td¡|j dd¡Wdƒn1sü0Y| td ¡&|j td ƒtd ƒ¡Wdƒn1s@0YWdƒn1s`0YdS) Nr#TrÆrÈrÉr¾rÊrËršrr8) rrÍrÎr´r}rrÚrelpathršrÏr r r Útest_relpath_errorssÿ ,,,,zCommonTest.test_relpath_errorscCstddd|jjƒdS)Nz-Sz-czimport )rrrr]r r r Ú test_importszCommonTest.test_importN)rrtrurrrœr£r¨rvrwrr¬r­r¹rºr¿rÂrÅrÑrÓrÔr r r r r€Ss    r€c@s\eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dS)Ú PathLikeTestscCs4tj|_ttjƒ|_| tj|j¡t|jdƒdS)Nstest_genericpath.PathLikeTests)rr2Ú file_namerÚ file_pathr3r4rr]r r r ÚsetUps zPathLikeTests.setUpcCs| ||jƒ||jƒ¡dSrH)r'r×rÖ)r rXr r r ÚassertPathEqualszPathLikeTests.assertPathEqualcCs| tjj¡dSrH)rÙr5r›rr]r r r Útest_path_exists!szPathLikeTests.test_path_existscCs| tjj¡dSrH)rÙr5r›rr]r r r Útest_path_isfile$szPathLikeTests.test_path_isfilecCs| tjj¡dSrH)rÙr5r›rr]r r r Útest_path_isdir'szPathLikeTests.test_path_isdircCs"| tj |j|jg¡|j¡dSrH)r'r5r›rr×rÖr]r r r Útest_path_commonprefix*sÿz$PathLikeTests.test_path_commonprefixcCs| tjj¡dSrH)rÙr5r›rr]r r r Útest_path_getsize.szPathLikeTests.test_path_getsizecCs| tjj¡dSrH)rÙr5r›rr]r r r Útest_path_getmtime1sz PathLikeTests.test_path_getmtimecCs| tjj¡dSrH)rÙr5r›rr]r r r Útest_path_getctime4sz PathLikeTests.test_path_getctimecCs| tj |j|j¡¡dSrH)r(r5r›rUr×rÖr]r r r Útest_path_samefile7sz PathLikeTests.test_path_samefileN) rrtrurØrÙrÚrÛrÜrÝrÞrßràrár r r r rÕsrÕÚ__main__)r)Ú__doc__rCr5rµrvr±ÚtestrZtest.support.script_helperrZ test.supportrrrZTestCaseryr€rÕrÚmainr r r r Ús$    "D%