a 5êdgŽ0ã@sÈddlZddlZddlZddlZddlZddlZddlmZddlm Z dd„Z dd„Z Gdd „d ej ƒZ e ej d ¡d ¡Gd d „d ej ƒƒZGdd„dej ƒZGdd„dej ƒZedkrÄe ¡dS)éN)Úsupport)Ú win32_editioncCstjagt_dt_t ¡dS)NF)Ú mimetypesÚ knownfilesZinitedZ_default_mime_types©rrú//usr/local/lib/python3.9/test/test_mimetypes.pyÚ setUpModule srcCs tt_dS©N)rrrrrrÚtearDownModulesr c@s|eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„ZdS)ÚMimeTypesTestCasecCst ¡|_dSr )rÚ MimeTypesÚdb©ÚselfrrrÚsetUpszMimeTypesTestCase.setUpcCsˆ|j}||j d¡dƒ||j d¡dƒ||j d¡dƒ||j d¡dƒ||j d¡dƒ||j d ¡d ƒ||j d ¡d ƒdS) Núfoo.html©ú text/htmlNzfoo.HTMLzfoo.tgz©úapplication/x-tarÚgzipz foo.tar.gzz foo.tar.Z)rÚcompressz foo.tar.bz2)rÚbzip2z foo.tar.xz)rÚxz©Ú assertEqualr Ú guess_type©rÚeqrrrÚtest_default_datasz#MimeTypesTestCase.test_default_datacCsJ|j}|jj}||dƒdƒ||dƒdƒ||dƒdƒ||dƒdƒdS)Nzdata:invalidDataWithoutComma©NNzdata:,thisIsTextPlain©ú text/plainNzdata:;base64,thisIsTextPlainzdata:text/x-foo,thisIsTextXFoo)z text/x-fooNr)rrrrrrÚtest_data_urls)s z MimeTypesTestCase.test_data_urlscCsD|j}t d¡}|j |¡||j d¡dƒ||j d¡dƒdS)Nú x-application/x-unittest pyunit z foo.pyunit)úx-application/x-unittestNr%ú.pyunit)rÚioÚStringIOr ZreadfprÚguess_extension)rrÚsiorrrÚtest_file_parsing1s   ÿz#MimeTypesTestCase.test_file_parsingc Cs|j}| t d¡¡t ¡B}d}t |d¡}| |¡t |¡}||ddƒWdƒn1sf0Yt ¡‚}d}t |d¡}|j|ddd dl }t  |d dd d „¡t |¡}Wdƒn1sÔ0Y||ddƒWdƒn1s0YdS)Nz non-existentr$zsample.mimetyper&r%u#application/no-mans-land Françaiszutf-8)ÚencodingrÚgetpreferredencodingTcSsdS)NÚASCIIr)Ú do_setlocalerrrÚNóz8MimeTypesTestCase.test_read_mime_types..u .Françaiszapplication/no-mans-land)T) rZ assertIsNonerZread_mime_typesrZtemp_dirÚpathlibÚPathÚ write_textÚ _bootlocaleZ swap_attr)rrZ directoryÚdataÚfileZ mime_dictr5rrrÚtest_read_mime_types9s     ,  (z&MimeTypesTestCase.test_read_mime_typescCs¤|j}||jjddddƒ||jjddddƒ||jjddddƒ||jjddddƒ||jjd dddƒ||jjdddd ƒ||jjd ddd ƒdS) Nzfoo.xulT©Ústrictr ú image/jpgF)ztext/xulNzfoo.XULz foo.invalidú.jpgz image/JPG)rr rr)rrrrÚtest_non_standard_typesRsz)MimeTypesTestCase.test_non_standard_typescCsž|j}d}||j d¡|ƒ||j d¡|ƒ||j d¡|ƒ||j d¡|ƒ||j d¡|ƒ||j d¡|ƒ||j d¡|ƒ||j d ¡|ƒdS) Nrz ;1.tar.gzz ?1.tar.gzz #1.tar.gzz #1#.tar.gzz ;1#.tar.gzz;&1=123;?.tar.gzz?k1=v1&k2=v2.tar.gzz \"\`;b&b&c |.tar.gzr)rrZ gzip_expectedrrrÚ!test_filename_with_url_delimiters^sz3MimeTypesTestCase.test_filename_with_url_delimiterscCsv|j}|j}t|jjdddƒ}||tgd¢ƒkƒ|jjddd}| ¡||dgƒ|jjddd}||gƒdS)Nr"Tr9)z.batz.cz.hz.kshz.plú.txtr;Fr<)rZ assertTrueÚsetr Úguess_all_extensionsÚsort)rrZunlessÚallrrrÚtest_guess_all_typesms z&MimeTypesTestCase.test_guess_all_typescCsXtj}| ttd|¡dd„t_t d¡}t |g¡}|jddd}|  |dd g¡dS) Nr-cSsdS)NÚasciirrrrrr0r1z1MimeTypesTestCase.test_encoding..z mime.typeszapplication/vnd.geocube+xmlTr9z.g3u.g³) Úlocaler-Z addCleanupÚsetattrrZfindfilerr rAr)rr-ÚfilenameZmimesZextsrrrÚ test_encoding}s ÿ   ÿzMimeTypesTestCase.test_encodingcCs<t dd¡| t d¡d¡t ¡| t d¡d¡dS)Nzfoo/barz.foobar)rZadd_typerr)ÚinitrrrrÚtest_init_reinitializes‰s z)MimeTypesTestCase.test_init_reinitializescs$‡fdd„}|ƒt ¡|ƒdS)Ncs$ˆ 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 d¡d¡ˆ t d¡d¡ˆ t d¡d¡ˆ t d¡d¡ˆ t d¡d¡ˆ t d¡d¡ˆ t d¡d¡ˆ t d¡d ¡dS)!Nzapplication/octet-streamz.binzapplication/postscriptz.pszapplication/vnd.apple.mpegurlz.m3uzapplication/vnd.ms-excelz.xlszapplication/vnd.ms-powerpointz.pptzapplication/x-texinfoz.texizapplication/x-troffz.roffzapplication/xmlz.xslz audio/mpegz.mp3ú image/jpegr<z image/tiffz.tiffzmessage/rfc822z.emlrz.htmlr"r?z video/mpegz.mpegzvideo/quicktimez.mov)rrr)rrrrÚcheck_extensions”s zDMimeTypesTestCase.test_preferred_extension..check_extensions)rrJ)rrMrrrÚtest_preferred_extension“s z*MimeTypesTestCase.test_preferred_extensioncCsœt ¡tj}tj}tj}tj}t ¡| |tj¡| |tj¡| |tj¡| |tj¡| |tj¡| |tj¡| |tj¡| |tj¡dSr )rrJÚ suffix_mapÚ encodings_mapÚ types_mapÚ common_typesZ assertIsNotr)rrOrPrQrRrrrÚtest_init_stabilityªsz%MimeTypesTestCase.test_init_stabilitycCs”d}t |¡}t d|¡}t d|¡}t d¡}|j |¡}| |j |¡|¡| |j |¡|¡| |j |¡|¡| |j |¡d¡dS)Nz LICENSE.txtz/dir/z../dir/z./r )r2r3r rr)rrHÚfilepathZfilepath_with_abs_dirZfilepath_relativeZpath_dirZexpectedrrrÚtest_path_like_ob¼s    ÿÿz#MimeTypesTestCase.test_path_like_obcCsL| |jjdddd¡| |jjdddg¡| |jjdddd¡dS) NrT)Úurlr:rr;)Útyper:Fr<)rr rrAr)rrrrÚtest_keywords_args_apiËs ÿÿ ÿÿ ÿÿz(MimeTypesTestCase.test_keywords_args_apiN)Ú__name__Ú __module__Ú __qualname__rrr#r+r8r=r>rDrIrKrNrSrUrXrrrrr s    r Úwinz Windows onlyc@s6eZdZdd„Zdd„Ze eƒdvd¡dd„ƒZd S) ÚWin32MimeTypesTestCasecCs,tj ¡|_tj ¡t ¡t ¡|_dSr )rrQÚcopyÚoriginal_types_mapÚclearrJr r rrrrrÖs  zWin32MimeTypesTestCase.setUpcCstj ¡tj |j¡dSr )rrQr`Úupdater_rrrrÚtearDownÝs zWin32MimeTypesTestCase.tearDown)Z NanoServerZWindowsCoreHeadlessZ IoTEdgeOSz$MIME types registry keys unavailablecCs@|j}||j d¡dƒ||j d¡dƒ||j d¡dƒdS)Nzfoo.txtr!z image.jpg)rLNz image.png)z image/pngNrrrrrÚtest_registry_parsingâsz,Win32MimeTypesTestCase.test_registry_parsingN) rYrZr[rrbÚunittestZskipIfrrcrrrrr]Ôs  ÿr]c@seZdZdd„ZdS)Ú MiscTestCasecCst |t¡dSr )rZ check__all__rrrrrÚ test__all__ïszMiscTestCase.test__all__N)rYrZr[rfrrrrreîsrec@s4eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd S) ÚMimetypesCliTestCasecOsXt |tdtjg|¢¡t ¡$}t ¡| ¡ ¡WdƒS1sJ0YdS)NÚargv) rÚpatchÚsysÚ executableÚcaptured_stdoutrÚ_mainÚgetvalueÚstrip)rÚargsÚkwargsÚoutputrrrÚ mimetypes_cmdõs z"MimetypesCliTestCase.mimetypes_cmdc Cs”t |tdtjdg¡t ¡B}| t¡}t ¡Wdƒn1sH0YWdƒn1sf0Y|  d|  ¡¡|  |j j d¡dS)Nrhz-húUsage: mimetypes.pyr©rrirjrkrlZ assertRaisesÚ SystemExitrrmZassertInrnrÚ exceptionÚcode©rrrÚcmrrrÚtest_help_optionûs   Dz%MimetypesCliTestCase.test_help_optionc Cs”t |tdtjdg¡t ¡B}| t¡}t ¡Wdƒn1sH0YWdƒn1sf0Y|  d|  ¡¡|  |j j d¡dS)Nrhz --invalidrtéruryrrrÚtest_invalid_options   Dz(MimetypesCliTestCase.test_invalid_optioncCsN|j}| ddd¡}||dƒ| dd¡}||dƒ| dd¡}||dƒdS)Nú-lz-er;r<z*I don't know anything about type image/jpgrL©rrs)rrÚ extensionrrrÚtest_guess_extension s    z)MimetypesCliTestCase.test_guess_extensioncCs4|j}| dd¡}||dƒ| d¡}||dƒdS)Nr~zfoo.picztype: image/pict encoding: Nonez(I don't know anything about type foo.picr)rrZ type_inforrrÚtest_guess_types    z$MimetypesCliTestCase.test_guess_typeN)rYrZr[rsr{r}rr‚rrrrrgós    rgÚ__main__)r'rFrr2rjrdÚtestrÚplatformrrr ZTestCaser Z skipUnlessÚ startswithr]rergrYÚmainrrrrÚs"   :0