HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/local/lib/python3.10/test/__pycache__/test_utf8_mode.cpython-310.pyc
o

�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_helper�win32)�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�0/usr/local/lib/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�coderr rrr�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)r rrr�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&�rrr+r-r,�rr
�-EZxxxT)rrz-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&r2zmbcs/replace)�textwrap�dedentr.r!r()rr)�expectedr rrr�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/namereplacer:)r6r7r!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&r1zUTF-8/strict)r6r7�__file__r!r()rr)�filenamer rrr�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&r1zUTF-8r5�/)r>�appendr6r7�joinr!r()r�module�encoding�errorsr?rr)r rrr�_check_io_encoding�s"�
�z UTF8ModeTests._check_io_encodingcCs0|j|dd�|j|dd�|j|ddd�dS)Nr;�rE�namereplace)rF)rErF)rG)rrDrrr�check_io_encoding�s

�zUTF8ModeTests.check_io_encodingcC�|�d�dS)N�io�rJ�rrrr�test_io_encoding��zUTF8ModeTests.test_io_encodingcCrK)NZ_pyiorMrNrrr�test_pyio_encoding�rPz 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)r rrrr� 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(rS)Zutf8_optr8rr r��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_asciirYrZc_argrrWr�
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)r3)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)�textrrHz
True UTF-8)r\�stdout�isattyZskipTestZ
addCleanupr�unlink�
executable�
subprocess�runr(�
returncode�open�readr)rr?r)�cmd�proc�fpr rrr�test_device_encoding�s

��z"UTF8ModeTests.test_device_encoding)NN)�__name__�
__module__�__qualname__rrr!�unittestZskipIfr.r*r0r4r9r=r@rGrJrOrQrRr`rbrprrrrr	s4�


 



�r	�__main__)�__doc__rrhr\r6rt�testrZtest.support.script_helperrrZtest.supportrr]r.rr^ZTestCaser	rq�mainrrrr�<module>s$

