Current File : //usr/local/apps/python3/lib/python3.11/test/__pycache__/test_utf8_mode.cpython-311.pyc
�

�KeZ)����dZddlZddlZddlZddlZddlZddlmZddlm	Z	m
Z
ddlmZej
dkZdZej
dkZGd	�d
ej��Zedkrej��dSdS)z9
Test the implementation of the PEP 540: the UTF-8 Mode.
�N)�support)�assert_python_ok�assert_python_failure)�	os_helper�win32)�C�POSIX�vxworksc�6�eZdZdddd�Zd�Zdd�d�Zejed��d	���Z	d
�Z
d�Zd�Zd
�Z
d�Zdd�Zd�Zd�Zd�Zd�Zejed��d���Zd�Zejed��ej��d�����ZdS)�
UTF8ModeTests��0)�
PYTHONUTF8�PYTHONLEGACYWINDOWSFSENCODING�PYTHONCOERCECLOCALEc�R�tjtjd��}|tvS)N)�locale�	setlocale�LC_CTYPE�
POSIX_LOCALES)�self�locs  �=/usr/local/apps/python3/lib/python3.11/test/test_utf8_mode.py�posix_localezUTF8ModeTests.posix_locales!����v���5�5���}�$�%�F)�failurec���t|jfi|��}|rt|i|��}|d}nt|i|��}|d}|����d��S)N��z

)�dict�DEFAULT_ENVrr�decode�rstrip)rr�args�kw�outs     r�
get_outputzUTF8ModeTests.get_outputsv��
�$�"�
)�
)�b�
)�
)���	�'��4��4�4�C��a�&�C�C�"�D�/�B�/�/�C��a�&�C��z�z�|�|�"�"�6�*�*�*rzWindows has no POSIX localec���d}tD]^}|�|���5|�d||���}|�|d��ddd��n#1swxYwY�_dS)N�&import sys; print(sys.flags.utf8_mode)��LC_ALL�-c�1)r�subTestr'�assertEqual)r�coderr&s    r�test_posix_localezUTF8ModeTests.test_posix_locale(s���7�� �	+�	+�C����S��)�)�
+�
+��o�o�d�D��o�=�=��� � ��c�*�*�*�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+����
+�
+�
+�
+��	+�	+s�/A�A!	�$A!	c��d}|�ddd|��}|�|d��|�ddd|��}|�|d��|�ddd|��}|�|d��tr2|�ddd|d�	��}|�|d��dSdS)
Nr)�-X�utf8r,r-zutf8=1�utf8=0r)r)r'r/�
MS_WINDOWS�rr0r&s   r�test_xoptionzUTF8ModeTests.test_xoption1s���7���o�o�d�F�D�$�7�7������c�"�"�"��o�o�d�H�d�D�9�9������c�"�"�"��o�o�d�H�d�D�9�9������c�"�"�"��	'��/�/�$���d�@C�"�E�E�C����S�#�&�&�&�&�&�	'�	'rc��d}|�d|d���}|�|d��|�d|d���}|�|d��|�ddd|d���}|�|d��tr1|�ddd|dd�	��}|�|d��|���s/|�d
d|d���}|�|d��|�d|dd�
��}|�d|�����dS)Nr)r,r-�rrr3r5r4�rr�-E�xxxT)rrz-invalid PYTHONUTF8 environment variable value)r'r/r6r�assertInr#r7s   r�test_env_varzUTF8ModeTests.test_env_varEsi��7���o�o�d�D�S�o�9�9������c�"�"�"��o�o�d�D�S�o�9�9������c�"�"�"��o�o�d�H�d�D�S�o�I�I������c�"�"�"��	'��/�/�$���d�s�@C�"�E�E�C����S�#�&�&�&�� � �"�"�	'��/�/�$��d�s�/�C�C�C����S�#�&�&�&��o�o�d�D�U�D�o�I�I���
�
�E��j�j�l�l�	$�	$�	$�	$�	$rc��tjd��}trd}nd}|�ddd|��}|�||��tr3|�ddd|dd�	��}|�|d
��dSdS)Nz�
            import sys
            print("{}/{}".format(sys.getfilesystemencoding(),
                                 sys.getfilesystemencodeerrors()))
        zutf-8/surrogatepasszutf-8/surrogateescaper3r4r,�strictr-r;zmbcs/replace)�textwrap�dedentr6r'r/)rr0�expectedr&s    r�test_filesystemencodingz%UTF8ModeTests.test_filesystemencodinges����� �
