
    daf>                        d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlm	Z	 d dl
mZ 	 d dlZd Zd Z G d dej                         Z ej$                  ej                  j'                  d	      d
       G d dej                                Z G d dej                         Z G d dej                         Zedk(  r ej0                          yy# e$ r dZY w xY w)    N)support)	os_helper)win32_editionc                  x    t         j                  ag t         _        dt         _        t        j                          y )NF)	mimetypes
knownfilesinited_default_mime_types     ./root/Python-3.12.4/Lib/test/test_mimetypes.pysetUpModuler      s+    %%J II!!#r   c                  "    t         t        _         y N)r   r   r   r   r   tearDownModuler      s
    %Ir   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Z ej                   ej$                  j'                  d      d      d        Zd Zd Zd Zd Zy)MimeTypesTestCasec                 6    t        j                         | _        y r   )r   	MimeTypesdbselfs    r   setUpzMimeTypesTestCase.setUp!   s    %%'r   c                    | j                   } || j                  j                  d      | j                  j                  d              || j                  j                  d      | j                  j                  d              || j                  j                  d      d        || j                  j                  d      d       y )	Nzfoobar.HTMLzfoobar.htmlz
foobar.TGZz
foobar.tgzzfoobar.tar.Zapplication/x-tarcompresszfoobar.tar.zNNassertEqualr   
guess_typer   eqs     r   test_case_sensitivityz'MimeTypesTestCase.test_case_sensitivity$   s    
477m,dgg.@.@.OP
477l+TWW-?-?-MN
477n-/PQ
477n-|<r   c                    | j                   } || j                  j                  d      d        || j                  j                  d      d        || j                  j                  d      d        || j                  j                  d      d        || j                  j                  d      d        || j                  j                  d	      d
        || j                  j                  d      d       y )Nfoo.html	text/htmlNzfoo.HTMLzfoo.tgzr   gzipz
foo.tar.gzz	foo.tar.Zr   zfoo.tar.bz2)r   bzip2z
foo.tar.xz)r   xzr   r"   s     r   test_default_dataz#MimeTypesTestCase.test_default_data+   s    
477j)+>?
477j)+>?
477i(*GH
477l+-JK
477k*,MN
477m,.LM
477l+-HIr   c                     | j                   }| j                  j                  } | |d      d        | |d      d        | |d      d        | |d      d       y )Nzdata:invalidDataWithoutCommar   zdata:,thisIsTextPlain
text/plainNzdata:;base64,thisIsTextPlainzdata:text/x-foo,thisIsTextXFoo)z
text/x-fooNr   )r   r#   r!   s      r   test_data_urlsz MimeTypesTestCase.test_data_urls5   s_    WW''

:45|D
:-.0DE
:457KL
:679MNr   c                    | j                   }t        j                  d      }| j                  j	                  |        || j                  j                  d      d        || j                  j                  d      d       y )N x-application/x-unittest pyunit
z
foo.pyunit)x-application/x-unittestNr4   .pyunit)r    ioStringIOr   readfpr!   guess_extension)r   r#   sios      r   test_file_parsingz#MimeTypesTestCase.test_file_parsing=   sb    kk=>s
477l+-	/
477""#=>	Jr   c                    | j                   }| j                  t        j                  d             t	        j
                         5 }d}t        j                  j                  |d      }t        |dd      5 }|j                  |       d d d        t        j                  |      } ||d   d       d	}t        j                  j                  |d
      }t        |dd      5 }|j                  |       d d d        t        j                  t	        j                  |            } ||d   d       d d d        d}d}t        j                  |      }t        j                  j                   j#                  t        d|      5 }	t        j                  |      }|	j%                  |d       d d d         |d   d       y # 1 sw Y   8xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ;xY w)Nznon-existentr3   zsample.mimetypewzutf-8)encodingr5   r4   z"x-application/x-unittest2 pyunit2
zsample2.mimetypez.pyunit2zx-application/x-unittest2u#   application/no-mans-land  Françaisfilenameopen)return_valueu
   .Françaiszapplication/no-mans-land)r    assertIsNoner   read_mime_typesr   temp_dirospathjoinr@   writeFakePathr6   r7   unittestmockpatchobjectassert_called_with)
