asda?‰PNG  IHDR ? f ??C1 sRGB ??é gAMA ±? üa pHYs ? ??o¨d GIDATx^íüL”÷e÷Y?a?("Bh?_ò???¢§?q5k?*:t0A-o??¥]VkJ¢M??f?±8\k2íll£1]q?ù???T a bYh2@sddlZddlZddlZddlZddlZddlZddlmZddlm Z m Z m Z m Z m Z eedZddZGdddejZee d Gd d d ejZd d ZedkredS)N)support) spawn_python kill_pythonassert_python_okassert_python_failure interpreter_requires_environmentZgettotalrefcountcCst|}|}||fSN)rwait)pdata returncoder ./usr/local/lib/python3.9/test/test_cmd_line.py_kill_python_and_exit_codesrc@sJeZdZddZddZddZddZd d Zd d Zd dZ e e dddZ ddZddZddZddZddZe ejdddZe ejdkd d!d"Ze ejdkd d#d$Ze ejd%kpejd&d'd(Zd)d*Zd+d,Zd-d.Zd/d0Z d1d2Z!d3d4Z"d5d6Z#d7d8Z$d9d:Z%d;d<Z&d=d>Z'd?d@Z(dAdBZ)e e*j+dCkdDe ejdEkdFdGdHZ,dIdJZ-dKdLZ.dMdNZ/dOdPZ0dQdRZ1dSdTZ2dUdVZ3e e dWdXdYZ4dZd[Z5d\d]Z6d^d^d_d`daZ7dbdcZ8dwdedfZ9dgdhZ:didjZ;dkdlZdrdsZ?dtduZ@dvS)x CmdLineTestcCstdtddS)N.z< .)rselfr r rtest_directoriesszCmdLineTest.test_directoriescCsBt|\}}}||dkp"|d|d||d|dS)N s Traceback)r assertTrueendswith assertNotIn)rZcmd_linercouterrr r rverify_valid_flag!s zCmdLineTest.verify_valid_flagcCs|d|ddS)Nz-Oz-OOrrr r r test_optimize's zCmdLineTest.test_optimizecCs|ddS)N-Srrr r rtest_site_flag+szCmdLineTest.test_site_flagcCsBtd\}}}|}|d|dd|ddddS)Nz-hsusagerrascii)r splitlinesassertInjoindecode)rrrrlinesr r r test_usage.szCmdLineTest.test_usagecCsTdtjddd}dD]2}t|\}}}||||||qdS)Nz Python %d.%dr#)z-Vz --versionz-VV)sys version_infoencoderZ assertFalse startswithr)rversionZswitchrrrr r r test_version6s zCmdLineTest.test_versioncCs8td\}}}|d|td\}}}|d|dS)Nz-vsstack overflowz-vv)rrrrrrr r r test_verbose=s zCmdLineTest.test_verbosez6Cannot run -E tests when PYTHON env vars are required.cCs:dd}|}||i|dd}||ddddS)NcWs4tjdf|}|d7}t|}t|d}|S)N-E)-c import sys; print(sys._xoptions)r)r+ executable subprocess check_outputevalr$)argsroptsr r r get_xoptionsIs  z/CmdLineTest.test_xoptions..get_xoptionsz-Xaz -Xb=c,d=eTzc,d=e)ab) assertEqual)rr<r;r r r test_xoptionsFs    zCmdLineTest.test_xoptionscsfdd}d}|d|\}}}|d|d|ddd|\}}}|d trr|d n |ddS) Ncsdtjg}||tj}tj|||d}|\}}|j|j |j } |d|||fS)Nstdoutstderrr) r+r6extendr7PIPEPopen communicaterBcloserCr r?)r:cmdrEr rrrrr r run_pythonYs     z1CmdLineTest.test_showrefcount..run_pythonr5r4s{}r-X showrefcounts{'showrefcount': True}s^\[\d+ refs, \d+ blocks\])r?rstripPy_DEBUG assertRegex)rrJcoderrrr rrtest_showrefcountXs  zCmdLineTest.test_showrefcountcCs0tdtddtdddtdddddS)N-mZ fnord43520xyzZrunpytimeit-n1rrrr r rtest_run_modulets  zCmdLineTest.test_run_modulecCs\tddddd}|jd|jdt|}||dd k||d d kdS) N-irRrSrTrUsTimer exit() s1 loops__main__.Timer)rstdinwriterrfind)rr r r r rtest_run_module_bug1764407s   z&CmdLineTest.test_run_module_bug1764407cCs`t}tjtd}t|(tdddtdddWdn1sR0YdS)NtestrRunittestztest/test_longexp.pyz./test/test_longexp.py) osgetcwdpathdirname__file__ removesuffixrZ change_cwdr)rZ defaultwdZprojectlibpathr r rtest_relativedir_bug46421s   z%CmdLineTest.test_relativedir_bug46421cCs tdtddtdddS)Nr4zraise ExceptionpassrVrr r r test_run_codes zCmdLineTest.test_run_codezneed support.FS_NONASCIIcCs"dtjttjf}td|dS)Nzassert(ord(%r) == %s)r4)r FS_NONASCIIordr)rZcommandr r rtest_non_asciiszCmdLineTest.test_non_asciiwin32z Windows has a native unicode APIcCsd}tj}d|d<d|d<d|d}tjtjd|gtjtj|d }| \}}|j d krdd }n"|j d krtd }nt d|j |f| |st d||fdS)NCLC_ALL0ZPYTHONCOERCECLOCALEsimport locale; print(ascii("s""), locale.getpreferredencoding())r4)rBrCenvr"s3Unable to decode the command from the command line:rs'\xff' z Unknown exit code: %s, output=%az%a doesn't start with %a) raenvironcopyr7rFr+r6rESTDOUTrGr AssertionErrorr.)rZ undecodablerrrPr rBrCpatternr r rtest_undecodable_codes.      z!CmdLineTest.test_undecodable_codec sdtjdg}fdd}fdd}fdd}d d }d }||g}|||fD]X}|j|d 8|D]"} || } || jt| qjWdqT1s0YqTdS) Nz;import sys, os; s=os.fsencode(sys.argv[1]); print(ascii(s))r4cs tjd|g}tj|tjddS)Nr4TrBtextr+r6r7runrEargrIrPr r run_defaultsz6CmdLineTest.test_invalid_utf8_arg..run_defaultcs4tjd|g}ttj}d|d<tj|tjd|dS)Nr4rorpT)rBrzrr)r+r6dictrarsr7r|rE)r~rIrrrr r run_c_locales   z7CmdLineTest.test_invalid_utf8_arg..run_c_localecs$tjddd|g}tj|tjddS)NrKutf8r4Tryr{r}rr r run_utf8_modesz8CmdLineTest.test_invalid_utf8_arg..run_utf8_modee:é, euro:€, non-bmp:􏿿utf-8sé)run_cmd)r+r6r-subTestr?rBrMr#) rZbase_cmdrrrZ valid_utf8Z invalid_utf8Z test_argsrr~procr rrtest_invalid_utf8_args      z!CmdLineTest.test_invalid_utf8_argdarwinz%test specific to Mac OS X and Androidc Csdd}d}|dd}t|dd}tj}d|d<tjtj d ||ftj |d }| \}}| ||| |j d dS) Nrrz%import sys; print(ascii(sys.argv[1]))surrogateescaper#rrorpr4)rBrrr)r-r'r#rarsrtr7rFr+r6rErGr?r ) rrzrPZdecodedexpectedrrr rBrCr r rtest_osx_android_utf8s      z!CmdLineTest.test_osx_android_utf8cCs@td}tjd|g}tj|tjtjddd}||jddS)Nz import sys out = sys.stdout print(out.isatty(), out.write_through, out.line_buffering) err = sys.stderr print(err.isatty(), err.write_through, err.line_buffering) r4T)rBrCrzcheckz#False False False False False True ) textwrapdedentr+r6r7r|rEr?rB)rrPr:rr r r%test_non_interactive_output_bufferings   z1CmdLineTest.test_non_interactive_output_bufferingcCsdD]|}d|}tdd|\}}}|dkr.|n|}||dd|d|}tdd|\}}}|dkrj|n|}||dd |qdS) NrAz6import os, sys; sys.%s.buffer.write(b'x'); os._exit(0)-ur4rCxzbinary %s not unbufferedz.import os, sys; sys.%s.write('x'); os._exit(0)ztext %s not unbufferedrr?)rstreamrPrrrr r r rtest_unbuffered_outputsz"CmdLineTest.test_unbuffered_outputcCsTd}tdd|}|jd|jt|\}}||d||d|dS)Nz/import sys; sys.stdout.write(sys.stdin.read(1))rr4rr)rr[r\flushrr?rr.)rrPr r rr r rtest_unbuffered_input/s     z!CmdLineTest.test_unbuffered_inputcCsXd}d}|tj|}d}tdd||d\}}}||d|||d|dS)NAABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEAFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJif 1: import sys path = ":".join(sys.path) path = path.encode("ascii", "backslashreplace") sys.stdout.buffer.write(path)r r4Z PYTHONPATHr#)rapathseprr%r-)rZpath1Zpath2rcrPrrrr r rtest_large_PYTHONPATH9s z!CmdLineTest.test_large_PYTHONPATHcCs<d}td|dd\}}}td|dd\}}}|||dS)Nrr4rF)Z __isolatedr)rrPZrc1Zout1Zerr1Zrc2Zout2Zerr2r r r test_empty_PYTHONPATH_issue16309Hsz,CmdLineTest.test_empty_PYTHONPATH_issue16309cCsdD]}tj}||d<tjtjdgtjtjtj|d}d}|j t | dd|j dt |}t| |d }|||qdS) N)r#zlatin-1rZPYTHONIOENCODINGrX)r[rBrCrrua=é b= c=𐀀 d=􏿿r#rrYbackslashreplace)rarsrtr7rFr+r6rErur[r\r#r-rreprr%)rencodingrrr rzr escapedr r rtest_displayhook_unencodableYs   z(CmdLineTest.test_displayhook_unencodablec Cstd}tjd}||d||dt j t j d|f|t j d}|\}}Wdn1sv0YWdn1s0Y|||dS)Nzwb+ASCII)sabcsdefrr4)r[rB)tempfileNamedTemporaryFileralinesepr-r\r&rseekr7rFr+r6rErGr?rM)rrPrr[seprrBrCr r r check_inputks    HzCmdLineTest.check_inputcCs|dddS)Nz-import sys; print(repr(sys.stdin.readline()))s'abc\n'rrr r rtest_stdin_readlinewszCmdLineTest.test_stdin_readlinecCs|dddS)Nzprint(repr(input()))s'abc'rrr r rtest_builtin_input~szCmdLineTest.test_builtin_inputcCsTd}td|\}}}tjdkr8|d||d|n|d||d|dS)Nzif 1: import sys print(1) print(2) print(3, file=sys.stderr) print(4, file=sys.stderr)r4rms1 2 s3 4 s1 2 s3 4 )rr+platformr?rrPrrrr r rtest_output_newlines   zCmdLineTest.test_output_newlinecCs4tdd\}}}||ddd|d|dS)Nr4'r#ignore SyntaxErrorr)rrOr'r?r1r r rtest_unmached_quoteszCmdLineTest.test_unmached_quotecCsDd}td|\}}}|d||d|||ddddS)Nzif 1: import os, sys, test.support test.support.SuppressCrashReport().__enter__() sys.stdout.write('x') os.close(sys.stdout.fileno())r4rxr#rz"Exception ignored in.* OSError: .*)rr?rOr'rr r rtest_stdout_flush_at_shutdowns  z)CmdLineTest.test_stdout_flush_at_shutdowncCs$d}td|\}}}|d|dS)Nzimport sys; sys.stdout.close()r4rrrr r rtest_closed_stdoutszCmdLineTest.test_closed_stdoutposixztest needs POSIX semanticsZvxworksz.test needs preexec support in subprocess.Popencsfdjd}fdd}tjtjdd|gtjtjtj|d}|\}}||d||jd dS) Nzif 1: import os, sys for i, s in enumerate({streams}): if getattr(sys, s) is not None: os._exit(i + 1) os._exit(42)streamscs:dvrtddvr$tddvr6tddS)Nr[rrBr"rCr*)rarHr rr rpreexecs   z+CmdLineTest._test_no_stdio..preexecr3r4)r[rBrC preexec_fnr*) formatr7rFr+r6rErGr?r )rrrPrr rrr rr_test_no_stdios    zCmdLineTest._test_no_stdiocCs|dgdS)Nr[rrr r r test_no_stdinszCmdLineTest.test_no_stdincCs|dgdS)NrBrrr r rtest_no_stdoutszCmdLineTest.test_no_stdoutcCs|dgdS)NrCrrr r rtest_no_stderrszCmdLineTest.test_no_stderrcCs|gddS)N)r[rBrCrrr r rtest_no_std_streamsszCmdLineTest.test_no_std_streamscCs.|dg}tjdddkr:ttj}|d=d|d<ni}tdD]6}d}td|fi|\}}}||d ||qFt t |}|j t |d d |d d }td|dd\}}}|d|td|dd\}}}|d|td|dd\}}}|d|tdd|dd\}}}|d|dS)Nz-RPYTHONHASHSEEDrandomrUZ __cleanenvzprint(hash("spam"))r4rr"z83 runs produced an identical random hash for "spam": {})msgz@rzGCmdLineTest.test_int_max_str_digits..res2int..)rrr'tupler)resrr r rres2int>sz4CmdLineTest.test_int_max_str_digits..res2intrZzint_max_str_digits=0)rrzint_max_str_digits=4000)r%zint_max_str_digits=100000)順r&rqzint_max_str_digits=6000)pr')rrr?r+get_int_max_str_digits)rrPr$r#r r rtest_int_max_str_digits2s6  z#CmdLineTest.test_int_max_str_digitsN)F)A__name__ __module__ __qualname__rrrr!r)r0r2r`skipIfrr@rQrWr^rgriZ skipUnlessrrjrlr+rrxrZ is_androidrrrrrrrrrrrrrrrarrrrrrrrrrrrrr rrrrrrrr)r r r rrs        !  +      %  ;    rrc@s,eZdZddZddZddZddZd S) IgnoreEnvironmentTestcKsd|}tdd|fi|S)Nz@import sys; sys.stderr.write(str(sys.flags)); sys.exit(not ({}))r3r4)rr)r predicaterrPr r rrun_ignoring_varsZs z'IgnoreEnvironmentTest.run_ignoring_varscCsd}|jd||ddS)NZshould_be_ignoredz'{}' not in sys.pathr)r0r)rrcr r rtest_ignore_PYTHONPATHbs z,IgnoreEnvironmentTest.test_ignore_PYTHONPATHcCs|jddddS)Nz!sys.flags.hash_randomization == 1rqrr0rr r rtest_ignore_PYTHONHASHSEEDgsz0IgnoreEnvironmentTest.test_ignore_PYTHONHASHSEEDcCsd}|j|ddddddS)Nz (sys.flags.debug == sys.flags.optimize == sys.flags.dont_write_bytecode == sys.flags.verbose == 0) rUrr2)rZexpected_outcomer r rtest_sys_flags_not_setksz,IgnoreEnvironmentTest.test_sys_flags_not_setN)r*r+r,r0r1r3r4r r r rr.Vsr.cCs tdSr)r reap_childrenr r r rtearDownModulezsr6__main__)rar7r+rrr`r_rZtest.support.script_helperrrrrrhasattrrNrZTestCaserr-r.r6r*rr r r rs.  @"