�
���	/�,�H�H�.�H��o�o�d�F�D�$�7�7������h�'�'�'��	2��/�/�$���d�-5�@C�"�E�E�C�
���S�.�1�1�1�1�1�
	2�	2rc���tjd��}|�ddd|d���}|�|���gd���|�ddd|d���}|�|���gd	���|�ddd|d
���}|�|���gd���dS)Nz�
            import sys
            print(f"stdin: {sys.stdin.encoding}/{sys.stdin.errors}")
            print(f"stdout: {sys.stdout.encoding}/{sys.stdout.errors}")
            print(f"stderr: {sys.stderr.encoding}/{sys.stderr.errors}")
        r3r4r,r
)�PYTHONIOENCODING)zstdin: utf-8/surrogateescapezstdout: utf-8/surrogateescape�stderr: utf-8/backslashreplace�latin1)zstdin: iso8859-1/strictzstdout: iso8859-1/strictz"stderr: iso8859-1/backslashreplacez:namereplace)zstdin: utf-8/namereplacezstdout: utf-8/namereplacerH)rBrCr'r/�
splitlinesr7s   r�
test_stdiozUTF8ModeTests.test_stdio|s0���� �
�
���o�o�d�F�D�$�/1��3�3��������)�)�<�<�<�	=�	=�	=��o�o�d�F�D�$�/7��9�9��������)�)�@�@�@�	A�	A�	A�
�o�o�d�F�D�$�/=��?�?��������)�)�<�<�<�	=�	=�	=�	=�	=rc��tjd��}t}|�d||d���}|�|���d��dS)Nz�
            import sys
            filename = sys.argv[1]
            with open(filename) as fp:
                print(f"{fp.encoding}/{fp.errors}")
        r,r-r:zutf-8/strict)rBrC�__file__r'r/�lower)rr0�filenamer&s    r�test_iozUTF8ModeTests.test_io�s\���� �
�
�����o�o�d�D�(�s�o�C�C����������n�5�5�5�5�5rNc�t�t}g}|r|�d|����|r|�d|����tjd��|d�|��fz}|�d||d���}|sd}|sd	}|�|���|�d
|����dS)Nz	encoding=zerrors=z�
            import sys
            from %s import open
            filename = sys.argv[1]
            with open(filename, %s) as fp:
                print(f"{fp.encoding}/{fp.errors}")
        z, r,r-r:�utf-8rA�/)rM�appendrBrC�joinr'r/rN)r�module�encoding�errorsrOr$r0r&s        r�_check_io_encodingz UTF8ModeTests._check_io_encoding�s��������	2��K�K�0�H�0�0�1�1�1��	.��K�K�,�&�,�,�-�-�-��� �
�
���	�	�$���(�
)���o�o�d�D�(�),��.�.���	��H��	��F����������&<�&<�F�&<�&<�=�=�=�=�=rc��|�|d���|�|d���|�|dd���dS)NrI�rW�namereplace)rX)rWrX)rY)rrVs  r�check_io_encodingzUTF8ModeTests.check_io_encoding�sg��������:�:�:�����}��=�=�=�����)1�-�	 �	I�	I�	I�	I�	Irc�0�|�d��dS)N�io�r]�rs r�test_io_encodingzUTF8ModeTests.test_io_encoding�s�����t�$�$�$�$�$rc�0�|�d��dS)N�_pyior`ras r�test_pyio_encodingz UTF8ModeTests.test_pyio_encoding�s�����w�'�'�'�'�'rc	�6�d}|�ddd|��}|�|d��tD]`}|�|���5|�ddd||���}|�|d��ddd��n#1swxYwY�adS)Nz[import locale; print(locale.getpreferredencoding(False), locale.getpreferredencoding(True))r3r4r,zutf-8 utf-8r*)r'r/rr.)rr0r&rs    r� test_locale_getpreferredencodingz.UTF8ModeTests.test_locale_getpreferredencoding�s���l���o�o�d�F�D�$�7�7������m�,�,�,� �	5�	5�C����S��)�)�
5�
5��o�o�d�F�D�$�s�o�K�K��� � ��m�4�4�4�
5�
5�
5�
5�
5�
5�
5�
5�
5�
5�
5����
5�
5�
5�
5��	5�	5s�1B
�
B	�B	ztest specific to Unixc�����d�d�����d��}��dd��}d����fd�}|d|g��tD]?}��|���5|d|g|���ddd��n#1swxYwY�@tjd	kstjstr|}n7tj�	d
��r��d��}n|}tD]?}��|���5|d|g|���ddd��n#1swxYwY�@dS)
Nuhé€rR�ascii�surrogateescapezYimport locale, sys; print("%s:%s" % (locale.getpreferredencoding(), ascii(sys.argv[1:])))c�����jd|d��fi|��}|�d��d���}��|t	|��|��dS)Nr3r,�:r)r'�	partitionr#r/ri)�utf8_optrDr%r&r$�argr0rs     ���r�checkz*UTF8ModeTests.test_cmd_line.<locals>.check�sj���!�$�/�$��$��c�H�H�R�H�H�C��=�=��%�%�a�(�/�/�1�1�D����T�5��?�?�C�8�8�8�8�8rr4r*�darwin�aixz
iso-8859-1r5)
�encoder"rr.�sys�platformr�
is_android�VXWORKS�
startswith)r�arg_utf8�	arg_asciirpr�c_argror0s`     @@r�
test_cmd_linezUTF8ModeTests.test_cmd_line�s�������"�"�7�+�+���:�:�g�&�&���J�J�w�(9�:�:�	�j��	9�	9�	9�	9�	9�	9�	9�
	��f�x�j�!�!�!� �	6�	6�C����S��)�)�
6�
6���f�x�j��5�5�5�5�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6����
6�
6�
6�
6���<�8�#�#�w�'9�#�W�#��E�E�
�\�
$�
$�U�
+�
+�	��J�J�|�,�,�E�E��E� �	5�	5�C����S��)�)�
5�
5���h����4�4�4�4�
5�
5�
5�
5�
5�
5�
5�
5�
5�
5�
5����
5�
5�
5�
5��	5�	5s$�9B�B	�B	�D9�9D=	�D=	c�(�d}|�dddd|��}|�|d��|�dddd|��}|�|d��d	}|�ddd
d|��}|�|d��dS)Nz%import sys; print(sys.flags.optimize)r3r4z-Or,r-z-OO�2z/import sys; print(sys.flags.ignore_environment)r<)r'r/r7s   r�test_optim_levelzUTF8ModeTests.test_optim_level�s���
7���o�o�d�F�D�$��=�=������c�"�"�"��o�o�d�F�E�4��>�>������c�"�"�"�@���o�o�d�F�D�$��=�=������c�"�"�"�"�"rz@os.device_encoding() doesn't implement the UTF-8 Mode on Windowsc��tj���s|�d��d}|�t
j|��d|�d�}tjddd|g}tj	|d�	��}|�
|jd
|��t|d���5}|�
�����}ddd��n#1swxYwY|�
|d��dS)
Nzsys.stdout is not a TTYzout.txtz5import os, sys; fd = sys.stdout.fileno(); out = open(z], "w", encoding="utf-8"); print(os.isatty(fd), os.device_encoding(fd), file=out); out.close()r3r4r,T)�textrr[z
True utf-8)rt�stdout�isatty�skipTest�
addCleanupr�unlink�
executable�
subprocess�runr/�
returncode�open�readr#)rrOr0�cmd�proc�fpr&s       r�test_device_encodingz"UTF8ModeTests.test_device_encoding�s@���z� � �"�"�	5��M�M�3�4�4�4������	�(�(�3�3�3��&������~�t�V�T�4�8���~�c��-�-�-�������!�T�2�2�2��(�V�
,�
,�
,�	%���'�'�)�)�"�"�$�$�C�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%����	%�	%�	%�	%�����l�+�+�+�+�+s�0'C#�#C'�*C')NN)�__name__�
__module__�__qualname__r!rr'�unittest�skipIfr6r1r8r?rErKrPrYr]rbrergr|rr�requires_subprocessr��rrrrs��������)+�"���K�&�&�&�).�+�+�+�+�+��X�_�Z�!>�?�?�+�+�@�?�+�'�'�'�($�$�$�@2�2�2�.=�=�=�<
6�
6�
6�>�>�>�>�2I�I�I�%�%�%�(�(�(�5�5�5��X�_�Z�!8�9�9�5�5�:�9�5�4
#�
#�
#��X�_�Z�1�2�2�!�W� �"�"�,�,�#�"�2�2�,�,�,rr�__main__)�__doc__rr�rtrBr��testr�test.support.script_helperrr�test.supportrrur6rrw�TestCaserr��mainr�rr�<module>r�s������
�
�
�����
�
�
�
���������������N�N�N�N�N�N�N�N�"�"�"�"�"�"��l�g�%�
��
��<�9�$��D,�D,�D,�D,�D,�H�%�D,�D,�D,�N�z����H�M�O�O�O�O�O��r