r   r#   	directorydatafilef	mime_dictr?   fp	mock_opens
             r   test_read_mime_typesz&MimeTypesTestCase.test_read_mime_typesE   s    	)33NCD! 	CY6D77<<	+<=DdC'2 a!11$7Iy#%?@8D77<<	+=>DdC'2 a!11)2D2DT2JKIy$&AB	C$ 9[[]]  ''	657 ( 9 	E<E!11(;I((G(D	E 	9\"$>?-  	C 	C*	E 	EsI   1G6F>AG!G3<G )G#>G	GG	GG #G,c                    | j                   } || j                  j                  dd      d        || j                  j                  dd      d         || j                  j                  dd      d         || j                  j                  dd      d        || j                  j                  d	d      d        || j                  j                  d
d      d        || j                  j                  dd      d        || j                  j                  dd      d        || j                  j                  dd      d       y )Nzfoo.xulTstrictr   	image/jpgz
image/webpF)ztext/xulNzfoo.XULzfoo.invalid.jpgz	image/JPGz.webp)r    r   r!   r9   r"   s     r   test_non_standard_typesz)MimeTypesTestCase.test_non_standard_typesf   s   
477i5|D
477"";t"<dC
477""<"=tD
477i68JK
477i68JK
477mE:LI
477"";u"=vF
477"";u"=vF
477""<">Hr   c                    | j                   }d}dD ]  }dD ]D  }||z   }| j                  |      5   || j                  j                  |      |       d d d        F t        j
                  dk(  rdn|}dD ]D  }||z   }| j                  |      5   || j                  j                  |      |       d d d        F   || j                  j                  d      |       y # 1 sw Y   xY w# 1 sw Y   xY w)	Nr)   )z	;1.tar.gzz	?1.tar.gzz	#1.tar.gzz
#1#.tar.gzz
;1#.tar.gzz;&1=123;?.tar.gzz?k1=v1&k2=v2.tar.gz)
 /\zc:zc:/zc:\zc:/d/zc:\d\z//share/server/z\\share\server\)rF   ntr   )z//z\\z//share/z\\share\z \"\`;b&b&c |.tar.gz)r    subTestr   r!   rE   name)r   r#   gzip_expectedrc   prefixrF   expecteds          r   !test_filename_with_url_delimitersz3MimeTypesTestCase.test_filename_with_url_delimiterst   s    5 	;DE @ }\\t\, @tww))$/?@ @	@ (*ww$|MHC ;}\\t\, ;tww))$/:; ;;!	;( 	47756F@ @
; ;s   #C"#C."C+.C7c                 x   | j                   j                  d      }d}| j                  |d|       | j                   j                  d      }d}| j                  |d|       | j                   j                  d      }| j                  |d       | j                   j                  d      }| j                  |d       y )	Nzhttp://host.htmlz$URL only has a host name, not a filer   zhttp://example.com/host.htmlzShould be text/htmlr'   z"http://example.com/host.html#x.tarz$http://example.com/host.html?q=x.tar)r   r!   assertSequenceEqual)r   resultmsgs      r   test_urlzMimeTypesTestCase.test_url   s    ##$674  s;##$BC#  )<cB##$HI  )<=##$JK  )<=r   c                 B   | j                   j                  dd      }| j                  t        |      h dk\         | j	                  t        t        |            t        |             | j                   j                  dd      }| j	                  |dg       | j                   j                  dd      }| j	                  |g        | j                   j                  dd	       | j                   j                  dd
d       | j                   j                  dd      }| j	                  |d	d
g       | j                   j                  d      }| j	                  |d	g       |j                  d       | j                   j                  d      }| j                  d|       y )Nr0   TrX   >   .c.h.pl.bat.ksh.txtrZ   Fr[   z	test-typez.strict-extz.non-strict-extz.no-such-ext)	r   guess_all_extensions
assertTruesetr    lenadd_typeappendassertNotIn)r   alls     r   test_guess_all_typesz&MimeTypesTestCase.test_guess_all_types   sV    gg**<*EC$OOPSXC1gg**;u*Evh'gg**;t*Db!m4&7Fgg**;u*E}.?@Agg**;7}o.

