Your IP : 216.73.216.196


Current Path : /opt/alt/python310/lib64/python3.10/test/__pycache__/
Upload File :
Current File : //opt/alt/python310/lib64/python3.10/test/__pycache__/test_utf8_mode.cpython-310.opt-1.pyc

o

0�i')�@s�dZddlZddlZddlZddlZddlZddlmZddlm	Z	m
Z
ddlmZej
dkZdZej
dkZGd	d
�d
ej�ZedkrIe��dSdS)z9
Test the implementation of the PEP 540: the UTF-8 Mode.
�N)�support)�assert_python_ok�assert_python_failure)�	os_helperZwin32)�CZPOSIX�vxworksc@s�eZdZdddd�Zdd�Zdd�dd	�Ze�ed
�dd��Z	d
d�Z
dd�Zdd�Zdd�Z
dd�Zd*dd�Zdd�Zdd�Zdd�Zd d!�Ze�ed"�d#d$��Zd%d&�Ze�ed'�d(d)��ZdS)+�
UTF8ModeTests��0)�
PYTHONUTF8�PYTHONLEGACYWINDOWSFSENCODINGZPYTHONCOERCECLOCALEcCst�tjd�}|tvS)N)�locale�	setlocale�LC_CTYPE�
POSIX_LOCALES)�self�loc�r�:/opt/alt/python310/lib64/python3.10/test/test_utf8_mode.py�posix_localeszUTF8ModeTests.posix_localeF)�failurecOsRt|jfi|��}|rt|i|��}|d}nt|i|��}|d}|���d�S)N��z

)�dict�DEFAULT_ENVrr�decode�rstrip)rr�args�kw�outrrr�
get_outputs
zUTF8ModeTests.get_outputzWindows has no POSIX localec	CsZd}tD]&}|j|d��|jd||d�}|�|d�Wd�n1s%wYqdS)N�&import sys; print(sys.flags.utf8_mode)��LC_ALL�-c�1)r�subTestr �assertEqual)r�coderrrrr�test_posix_locale(s���zUTF8ModeTests.test_posix_localecCs�d}|�ddd|�}|�|d�|�ddd|�}|�|d�|�ddd|�}|�|d�tr@|jddd|dd	�}|�|d�dSdS)
Nr!�-X�utf8r$r%zutf8=1�utf8=0r
)r)r r'�
MS_WINDOWS�rr(rrrr�test_xoption1s��zUTF8ModeTests.test_xoptioncCs�d}|jd|dd�}|�|d�|jd|dd�}|�|d�|jddd|dd�}|�|d�trA|jddd|ddd	�}|�|d�|��sT|jd
d|dd�}|�|d�|jd|ddd
�}|�d|���dS)Nr!r$r%�rr
r*r,r+�rr�-EZxxxT)rrz-invalid PYTHONUTF8 environment variable value)r r'r-rZassertInrr.rrr�test_env_varEs&��zUTF8ModeTests.test_env_varcCsbt�d�}tr
d}nd}|�ddd|�}|�||�tr/|jddd|ddd	�}|�|d
�dSdS)Nz�
            import sys
            print("{}/{}".format(sys.getfilesystemencoding(),
                                 sys.getfilesystemencodeerrors()))
        zutf-8/surrogatepasszutf-8/surrogateescaper*r+r$�strictr%r1zmbcs/replace)�textwrap�dedentr-r r')rr(�expectedrrrr�test_filesystemencodinges
��z%UTF8ModeTests.test_filesystemencodingcCs�t�d�}|jddd|dd�}|�|��gd��|jddd|dd�}|�|��gd	��|jddd|d
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}")
        r*r+r$r	)ZPYTHONIOENCODING)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/namereplacer9)r5r6r r'�
