a ze$@szddlZddlZddlZddlZddlmZddlmZmZej dkZ dZ ej dkZ Gdddej Zed krvedS) N)support)assert_python_okassert_python_failurewin32)CZPOSIXZvxworksc@seZdZddddZddZdddd Zeed d d Z d dZ ddZ ddZ ddZ ddZd'ddZddZddZddZd d!Zeed"d#d$Zd%d&ZdS)( UTF8ModeTests0) PYTHONUTF8PYTHONLEGACYWINDOWSFSENCODINGZPYTHONCOERCECLOCALEcCsttjd}|tvS)N)locale setlocaleLC_CTYPE POSIX_LOCALES)selflocrG/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_utf8_mode.py posix_localeszUTF8ModeTests.posix_localeF)failurecOsRt|jfi|}|r.t|i|}|d}nt|i|}|d}|dS)Nz )dict DEFAULT_ENVrrdecoderstrip)rrargskwoutrrr get_outputs zUTF8ModeTests.get_outputzWindows has no POSIX localec CsZd}tD]L}|j|d,|jd||d}||dWdq1sJ0YqdS)N&import sys; print(sys.flags.utf8_mode)LC_ALL-c1)rsubTestr assertEqual)rcoderrrrrtest_posix_locale&s zUTF8ModeTests.test_posix_localecCsd}|ddd|}||d|ddd|}||d|ddd|}||dtr||jddd|dd }||ddS) Nr -Xutf8r#r$zutf8=1utf8=0r )r )rr& MS_WINDOWSrr'rrrr test_xoption/s    zUTF8ModeTests.test_xoptioncCsd}|jd|dd}||d|jd|dd}||d|jddd|dd}||dtr|jddd|ddd }||d|s|jd d|dd}||d|jd|d d d }|d|dS)Nr r#r$r r r)r+r*r r -EZxxxT)r rz-invalid PYTHONUTF8 environment variable value)rr&r,rZassertInrr-rrr test_env_varCs&     zUTF8ModeTests.test_env_varcCs^td}trd}nd}|ddd|}|||trZ|jddd|ddd }||d dS) Nz import sys print("{}/{}".format(sys.getfilesystemencoding(), sys.getfilesystemencodeerrors())) zutf-8/surrogatepasszutf-8/surrogateescaper)r*r#strictr$r0z mbcs/replace)textwrapdedentr,rr&)rr'expectedrrrrtest_filesystemencodingcs   z%UTF8ModeTests.test_filesystemencodingcCstd}|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/surrogateescapestderr: utf-8/backslashreplacelatin1)zstdin: iso8859-1/strictzstdout: iso8859-1/strictz"stderr: iso8859-1/backslashreplacez :namereplace)zstdin: utf-8/namereplacezstdout: utf-8/namereplacer8)r4r5rr& splitlinesr-rrr test_stdiozs&       zUTF8ModeTests.test_stdiocCs0td}t}|jd||dd}||ddS)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)r4r5__file__rr&)rr'filenamerrrrtest_ios zUTF8ModeTests.test_ioNcCst}g}|r|d||r0|d|td|d|f}|jd||dd}|sbd}|sjd }|||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/zUTF-8r3/)r<appendr4r5joinrr&)rmoduleencodingerrorsr=rr'rrrr_check_io_encodings"  z UTF8ModeTests._check_io_encodingcCs0|j|dd|j|dd|j|ddddS)Nr9)rC namereplace)rD)rCrD)rE)rrBrrrcheck_io_encodings zUTF8ModeTests.check_io_encodingcCs|ddS)NiorGrrrrtest_io_encodingszUTF8ModeTests.test_io_encodingcCs|ddS)NZ_pyiorIrJrrrtest_pyio_encodingsz UTF8ModeTests.test_pyio_encodingc Cszd}|ddd|}||dtD]P}|j|d0|jddd||d}||dWdq$1sj0Yq$dS)Nz[import locale; print(locale.getpreferredencoding(False), locale.getpreferredencoding(True))r)r*r#z UTF-8 UTF-8r!)rr&rr%)rr'rrrrr test_locale_getpreferredencodings z.UTF8ModeTests.test_locale_getpreferredencodingztest specific to Unixc sddd}dd}dfdd}|d|gtD]@}j|d  |d|g|d WdqD1sz0YqDtjd kstjstr|}ntj d rd }n|}tD]@}j|d  |d |g|d Wdq1s0YqdS)Nuhé€zutf-8asciisurrogateescapezYimport locale, sys; print("%s:%s" % (locale.getpreferredencoding(), ascii(sys.argv[1:])))csBjd|dfi|}|dd}|t||dS)Nr)r#:r)r partitionrr&rN)Zutf8_optr6rrrargr'rrrchecksz*UTF8ModeTests.test_cmd_line..checkr*r!darwinZaixz iso-8859-1r+) encoderrr%sysplatformrZ is_androidVXWORKS startswith)rZarg_utf8Z arg_asciirTrZc_argrrRr test_cmd_lines"    0  zUTF8ModeTests.test_cmd_linecCsfd}|dddd|}||d|dddd|}||dd }|ddd d|}||ddS) Nz%import sys; print(sys.flags.optimize)r)r*z-Or#r$z-OO2z/import sys; print(sys.flags.ignore_environment)r1)rr&r-rrrtest_optim_levels  zUTF8ModeTests.test_optim_level)NN)__name__ __module__ __qualname__rrrunittestZskipIfr,r(r.r2r7r;r>rErGrKrLrMr[r]rrrrrs*      r__main__)r rWr4ratestrZtest.support.script_helperrrrXr,rrYZTestCaserr^mainrrrrs   n