
    daf2                     Z   d dl Z d dlmZmZmZmZ d dlmZmZm	Z	 d dl
mZ d dlZd dlZd dlZd dlZd dlZ G d de j"                        Z G d d      Z G d	 d
e j"                        Z G d dee j"                        Z G d dee j"                        Zedk(  r e j0                          yy)    N)script_helpercaptured_stdoutrequires_subprocessrequires_resource)TESTFNunlinkrmtree)unloadc                       e Zd Zd Zd Zd Zd Zd Zd Z e	       d        Z
d Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zy)MiscSourceEncodingTestc                     ddl m} | j                  t        |      d       |D ]:  \  }}}t	        j
                  d|z         }| j                  ||j                         < y )Nr   )test_strings   ztest.encoded_modules.module_)test.encoded_modulesr   assertGreaterEquallen	importlibimport_moduleassertEqualtest)selfr   modnameencodingteststrmods         4/root/Python-3.12.4/Lib/test/test_source_encoding.pytest_import_encoded_modulez1MiscSourceEncodingTest.test_import_encoded_module   sa    5L 115*6 	0&GXw)) +46=+> ?CWchh/	0    c                 d    t        ddd      }i }t        ||       | j                  |d   d       y )Ns   
# coding: utf-8
u = 'ó'
dummyexecu   ócompiler!   r   r   cds      r   test_compilestringz)MiscSourceEncodingTest.test_compilestring   s3    :GVLQ
3(r   c                     	 t        ddd       | j                          y # t        $ r5}| j                  |j                  j                  d      d       Y d }~y d }~ww xY w)Ns   # coding: cp932
print 'N'r    r!   
u   print '年')r%   failSyntaxErrorr   textrstrip)r   vs     r   test_issue2301z%MiscSourceEncodingTest.test_issue2301   sT    	8'6J IIK  	DQVV]]402BCC	Ds     	A+AAc                 d    t        ddd      }i }t        ||       | j                  |d   d       y )Nu   # coding=latin-1
Æ = 'Æ'r    r!      Ær$   r&   s      r   test_issue4626z%MiscSourceEncodingTest.test_issue4626'   s3    97FKQ
6F+r   c                    t        ddd      }i }t        ||       | j                  |d   |d          | j                  t        |d         t        |d                | j                  t	        |d         t	        |d                y )Nu   a, b = '𐄏', '\U0001010F'r    r!   ab)r%   r!   r   r   asciir&   s      r   test_issue3297z%MiscSourceEncodingTest.test_issue3297-   sw    8'6JQ
33(QsVc!C&k2qvaf6r   c                     | j                  t        t        d       | j                  t        t        d       | j                  t        t        d       y )Ns    s    s    )assertRaisesr-   evalr   s    r   test_issue7820z%MiscSourceEncodingTest.test_issue78205   s>     	+t[9 	+t[9 	+t_=r   c                 p   t        j                  t        j                  t        j
                  j                  t        j
                  j                  t              dd      gt         j                        }|j                         d   }| j                  |j                  d       | j                  d|       y )Ntokenizedatazcoding20731.py)stderrr   r   s   SyntaxError)
subprocessPopensys
executableospathjoindirname__file__PIPEcommunicater   
returncodeassertNotIn)r   suberrs      r   
test_20731z!MiscSourceEncodingTest.test_20731C   s    RWW__X%>%3%57 8  *	0
 oo"+-r   c                    t        ddd       t        ddd       t        ddd       | j                  t        d      5  t        ddd       d d d        | j                  t        d      5  t        d	dd       d d d        | j                  t        d
      5  t        d	dd       d d d        | j                  t        d      5  t        ddd       d d d        | j                  t        d
      5  t        ddd       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   zxY w# 1 sw Y   ZxY w# 1 sw Y   y xY w)Ns   # -*- coding: iso-8859-15 -*-