splitlinesr.rrr�
test_stdio|s&
�
��
��
�zUTF8ModeTests.test_stdiocCs0t�d�}t}|jd||dd�}|�|d�dS)Nz�
            import sys
            filename = sys.argv[1]
            with open(filename) as fp:
                print(f"{fp.encoding}/{fp.errors}")
        r$r%r0zUTF-8/strict)r5r6�__file__r r')rr(�filenamerrrr�test_io�s
zUTF8ModeTests.test_ioNcCs�t}g}|r|�d|���|r|�d|���t�d�|d�|�f}|jd||dd�}|s1d}|s5d	}|�||�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%r0zUTF-8r4�/)r=�appendr5r6�joinr r')r�module�encoding�errorsr>rr(rrrr�_check_io_encoding�s"�
�z UTF8ModeTests._check_io_encodingcCs0|j|dd�|j|dd�|j|ddd�dS)Nr:�rD�namereplace)rE)rDrE)rF)rrCrrr�check_io_encoding�s

�zUTF8ModeTests.check_io_encodingcC�|�d�dS)N�io�rI�rrrr�test_io_encoding��zUTF8ModeTests.test_io_encodingcCrJ)NZ_pyiorLrMrrr�test_pyio_encoding�rOz UTF8ModeTests.test_pyio_encodingc	Cszd}|�ddd|�}|�|d�tD](}|j|d��|jddd||d�}|�|d�Wd�n1s5wYqdS)Nz[import locale; print(locale.getpreferredencoding(False), locale.getpreferredencoding(True))r*r+r$zUTF-8 UTF-8r")r r'rr&)rr(rrrrr� test_locale_getpreferredencoding�s���z.UTF8ModeTests.test_locale_getpreferredencodingztest specific to Unixc	sd�d����d�}��dd�}d����fdd�}|d|g�tD] }�j|d	��|d|g|d	�Wd�n1s=wYq"tjd
ksMtjsMtrP|}ntj�	d�r\��d�}n|}tD] }�j|d	��|d
|g|d	�Wd�n1s{wYq`dS)Nuhé€zutf-8�ascii�surrogateescapezYimport locale, sys; print("%s:%s" % (locale.getpreferredencoding(), ascii(sys.argv[1:])))csB�jd|d��fi|��}|�d�d��}��|t|�|�dS)Nr*r$�:r)r �	partitionrr'rR)Zutf8_optr7rrr��argr(rrr�check�sz*UTF8ModeTests.test_cmd_line.<locals>.checkr+r"�darwinZaixz
iso-8859-1r,)
�encoderrr&�sys�platformrZ
is_android�VXWORKS�
startswith)rZarg_utf8Z	arg_asciirXrZc_argrrVr�
test_cmd_line�s,

�����zUTF8ModeTests.test_cmd_linecCsfd}|�dddd|�}|�|d�|�dddd|�}|�|d�d	}|�ddd
d|�}|�|d�dS)Nz%import sys; print(sys.flags.optimize)r*r+z-Or$r%z-OO�2z/import sys; print(sys.flags.ignore_environment)r2)r r'r.rrr�test_optim_level�szUTF8ModeTests.test_optim_levelz@os.device_encoding() doesn't implement the UTF-8 Mode on WindowscCs�tj��s
|�d�d}|�tj|�d|�d�}tjddd|g}tj	|dd	�}|�
|jd
|�t|dd��}|�
���}Wd�n1sGwY|�
|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()r*r+r$T)�textrrGz
True UTF-8)r[�stdout�isattyZskipTestZ
addCleanupr�unlink�
executable�
subprocess�runr'�
returncode�open�readr)rr>r(�cmd�proc�fprrrr�test_device_encoding�s

��z"UTF8ModeTests.test_device_encoding)NN)�__name__�
__module__�__qualname__rrr �unittestZskipIfr-r)r/r3r8r<r?rFrIrNrPrQr_rarorrrrrs4�


 



�r�__main__)�__doc__r
rgr[r5rs�testrZtest.support.script_helperrrZtest.supportrr\r-rr]ZTestCaserrp�mainrrrr�<module>s$

