
    2h              	          S SK r S SKrS SKJr  S SKJrJr  S SKJr  S SK	J
r
   \ R                  R                  S5      r\(       a  \S:X  a  \" 5       r\R                  \
" 5       5        OH\S:X  a  \" 5       rO:\S	:X  a  \
" 5       rO,\R!                  S
5       V s0 s H  o (       d  M  X _M     sn r\r\R$                  R&                  \R$                  R)                  S\R+                  5       \" \R/                  5       5      S9S 5       5       r\R$                  R&                  S 5       rS rS r\R$                  R&                  S 5       r\R$                  R&                  S 5       r\R$                  R&                  S 5       rS rS r \R$                  R&                  S 5       r!\R$                  R&                  S 5       r"\#S:X  a  \RH                  " S\%/5        ggs  sn f )    N)Mock)gTTS	gTTSError)_main_langs)_extra_langs
TEST_LANGSallmainextra,lang)idsc                     Sn S HS  nU SR                  U5      -  n[        X!USS9nUR                  U5        UR                  5       R                  S:  a  MS   e   g)z*Test all supported languages and file savezThis is a test)FTztest_{}_.mp3F)textr   slow
lang_checki  N)formatr   savestatst_size)tmp_pathr   r   r   filenamettss         K/var/www/auris/envauris/lib/python3.13/site-packages/gtts/tests/test_tts.pytest_TTSr   (   sa    
 D.n33D99duE }}&&---     c                      Sn SnSn[         R                  " [        5         [        XUS9  SSS5        g! , (       d  f       g= f)z>Raise ValueError on unsupported language (with language check)xxLorem ipsumTr   r   r   N)pytestraises
ValueErrorr   )r   r   checks      r   test_unsupported_language_checkr%   9   s5     DDE	z	"$e4 
#	"	"s	   5
Ac                      Sn [         R                  " [        5         [        U S9  SSS5        g! , (       d  f       g= f)z$Raise AssertionError on empty string r   N)r!   r"   AssertionErrorr   r(   s    r   test_empty_stringr*   C   s&    D	~	&$ 
'	&	&s   
0
>c                     Sn[         R                  " [        5         U S-  n[        US9nUR	                  U5        SSS5        g! , (       d  f       g= f)zBRaises AssertionError on no content to send to API (no text_parts)zn                                                                                                          ..,
zno_content.txtr(   N)r!   r"   r)   r   r   )r   r   r   r   s       r   test_no_text_partsr,   J   s?    |D	~	&..o 
'	&	&s    A
Ac                      [        SS9n [        R                  " [        5         U R	                  S5        SSS5        g! , (       d  f       g= f)z=Raise TypeError if fp is not a file-like object (no .write())testr(      N)r   r!   r"   	TypeErrorwrite_to_fpr   s    r   test_bad_fp_typer3   V   s2     F
C	y	! 
"	!	!s	   ?
Ac                     U S-  n[        SS9nUR                  U5        UR                  5       R                  S:  d   eg)zSave .mp3 file successfullysave.mp3r.   r(   i  N)r   r   r   r   )r   r   r   s      r   	test_saver6   _   s@     *$H
F
CHHX ==?""T)))r   c                  `    [        SSSS9n U R                  5       S   nSU;   d   eSU;   d   eg)zget request bodies listr.   comen)r   tldr   r   z%5C%22en%5C%22N)r   
get_bodies)r   bodys     r   test_get_bodiesr=   k   s=     FD
1C>>ADT>>t###r   c                  p    [        S5      n SU R                  :X  d   e[        5       nUR                  b   eg)zMTest gTTsError internal exception handling
Set exception message successfullyr.   N)r   msg)error1error2s     r   test_msgrB   u   s7     vFVZZ[F::r   c                     [        SS9n [        U S9nUR                  S:X  d   e[        5       n[        SSS9n[        X#S9nUR                  S	:X  d   e[        S
SS9n[        SSS9n[        XVS9nUR                  S:X  d   e[        5       n[        SSS9n	[        XS9n
U
R                  S:X  d   e[        5       n[        SSS9n[        XS9nUR                  S:X  d   eg)z+Infer message successfully based on contextinvalid)r:   r2   z\Failed to connect. Probable cause: Host 'https://translate.google.invalid/' is not reachablei  aaa)status_codereason)r   responsezI403 (aaa) from TTS API. Probable cause: Bad token or upstream API changesr   F)r   r      bbbz^200 (bbb) from TTS API. Probable cause: No audio stream in response. Unsupported language 'xx'i  ccczL500 (ccc) from TTS API. Probable cause: Upstream API error. Try again later.d   dddz/100 (ddd) from TTS API. Probable cause: UnknownN)r   r   r?   )ttsTLDerrorTLDtts403response403error403tts200response404error200tts500response500error500tts100response100error100s                 r   test_infer_msgr\      s    i FV$Hi	j	j VF3u5KV:HV	W	W
 t.F3u5KV:Hk	l	l
 VF3u5KV:HY	Z	Z
 VF3u5KV:H<<LLLLr   c                     Sn SnSn[         R                  " [        5         U S-  n[        XUS9nUR	                  U5        SSS5        g! , (       d  f       g= f)zTest Web Requestsr   r   Fzxx.txtr    N)r!   r"   r   r   r   )r   r   r   r$   r   r   s         r   test_WebRequestr^      sP     DJDE	y	!h&E:	 
"	!	!s   !A
Ac                    [        SS9nUR                  b   eSn[        SUS9nUR                  U:X  d   e[        SSS9nU S-  n[        R                  " [        5         UR                  U5        S S S 5        g ! , (       d  f       g = f)Nr.   r(   g333333?)r   timeoutgư>r5   )r   r`   r!   r"   r   r   )r   r   r`   r   s       r   test_timeoutra      s     F
C;; G
FG
,C;;'!!! FH
-C*$H	y	! 
"	!	!s    A;;
B	__main__z-x)&osr!   unittest.mockr   gtts.ttsr   r   
gtts.langsr   	gtts.langr   environgetenvlangsupdatesplit	env_langsmarknetparametrizekeyslistvaluesr   r%   r*   r,   r3   r6   r=   rB   r\   r^   ra   __name__r
   __file__)ls   0r   <module>rx      s   	   $ " " 	jjnn\"
cUlME	LL F]MEG^NE"yy~3~!~3IE 43GH. I . 5 5   * * $ $.Mb     " z
KKx ! _ 4s   
G'G