r    r!   s   ﻿
s   ﻿# -*- coding: utf-8 -*-
fakes   # -*- coding: fake -*-
ziso-8859-15s!   ﻿# -*- coding: iso-8859-15 -*-
BOMs   ﻿# -*- coding: fake -*-
)r%   assertRaisesRegexr-   r=   s    r   test_error_messagez)MiscSourceEncodingTest.test_error_messageN   s?   2GVD!7F38'6J##K8 	B/&A	B##K? 	%BV%	% ##K7 	%BV%	% ##K8 	N;WfM	N##K7 	N;WfM	N 	N	B 	B	% 	%	% 	%	N 	N	N 	Ns;   D*DDD).D5DDD&)D25D>c                 *    d}| j                  |       y )N
bad_codingverify_bad_moduler   module_names     r   test_bad_codingz&MiscSourceEncodingTest.test_bad_coding_   s    "{+r   c                 *    d}| j                  |       y )Nbad_coding2rY   r[   s     r   test_bad_coding2z'MiscSourceEncodingTest.test_bad_coding2c   s    #{+r   c                 j   | j                  t        t        d|z          t        j                  j                  t              }t        j                  j                  |d|dz         }t        |d      5 }|j                         }d d d        | j                  t        t        |d       y # 1 sw Y   'xY w)Nztest.tokenizedata.r@   .pyrbr!   )r;   r-   
__import__rF   rG   rI   rJ   rH   openreadr%   )r   r\   rG   filenamefpbytess         r   rZ   z(MiscSourceEncodingTest.verify_bad_moduleg   s    +z3G+3UVwwx(77<<nkE6IJ(D! 	RGGIE	+wxH	 	s   2B))B2c                 J    i }t        d|       | j                  |d   d       y )Ns   # coding: cp949
a = ""
r6   u   ぇ)r!   r   )r   r(   s     r   test_exec_valid_codingz-MiscSourceEncodingTest.test_exec_valid_codingp   s&    1153*r   c                    t        t               t        dz   }t        |dd      }t        j                  j                  dt        j                         	 |5  |j                  d       |j                  d       |j                  d       |j                  d	d
z         d d d        t        j                          t        t               t        j                  d= t        |       t        |dz          t        |dz          t        t               t        d       y # 1 sw Y   xY w# t        j                  d= t        |       t        |dz          t        |dz          t        t               t        d       w xY w)Nrb   wcp1252)r   r   z# -*- coding: cp1252 -*-
z'''A short string
z'''
z'A very long string %s'
  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXr'   o__pycache__)r
   r   re   rD   rG   insertrF   curdirwriter   invalidate_cachesrd   r   r	   )r   rg   fs      r   test_file_parsez&MiscSourceEncodingTest.test_file_parseu   s    	vE>32299%	" D45-. 3zBC	D '')v88c>"8c>"6N=!D D 88c>"8c>"6N=!s&   D* AD +D* D'#D* *AE>c                 8   dj                  d      }| j                  t              5 }t        |dd       d d d        d}| j	                  j
                  j                  d   j                  |      |j
                  j                  d          y # 1 sw Y   \xY w)Nu   # coding: ascii