>"gg**;7-r   c                     t        j                  d      }t        j                  |g      }|j	                  dd      }| j                  |ddg       y )Nz
mime.typeszapplication/vnd.geocube+xmlTrX   z.g3u   .g³)r   findfiler   r   rt   r    )r   r?   mimesextss       r   test_encodingzMimeTypesTestCase.test_encoding   sT    ##L1##XJ/))*G15 * 7x01r   c                     t        j                  dd       | j                  t        j                  d      d       t        j                          | j                  t        j                  d      d        y )Nzfoo/barz.foobar)r   rx   r    r9   initr   s    r   test_init_reinitializesz)MimeTypesTestCase.test_init_reinitializes   sT     	9i0229=yI229=tDr   winzNon-Windows onlyc                     ddl m} |j                         D ]&  }| j                  t        j                  |             ( y )Nr   )	types_map)r   r   valuesassertIsNotNoner9   )r   r   vs      r   test_guess_known_extensionsz-MimeTypesTestCase.test_guess_known_extensions   s8    
 	(!!# 	?A  !:!:1!=>	?r   c                 T      fd} |        t        j                           |        y )Nc                      j                  t        j                  d      d        j                  t        j                  d      d        j                  t        j                  d      d        j                  t        j                  d      d        j                  t        j                  d	      d
        j                  t        j                  d      d        j                  t        j                  d      d        j                  t        j                  d      d        j                  t        j                  d      d        j                  t        j                  d      d        j                  t        j                  d      d        j                  t        j                  d      d        j                  t        j                  d      d        j                  t        j                  d      d        j                  t        j                  d      d        j                  t        j                  d      d         j                  t        j                  d!      d"       y )#Nzapplication/octet-streamz.binzapplication/postscriptz.pszapplication/vnd.apple.mpegurlz.m3uzapplication/vnd.ms-excelz.xlszapplication/vnd.ms-powerpointz.pptzapplication/x-texinfoz.texizapplication/x-troffz.roffzapplication/xmlz.xslz
audio/mpegz.mp3z
image/avifz.avif
image/jpegr[   z
image/tiffz.tiffzmessage/rfc822z.emlr(   z.htmlr0   rs   z
video/mpegz.mpegzvideo/quicktimez.mov)r    r   r9   r   s   r   check_extensionszDMimeTypesTestCase.test_preferred_extension.<locals>.check_extensions   s   Y667QRTZ[Y667OPRWXY667VWY_`Y667QRTZ[Y667VWY_`Y667NOQXYY667LMwWY667HI6RY66|DfMY66|DgNY66|DfMY66|DgNY667GH&QY66{CWMY66|DfMY66|DgNY667HI6Rr   )r   r   )r   r   s   ` r   test_preferred_extensionz*MimeTypesTestCase.test_preferred_extension   s!    	S& 	r   c                    t        j                          t         j                  }t         j                  }t         j                  }t         j
                  }t        j                          | j                  |t         j                         | j                  |t         j                         | j                  |t         j                         | j                  |t         j
                         | j                  |t         j                         | j                  |t         j                         | j                  |t         j                         | j                  |t         j
                         y r   )r   r   
suffix_mapencodings_mapr   common_typesassertIsNotr    )r   r   r   r   r   s        r   test_init_stabilityz%MimeTypesTestCase.test_init_stability   s    ))
!//''	 --Y%9%9:	(?(?@I$7$78y'='=>Y%9%9:	(?(?@I$7$78y'='=>r   c                 J   d}t        j                  |      }t        j                  d|z         }t        j                  d|z         }t        j                  d      }| j                  j                  |      }| j	                  | j                  j                  |      |       | j	                  | j                  j                  |      |       | j	                  | j                  j                  |      |       | j	                  | j                  j                  |      d       y )NzLICENSE.txtz/dir/z../dir/z./r   )r   rI   r   r!   r    )r   r?   filepathfilepath_with_abs_dirfilepath_relativepath_dirrf   s          r   test_path_like_obz#MimeTypesTestCase.test_path_like_ob   s     %%h/ ) 2 2783C D%..y/AB%%d+77%%h/++H5x@++!#$,	.++,=>I++H5|Dr   c                    | j                  | j                  j                  dd      d       | j                  | j                  j                  dd      g        | j                  | j                  j	                  dd      d       y )	Nr&   T)urlrY   r'   rZ   )typerY   Fr[   )r    r   r!   rt   r9   r   s    r   test_keywords_args_apiz(MimeTypesTestCase.test_keywords_args_api  s    ++4 , )*=	?55T 6 +,.	000U 1 ,-3	5r   N)__name__
__module____qualname__r   r$   r-   r1   r;   rV   r\   rg   rl   r|   r   r   rJ   skipIfsysplatform
startswithr   r   r   r   r   r   r   r   r   r       s    (=JOK@BIG8
>.22E X__S\\,,U35GH? I?0?$E5r   r   r   zWindows onlyc                       e Zd Zd Zd Z ej                   e       dv d      d        Z ej                   e	e
d       d      d        Zy	)
Win32MimeTypesTestCasec                     t         j                  j                         | _        t         j                  j	                          t        j
                          t        j                         | _        y r   )r   r   copyoriginal_types_mapclearr   r   r   r   s    r   r   zWin32MimeTypesTestCase.setUp  sE    "+"5"5":":"<!!#%%'r   c                     t         j                  j                          t         j                  j                  | j                         y r   )r   r   r   updater   r   s    r   tearDownzWin32MimeTypesTestCase.tearDown  s.    !!#""4#:#:;r   )
NanoServerWindowsCoreHeadless	IoTEdgeOSz$MIME types registry keys unavailablec                     | j                   } || j                  j                  d      d        || j                  j                  d      d        || j                  j                  d      d       y )Nzfoo.txtr/   z	image.jpg)r   Nz	image.png)z	image/pngNr   r"   s     r   test_registry_parsingz,Win32MimeTypesTestCase.test_registry_parsing  s]     
477i(*>?
477k*,@A
477k*,?@r    _mimetypes_read_windows_registryz-read_windows_registry accelerator unavailablec                 
   i i t        j                  fd       t        j                  j	                  fd       | j                  t              t                     D ]  }| j                  |   |           y )Nc                 V    j                  |t                     j                  |       S r   
setdefaultrv   add)r   k
from_accels     r   <lambda>zBWin32MimeTypesTestCase.test_registry_accelerator.<locals>.<lambda>0  s!    ..q#%8<<Q? r   c                 V    j                  |t                     j                  |       S r   r   )r   r   from_regs     r   r   zBWin32MimeTypesTestCase.test_registry_accelerator.<locals>.<lambda>3  s!    ,,Q6::1= r   )_winapir   r   r   _read_windows_registryr    list)r   r   r   r   s     @@r   test_registry_acceleratorz0Win32MimeTypesTestCase.test_registry_accelerator*  s{     
00?	
 	22=	
 	hj)9: 	9AXa[*Q-8	9r   N)r   r   r   r   r   rJ   r   r   r   hasattrr   r   r   r   r   r   r     sm    (<
 X__]_(ZZ)OQAQA X__*LMMDF9F9r   r   c                       e Zd Zd Zy)MiscTestCasec                 8    t        j                  | t               y r   )r   check__all__r   r   s    r   test__all__zMiscTestCase.test__all__;  s    T9-r   N)r   r   r   r   r   r   r   r   r   :  s    .r   r   c                   *    e Zd Zd Zd Zd Zd Zd Zy)MimetypesCliTestCasec                    t        j                  | t        dt        j                  g|       t        j                         5 }t        j                          |j                         j                         cd d d        S # 1 sw Y   y xY w)Nargv)	r   rL   r   
executablecaptured_stdoutr   _maingetvaluestrip)r   argskwargsoutputs       r   mimetypes_cmdz"MimetypesCliTestCase.mimetypes_cmdA  s`    dC#..)@4)@A$$& 	-&OO??$**,	- 	- 	-s   2A>>Bc                    t        j                  | t        dt        j                  dg       t        j                         5 }| j                  t              5 }t        j                          d d d        d d d        | j                  dj                                | j                  j                  j                  d       y # 1 sw Y   XxY w# 1 sw Y   \xY w)Nr   z-hUsage: mimetypes.pyr   r   rL   r   r   r   assertRaises
SystemExitr   r   assertInr   r    	exceptioncoder   r   cms      r   test_help_optionz%MimetypesCliTestCase.test_help_optionG  s    dC#..$)?@$$& 	"&"":. ""!"	" 	+V__->?**A.	" "	" 	"$   CC,CC	CCc                    t        j                  | t        dt        j                  dg       t        j                         5 }| j                  t              5 }t        j                          d d d        d d d        | j                  dj                                | j                  j                  j                  d       y # 1 sw Y   XxY w# 1 sw Y   \xY w)Nr   z	--invalidr      r   r   s      r   test_invalid_optionz(MimetypesCliTestCase.test_invalid_optionP  s    dC#..+)FG$$& 	"&"":. ""!"	" 	+V__->?**A.	" "	" 	"r   c                     | j                   }| j                  ddd      } ||d       | j                  dd      } ||d       | j                  dd      } ||d       y )N-lz-erZ   r[   z*I don't know anything about type image/jpgr   r    r   )r   r#   	extensions      r   test_guess_extensionz)MimetypesCliTestCase.test_guess_extensionY  sd    &&tT;?	
9f&&t[9	
9BC&&t\:	
9fr   c                     | j                   }| j                  dd      } ||d       | j                  d      } ||d       y )Nr   zfoo.picztype: image/pict encoding: Nonez(I don't know anything about type foo.picr   )r   r#   	type_infos      r   test_guess_typez$MimetypesCliTestCase.test_guess_typee  sE    &&tY7	
978&&y1	
9@Ar   N)r   r   r   r   r   r   r   r   r   r   r   r   r   ?  s    -//
Br   r   __main__)r6   r   rE   r   unittest.mockrJ   testr   test.supportr   r   r   r   ImportErrorr   r   TestCaser   
skipUnlessr   r   r   r   r   mainr   r   r   <module>r      s    	  	 
   " "
$&
n5)) n5b S\\,,U3^D%9X.. %9 E%9P.8$$ .
-B8,, -B^ zHMMO C  Gs   C CC