☃zutf-8z<string>r!   zN'ascii' codec can't decode byte 0xe2 in position 16: ordinal not in range(128)r   )msg)encoder;   r-   r%   
assertTrue	exceptionargs
startswith)r   inputr'   expecteds       r   test_error_from_stringz-MiscSourceEncodingTest.test_error_from_string   s    .55g>{+ 	/qE:v.	//((+66x@KK,,Q/ 	 	1		/ 	/s   BBc                 b   t        t        d      5 }|j                  d       d d d        	 t        j                  t              \  }}}| j                  |d       | j                  d|       t        j                  t               y # 1 sw Y   exY w# t        j                  t               w xY w)Nwbs   print("""
""")
r   s#   Non-UTF-8 code starting with '\xb1')	re   r   rt   r   assert_python_failureassertGreaterassertInrF   r   )r   fdretcodestdoutrA   s        r   test_file_parse_error_multilinez6MiscSourceEncodingTest.test_file_parse_error_multiline   s    &$ 	/2HH-.	/	&3&I&I&&Q#GVVw*MMA6JIIf	/ 	/ IIfs   BAB BB.c                    d}t        t        d      5 }|j                  dj                  |             d d d        	 t	        j
                  t              \  }}}| j                  d|       | j                  |j                  |j                               d       t        j                  t               y # 1 sw Y   xY w# t        j                  t               w xY w)Nz0b1and 2rm   z{}s$   SyntaxWarning: invalid binary literar   )re   r   rt   formatr   assert_python_okr   r   countrz   rF   r   )r   sourcer   r   r   rA   s         r   ,test_tokenizer_fstring_warning_in_first_linezCMiscSourceEncodingTest.test_tokenizer_fstring_warning_in_first_line   s    &# 	*"HHT[[()	*	&3&D&DV&L#GVVMMA6JV\\&--/:A>IIf	* 	* IIfs   !B5AC 5B>CN)__name__
__module____qualname__r   r)   r1   r4   r9   r>   r   rQ   rV   r]   r`   rZ   rk   rw   r   r   r    r   r   r   r      sf    0),7> . .N",,I+
"01	r   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d Zd Zy)AbstractSourceEncodingTestc                 ,    d}| j                  |d       y )Ns   print(ascii("ä"))
   '\xe4'check_script_outputr   srcs     r   test_default_codingz.AbstractSourceEncodingTest.test_default_coding   s    ,  j1r   c                 ,    d}| j                  |d       y )Ns&   #coding:iso8859-15
print(ascii("ä"))
   '\xc3\u20ac'r   r   s     r   test_first_coding_linez1AbstractSourceEncodingTest.test_first_coding_line       -  &67r   c                 ,    d}| j                  |d       y )Ns(   #
#coding:iso8859-15
print(ascii("ä"))
r   r   r   s     r   test_second_coding_linez2AbstractSourceEncodingTest.test_second_coding_line       - 	  &67r   c                 ,    d}| j                  |d       y )Ns*   #
#
#coding:iso8859-15
print(ascii("ä"))
r   r   r   s     r   test_third_coding_linez1AbstractSourceEncodingTest.test_third_coding_line   s    - 	  j1r   c                 ,    d}| j                  |d       y )Ns5   #coding:iso8859-15
#coding:latin1
print(ascii("ä"))
r   r   r   s     r   test_double_coding_linez2AbstractSourceEncodingTest.test_double_coding_line   s    - 	  &67r   c                 ,    d}| j                  |d       y )Ns4   #coding:iso8859-15 coding:latin1
print(ascii("ä"))
r   r   r   s     r   test_double_coding_same_linez7AbstractSourceEncodingTest.test_double_coding_same_line   r   r   c                 ,    d}| j                  |d       y )Ns)   #coding:iso-8859-15 
print(ascii("ä"))
r   r   r   s     r   test_first_non_utf8_coding_linez:AbstractSourceEncodingTest.test_first_non_utf8_coding_line   r   r   c                 ,    d}| j                  |d       y )Ns*   
#coding:iso-8859-15 
print(ascii("ä"))
r   r   r   s     r    test_second_non_utf8_coding_linez;AbstractSourceEncodingTest.test_second_non_utf8_coding_line   r   r   c                 ,    d}| j                  |d       y )Ns   ﻿print(ascii("ä"))
r   r   r   s     r   test_utf8_bomz(AbstractSourceEncodingTest.test_utf8_bom   s    8  j1r   c                 ,    d}| j                  |d       y )Ns$   ﻿#coding:utf-8
print(ascii("ä"))
r   r   r   s     r   "test_utf8_bom_and_utf8_coding_linez=AbstractSourceEncodingTest.test_utf8_bom_and_utf8_coding_line   s    -  j1r   c                 ,    d}| j                  |d      }y )Ns   print(ascii("""
"""))
s   '\n'r   r   r   outs      r   	test_crlfz$AbstractSourceEncodingTest.test_crlf   s    ,&&sH5r   c                 ,    d}| j                  |d      }y )Ns   print(ascii("""
"""))
s   '\n\n'r   r   s      r   test_crcrlfz&AbstractSourceEncodingTest.test_crcrlf   s    .&&sJ7r   c                 ,    d}| j                  |d      }y )Ns   print(ascii("""
"""))
   '\n\n\n'r   r   s      r   test_crcrcrlfz(AbstractSourceEncodingTest.test_crcrcrlf   s    0&&sL9r   c                 ,    d}| j                  |d      }y )Ns,   #coding:iso-8859-1
print(ascii("""
"""))
r   r   r   s      r   test_crcrcrlf2z)AbstractSourceEncodingTest.test_crcrcrlf2   s    1&&sL9r   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      sH    28
8288
8
822
68::r   r   c                       e Zd Z ej                  ej                  j                  d       d       ed      d               Z	y)UTF8ValidatorTestlinuxz&Too slow to run on non-Linux platformscpuc                     dt          j                  t                fd}t        dd      D cg c]  }t	        |g       }}t        dd      D cg c]  }t	        |g       }}t        dd      D cg c]  }t	        |g       }}||z   |z   t        dd	      D cg c]  }t	        |g       c}z   }|D ]
  } ||        |D ]  }|D ]  }	 |||	z            |D ]'  }|d d
 D ]  }
|d d
 D ]  } |||
z   dz   |z            ) t        dd      D cg c]  }t	        |g       c}D ]  }	 |d|	z   dz           |d|	z   dz            t        dd      D cg c]  }t	        |g       c}D ]  }	 |d|	z   dz           |d|	z   dz            t        dd      D cg c]  }t	        |g       c}D ]  }	 |d|	z   dz           |d|	z   dz            t        dd      D cg c]  }t	        |g       c}D ]  }	 |d|	z   dz           |d|	z   dz            y c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w )Ns   


"%s"
c                    t        d      5 }|j                  | z         d d d        t        j                        \  }}}j	                  |d       j                  d|       j                  d|       y # 1 sw Y   YxY w)Nr   r   s   Non-UTF-8 code starting withs	   on line 4)re   rt   r   r   r   r   )contentrh   rcr   rA   fnr   templates        r   checkz2UTF8ValidatorTest.test_invalid_utf8.<locals>.check  sz    b$ -2G+,-!.!D!DR!HB ##B*MM96BMM,/- -s   A;;B                                             s   s      )r   
addCleanupr   rangeri   )r   r   xcontinuation_bytesinvalid_2B_seq_start_bytesinvalid_4B_seq_start_bytesinvalid_start_bytesbytesbcbcb1cb3r   r   s   `           @@r   test_invalid_utf8z#UTF8ValidatorTest.test_invalid_utf8   s    ##	0 38d2CDQeQCjDD:?d:K%LQeQCj%L"%L:?d:K%LQeQCj%L"%L!;;&'>CD%>P)Q%*)QR 	
 ( 	D$K	 - 	B( b2g	 - 	.B)"1- .-bq1 .C"S&.,-..	.
 (-T4'89!5!:9 	&B'"*W$%'"*W$%	& (-T4'89!5!:9 	&B'"*W$%'"*W$%	& (-T4'89!5!:9 	*B'"*[()'"*[()	* (-T4'89!5!:9 	*B'"*[()'"*[()	*A E%L%L *R : : : :s/   H(H-=H2'H7!H<&I+I0IN)
r   r   r   unittestskipIfrD   platformr~   r   r   r   r   r   r   r      sC    X__0099=?u>* ?>*r   r   c                       e Zd Zd Zy)BytesSourceEncodingTestc                     t               5 }t        |       d d d        j                         j                  d      }| j	                  |j                         |       y # 1 sw Y   IxY w)Nlatin1)r   r!   getvaluerz   r   r/   )r   r   r   r   r   s        r   r   z+BytesSourceEncodingTest.check_script_outputB  sS     	&I	oo&&x0x0	 	s   AA(Nr   r   r   r   r   r   r   r   r   @  s    1r   r   c                       e Zd Zd Zy)FileSourceEncodingTestc                 x   t        j                         5 }t        j                  j	                  |d      }t        |d      5 }|j                  |       d d d        t        j                  |      }d d d        | j                  j                  j                         |       y # 1 sw Y   QxY w# 1 sw Y   @xY w)Nztest.pyr   )tempfileTemporaryDirectoryrF   rG   rH   re   rt   r   r   r   r   r/   )r   r   r   tmpdr   rh   ress          r   r   z*FileSourceEncodingTest.check_script_outputK  s    ((* 	5ddI.Bb$ 2004C		5
 	)84 	5 	5s#   -B0B$B0$B-	)B00B9Nr   r   r   r   r   r   I  s    5r   r   __main__)r   test.supportr   r   r   r   test.support.os_helperr   r   r	   test.support.import_helperr
   r   rF   rD   rB   r   TestCaser   r   r   r   r   r   mainr   r   r   <module>r      s     _ _ 9 9 -  	 
  `X.. `FH: H:VB*)) B*J18(:K:K 1579J9J 5 zHMMO r   