
    /hh                        S SK r S SKrS SKrS SKrS SKrS SKrS SKJr  S SKJ	r	  S SKJ
r
  S SKJrJrJrJrJr  \R"                  (       d  \R$                  " S5      eS r " S S	\R(                  5      r\R,                  " \" 5       S
5       " S S\R(                  5      5       r " S S\R(                  5      rS r\S:X  a  \R6                  " 5         gg)    N)support)	os_helper)force_not_colorized)spawn_pythonkill_pythonassert_python_okassert_python_failure interpreter_requires_environmentztest module requires subprocessc                 >    [        U 5      nU R                  5       nX4$ N)r   wait)pdata
returncodes      ;/opt/python-3.13.8/usr/lib/python3.13/test/test_cmd_line.py_kill_python_and_exit_coder      s    q>DJ    c                      \ rS rSrS rS r\R                  S 5       r\R                  S 5       r	\R                  S 5       r
\R                  S 5       rS rS	 r\R                  S
 5       rS r\R"                  " \" 5       S5      S 5       rS r\R                  S 5       r\R                  S 5       rS rS rS rS r\R6                  " \R:                  S5      S 5       r\R6                  " \R:                  S5      S 5       r\R"                  " \ RB                  S:H  S5      S 5       r"\R"                  " \ RB                  S:H  S5      S 5       r#\R6                  " \ RB                  S:H  =(       d    \RH                  S5      S 5       r%S r&S  r'S! r(S" r)\R"                  " \ RT                  RV                  S#5      S$ 5       r,S% r-S& r.S' r/S( r0S) r1S* r2S+ r3S, r4\R"                  " \5Rl                  S-:g  S.5      \R"                  " \ RB                  S/:H  S05      S1 5       5       r7S2 r8S3 r9S4 r:S5 r;S6 r<S7 r=\R                  S8 5       r>\R"                  " \" 5       S95      S: 5       r?S; r@S< rAS=S=S>.S? jrB\R                  S@ 5       rCSPSA jrDSB rESC rF\R                  SD 5       rGSE rHSF rI\R6                  " \ RB                  S:H  SG5      SH 5       rJ\R                  SI 5       rKSJ rLSK rMSL rNSM rOSNrPgO)QCmdLineTest   c                 0    [        S5        [        S5        g )N.z< .)r	   selfs    r   test_directoriesCmdLineTest.test_directories   s    c"e$r   c                     [        U5      u  p#nU R                  US:H  =(       d    UR                  S5      5        U R                  SU5        U R                  SU5        U$ )Nr      
s	   Traceback)r   
assertTrueendswithassertNotIn)r   cmd_linercouterrs        r   verify_valid_flagCmdLineTest.verify_valid_flag#   sS    '1s
9cll5&9:s+s+
r   c                 2   U R                  S5        U R                  S5        U R                  S5      nUR                  5       nU R                  SUS   5        U R                  SU5        U R                  SU5        U R	                  [        U5      S5        g )	Nz-hz-?z--help   usager   
   PYTHONHOME   -X dev2   )r&   
splitlinesassertInr!   
assertLesslenr   r$   liness      r   	test_helpCmdLineTest.test_help*   s~    t$t$$$X. ha),C(E
B'r   c                 J    U R                  S5      nU R                  SU5        g )Nz
--help-envr*   r&   r.   r   r$   s     r   test_help_envCmdLineTest.test_help_env5   s     $$\2mS)r   c                 J    U R                  S5      nU R                  SU5        g )Nz--help-xoptionsr+   r6   r7   s     r   test_help_xoptionsCmdLineTest.test_help_xoptions:   s!    $$%67i%r   c                     U R                  S5      nUR                  5       nU R                  SUS   5        U R                  SU5        U R                  SU5        SR                  USS  5      R	                  S5        g )	Nz
--help-allr)   r   r*   r+   r      ascii)r&   r-   r.   joindecoder1   s      r   test_help_allCmdLineTest.test_help_all?   sk    $$\2 ha)mS)i% 	qr""7+r   c                 H    U R                  S5        U R                  S5        g )Nz-Oz-OOr&   r   s    r   test_optimizeCmdLineTest.test_optimizeK   s    t$u%r   c                 &    U R                  S5        g )N-SrE   r   s    r   test_site_flagCmdLineTest.test_site_flagO   s    t$r   c                     S[         R                  S S -  R                  S5      nS HQ  n[        U5      u  p4nU R	                  UR                  U5      5        U R                  UR                  U5      5        MS     g )NzPython %d.%d   r?   )z-Vz	--versionz-VV)sysversion_infoencoder   assertFalse
startswithr   )r   versionswitchr#   r$   r%   s         r   test_versionCmdLineTest.test_versionR   sh    !C$4$4Ra$88@@I.F+F3LBSS^^G45OOCNN734 /r   c                     [        S5      u  pnU R                  SU5        [        S5      u  pnU R                  SU5        g )Nz-vs   stack overflowz-vv)r   r!   r   r#   r$   r%   s       r   test_verboseCmdLineTest.test_verboseZ   sB     (-*C0'.*C0r   z6Cannot run -E tests when PYTHON env vars are required.c                 x    S nU" 5       nU R                  U0 5        U" SS5      nU R                  USSS.5        g )Nc                      [         R                  S4U -   n U S-  n [        R                  " U 5      n[	        UR                  5       S   5      nU$ )N-E)-c import sys; print(sys._xoptions)r   )rN   
executable
subprocesscheck_outputevalr-   )argsr$   optss      r   get_xoptions/CmdLineTest.test_xoptions.<locals>.get_xoptionsf   sM     NND)D0D>>D))$/C(+,DKr   z-Xaz	-Xb=c,d=eTzc,d=e)ab)assertEqual)r   rf   re   s      r   test_xoptionsCmdLineTest.test_xoptionsc   sA    	 ~r"E;/T89r   c                 d  ^  U 4S jnSnU" SU5      u  p4nT R                  UR                  5       S5        T R                  US5        U" SSSSU5      u  p4nT R                  UR                  5       S	5        [        R                  (       a  T R	                  US
5        g T R                  US5        g )Nc                  b  > [         R                  /nUR                  U 5        [        R                  n[        R
                  " XUS9nUR                  5       u  pEUR                  R                  5         UR                  R                  5         UR                  nTR                  US5        XdU4$ )Nstdoutstderrr   )rN   r`   extendra   PIPEPopencommunicaterp   closerq   r   rj   )rd   cmdrs   r   r$   r%   r#   r   s          r   
run_python1CmdLineTest.test_showrefcount.<locals>.run_pythonv   s     >>"CJJt??D  $?A}}HCHHNNHHNNBR#C<r   r_   r^   s   {}r   -I-Xshowrefcounts   {'showrefcount': True}s   ^\[-?\d+ refs, \d+ blocks\])rj   rstripr   Py_DEBUGassertRegex)r   rx   coder#   r$   r%   s   `     r   test_showrefcountCmdLineTest.test_showrefcountu   s    	  2!$-u-c"!$ndDI'@A S"ABS#&r   c                     1 SknU H[  u  p#SSU 3SS/nU R                  U5         [        U6 nU R                  UR                  R	                  S5      U5        S S S 5        M]     g ! , (       d  f       Mo  = f)N>   z=onFrozenImporterz=offSourceFileLoader r   =r   r{   frozen_modulesr^   ,import os; print(os.__spec__.loader, end="")utf-8subTestr   r   r$   rA   r   testsrawexpectedrw   ress         r   test_xoption_frozen_modules'CmdLineTest.test_xoption_frozen_modules   su    
 #MC>#/GICc"&,  !8(C #" # #"s   4A''
A6	c                     SS1nU HY  u  p#SS/nU R                  U5         [        USU06nU R                  UR                  R	                  S5      U5        S S S 5        M[     g ! , (       d  f       Mm  = f)N)onr   )offr   r^   r   PYTHON_FROZEN_MODULESr   r   r   s         r   test_env_var_frozen_modules'CmdLineTest.test_env_var_frozen_modules   sq     %'
 #MCGHCc"&G3G  !8(C #" #""s   7A%%
A4	c                 h    [        S5        [        SS5        [        SSS5        [        SSSS5        g )N-mfnord43520xyzrunpytimeit-n1r	   r   r   s    r   test_run_moduleCmdLineTest.test_run_module   s2     	d#dO4 	dG_=xs3r   c                 0   [        SSSSS5      nUR                  R                  S5        UR                  R                  S5        [        U5      nU R	                  UR                  S5      S	:g  5        U R	                  UR                  S
5      S	:g  5        g )N-ir   r   r   r   s   Timer
   exit()
s   1 loops   __main__.Timer)r   stdinwriter   r   find)r   r   r   s      r   test_run_module_bug1764407&CmdLineTest.test_run_module_bug1764407   st     tXtS9	j!	k"1~		),23		"34:;r   c                     [         R                  R                  [        5      R	                  S5      n[
        R                  " U5         [        SSS5        [        SSS5        S S S 5        g ! , (       d  f       g = f)Ntestr   unittestztest/test_longexp.pyz./test/test_longexp.py)ospathdirname__file__removesuffixr   
change_cwdr   )r   projectlibpaths     r   test_relativedir_bug46421%CmdLineTest.test_relativedir_bug46421   sU     2??G!!.1T:/EFT:/GH 211s   	A--
A;c                 J    [        S5        [        SS5        [        SS5        g )Nr^   zraise Exceptionpassr   r   s    r   test_run_codeCmdLineTest.test_run_code   s!     	d#d$56v&r   zneed os_helper.FS_NONASCIIc                 |    S[         R                  < S[        [         R                  5      < S3n[        SU5        g )Nzassert(ord(z) == )r^   )r   FS_NONASCIIordr   )r   commands     r   test_non_asciiCmdLineTest.test_non_ascii   s,      ++S1F1F-GIw'r   c                     [         R                  nSU S3n[        SU5      nU R                  UR                  R                  5       [        U5      R                  S5      5        g )Nz# coding: latin1
print(ascii('z'))r^   r?   )r   r   r   rj   r$   r}   r?   rP   )r   chrw   r   s       r   test_codingCmdLineTest.test_coding   sS     ""/t37tS))59+;+;G+DEr   win32z Windows has a native unicode APIc                    Sn[         R                  R                  5       nSUS'   SUS'   SU-   S-   n[        R                  " [
        R                  SU/[        R                  [        R                  US	9nUR                  5       u  pVUR                  S
:X  a  SnO0UR                  S:X  a  SnO[        SUR                  < SU< 35      eUR                  U5      (       d  [        U< SU< 35      eg )N   CLC_ALL0PYTHONCOERCECLOCALEs   import locale; print(ascii("s   "), locale.getencoding())r^   )rp   rq   envr>   s3   Unable to decode the command from the command line:r   s   '\xff' zUnknown exit code: z	, output=z doesn't start with )r   environcopyra   rt   rN   r`   rs   STDOUTru   r   AssertionErrorrR   )r   undecodabler   r   r   rp   rq   patterns           r   test_undecodable_code!CmdLineTest.test_undecodable_code   s     jjooH%(!"*+.)) 	 ^^T4(??:+<+< <<1
 MG\\Q "G !q||U[!\]]  )) vw!OPP *r   c           	      L  ^
 Sm
U
4S jnU
4S jnU
4S jnSR                  S5      nSnXE/nXU4 H_  nU R                  US9   U H>  nU" U5      n	U R                  U	R                  R	                  5       [        U5      5        M@     S S S 5        Ma     g ! , (       d  f       Ms  = f)	Nz;import sys, os; s=os.fsencode(sys.argv[1]); print(ascii(s))c                 t   > [         R                  STU /n[        R                  " U[        R                  SS9$ )Nr^   Trp   textrN   r`   ra   runrs   argrw   r   s     r   run_default6CmdLineTest.test_invalid_utf8_arg.<locals>.run_default  s,    >>4s3C>>#jooDIIr   c                    > [         R                  STU /n[        [        R                  5      nSUS'   [
        R                  " U[
        R                  SUS9$ )Nr^   r   r   T)rp   r   r   )rN   r`   dictr   r   ra   r   rs   )r   rw   r   r   s      r   run_c_locale7CmdLineTest.test_invalid_utf8_arg.<locals>.run_c_locale  sJ    >>4s3Crzz"CCM>>#joo'+6 6r   c                 x   > [         R                  SSSTU /n[        R                  " U[        R                  SS9$ )Nr{   utf8r^   Tr   r   r   s     r   run_utf8_mode8CmdLineTest.test_invalid_utf8_arg.<locals>.run_utf8_mode%  s0    >>4tSAC>>#jooDIIr      e:é, euro:€, non-bmp:􏿿r   s   é)run_cmd)rP   r   rj   rp   r}   r?   )r   r   r   r   
valid_utf8invalid_utf8	test_argsr   r   procr   s             @r   test_invalid_utf8_arg!CmdLineTest.test_invalid_utf8_arg  s     M	J	6	J ?EEgN
( 	  .	#=AGg.$C"3<D$$T[[%7%7%95:F % /. B..s   AB
B#	darwinz%test specific to Mac OS X and Androidc                    SR                  S5      nSnUR                  SS5      n[        U5      R                  S5      S-   n[        R                  R                  5       nSUS'   [        R                  " [        R                  S	X!4[        R                  US
9nUR                  5       u  pxU R                  Xt5        U R                  UR                  S5        g )Nr   r   z%import sys; print(ascii(sys.argv[1]))surrogateescaper?   r   r   r   r^   )rp   r   r   )rP   rA   r?   r   r   r   ra   rt   rN   r`   rs   ru   rj   r   )	r   r   r   decodedr   r   r   rp   rq   s	            r   test_osx_android_utf8!CmdLineTest.test_osx_android_utf8;  s     9??H6++g'89>((1E9jjoo H^^T4.?? *q)r   c                     [         R                  " S5      n[        R                  SU/n[        R
                  " U[        R                  [        R                  SSS9nU R                  UR                  S5        g )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)
        r^   T)rp   rq   r   checkz#False False False
False False True
)	textwrapdedentrN   r`   ra   r   rs   rj   rp   )r   r   rd   r   s       r   %test_non_interactive_output_buffering1CmdLineTest.test_non_interactive_output_bufferingQ  sb        d+~~d:??%/__4tM.	/r   c                     S Hm  nSU-  n[        SSU5      u  p4nUS:X  a  UOUnU R                  USSU-  5        SU-  n[        SSU5      u  p4nUS:X  a  UOUnU R                  USS	U-  5        Mo     g )
Nro   z6import os, sys; sys.%s.buffer.write(b'x'); os._exit(0)-ur^   rq      xzbinary %s not unbufferedz.import os, sys; sys.%s.write('x'); os._exit(0)ztext %s not unbufferedr   rj   )r   streamr   r#   r$   r%   r   s          r   test_unbuffered_output"CmdLineTest.test_unbuffered_output`  s    *FLD+D$=LBS H,3#DT4)Cf)LMDD+D$=LBS H,3#DT4)AF)JK +r   c                    Sn[        SSU5      nUR                  R                  S5        UR                  R                  5         [	        U5      u  p4U R                  US5        U R                  UR                  S5      U5        g )Nz/import sys; sys.stdout.write(sys.stdin.read(1))r  r^   r  r   )r   r   r   flushr   rj   r   rR   )r   r   r   r   r#   s        r   test_unbuffered_input!CmdLineTest.test_unbuffered_inputp  se    AtT*	d	-a0Q-t4r   c                     SnSnU[         R                  -   U-   nSn[        SSUUS9u  pVnU R                  UR	                  S5      U5        U R                  UR	                  S5      U5        g )N  ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE  FGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJif 1:
            import sys
            path = ":".join(sys.path)
            path = path.encode("ascii", "backslashreplace")
            sys.stdout.buffer.write(path)rI   r^   
PYTHONPATHr?   )r   pathsepr   r.   rP   )r   path1path2r   r   r#   r$   r%   s           r   test_large_PYTHONPATH!CmdLineTest.test_large_PYTHONPATHz  sm    rzz!E)-
 (dD379ell7+S1ell7+S1r   z'PYTHONSAFEPATH changes default sys.pathc                 b    Sn[        SUSS9u  p#n[        SUSS9u  pVnU R                  X65        g )Nr  r^   r   r  F)
__isolatedr  )r   r   rc1out1err1rc2out2err2s           r    test_empty_PYTHONPATH_issue16309,CmdLineTest.test_empty_PYTHONPATH_issue16309  s?    -
 +4"E4*4%H4 	$r   c           	         S GH  n[         R                  R                  5       nXS'   [        R                  " [
        R                  S/[        R                  [        R                  [        R                  US9nSnUR                  R                  [        U5      R                  S5      S-   5        UR                  R                  S5        [        U5      n[        U5      R                  US	5      nU R                  Xe5        GM     g )
N)r?   zlatin-1r   PYTHONIOENCODINGr   )r   rp   rq   r   u   a=é b= c=𐀀 d=􏿿r?   r   r   backslashreplace)r   r   r   ra   rt   rN   r`   rs   r   r   r   r?   rP   r   reprr.   )r   encodingr   r   r   r   escapeds          r   test_displayhook_unencodable(CmdLineTest.test_displayhook_unencodable  s    5H**//#C&."#  & oo!!((A ?DGGMM%+,,W5=>GGMM+&q>D4j''2DEGMM'( 6r   c                 &   [         R                  " S5       n[        R                  R	                  S5      nUR                  UR                  S5      5        UR                  5         UR                  S5        [        R                  " [        R                  SU4U[        R                  S9 nUR                  5       u  pgS S S 5        S S S 5        U R                  WR!                  5       U5        g ! , (       d  f       N7= f! , (       d  f       N@= f)Nzwb+ASCII)s   abcs   defr   r^   )r   rp   )tempfileNamedTemporaryFiler   lineseprP   r   r@   r
  seekra   rt   rN   r`   rs   ru   rj   r}   )r   r   r   r   sepr   rp   rq   s           r   check_inputCmdLineTest.check_input  s    ((/5**##G,CKK!123KKMJJqM!!t,JOO58<!%!1!1!35 0 	(3	5 5 0/s$   BD-C1 D1
C?	;D
Dc                 (    U R                  SS5        g )Nz-import sys; print(repr(sys.stdin.readline()))s   'abc\n'r1  r   s    r   test_stdin_readlineCmdLineTest.test_stdin_readline  s     	;	r   c                 (    U R                  SS5        g )Nzprint(repr(input()))s   'abc'r4  r   s    r   test_builtin_inputCmdLineTest.test_builtin_input  s    "	r   c                     Sn[        SU5      u  p#n[        R                  S:X  a%  U R                  SU5        U R                  SU5        g U R                  SU5        U R                  SU5        g )Nzif 1:
            import sys
            print(1)
            print(2)
            print(3, file=sys.stderr)
            print(4, file=sys.stderr)r^   r   s   1
2
s   3
4
s   1
2
s   3
4
)r   rN   platformrj   r   r   r#   r$   r%   s        r   test_output_newlineCmdLineTest.test_output_newline  sg    ) (d3<<7"]C0]C0Y,Y,r   c                     [        SS5      u  pnU R                  UR                  SS5      S5        U R                  SU5        g )Nr^   'r?   ignoreSyntaxErrorr   )r	   r   rA   rj   rX   s       r   test_unmached_quoteCmdLineTest.test_unmached_quote  s?     -T37GX6Fc"r   c                     Sn[        SU5      u  p#nU R                  SU5        U R                  SU5        U R                  SR                  S[        R
                  R                  5       5      U5        g )Nzif 1:
            import os, sys, test.support
            test.support.SuppressCrashReport().__enter__()
            sys.stdout.write('x')
            os.close(sys.stdout.fileno())r^   r   x   s3   Exception ignored on flushing sys.stdout:
OSError: r   )r	   rj   r.   replacer   r.  rP   r<  s        r   test_stdout_flush_at_shutdown)CmdLineTest.test_stdout_flush_at_shutdown  sh    -
 -T48c"b! ##*75"**2C2C2E#F	r   c                 J    Sn[        SU5      u  p#nU R                  SU5        g )Nzimport sys; sys.stdout.close()r^   r   r  r<  s        r   test_closed_stdoutCmdLineTest.test_closed_stdout  s)     0'd3c"r   posixztest needs POSIX semanticsvxworksz.test needs preexec support in subprocess.Popenc                 X  ^ SR                  TS9nU4S jn[        R                  " [        R                  SSU/[        R
                  [        R
                  [        R
                  US9nUR                  5       u  pVU R                  US5        U R                  UR                  S5        g )	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)streamsc                     > ST ;   a  [         R                  " S5        ST ;   a  [         R                  " S5        ST ;   a  [         R                  " S5        g g )Nr   r   rp   r>   rq   rM   )r   rv   rP  s   r   preexec+CmdLineTest._test_no_stdio.<locals>.preexec  sA    '!7"7" #r   r]   r^   )r   rp   rq   
preexec_fnr   *   )	formatra   rt   rN   r`   rs   ru   rj   r   )r   rQ  r   rS  r   r$   r%   s    `     r   _test_no_stdioCmdLineTest._test_no_stdio  s    
 #F7F3 		 ^^T4.//????  ==?c"r*r   c                 (    U R                  S/5        g )Nr   rX  r   s    r   test_no_stdinCmdLineTest.test_no_stdin  s    WI&r   c                 (    U R                  S/5        g )Nrp   r[  r   s    r   test_no_stdoutCmdLineTest.test_no_stdout      XJ'r   c                 (    U R                  S/5        g )Nrq   r[  r   s    r   test_no_stderrCmdLineTest.test_no_stderr  ra  r   c                 *    U R                  / SQ5        g )N)r   rp   rq   r[  r   s    r   test_no_std_streamsCmdLineTest.test_no_std_streams  s    9:r   c                    U R                  S5        / n[        R                  R                  SS5      S:w  a"  [	        [        R                  5      nUS	 SUS'   O0 n[        S5       H8  nSn[        SU40 UD6u  pVnU R                  US	5        UR                  U5        M:     [        [        U5      5      nU R                  [        U5      S
SR                  U5      S9  Sn[        SUSS9u  pVnU R                  SU5        [        SUSS9u  pVnU R                  SU5        [        SUSS9u  pVnU R                  SU5        [        SSUSS9u  pVnU R                  SU5        g )Nz-RPYTHONHASHSEEDrandomr   
__cleanenv   zprint(hash("spam"))r^   r   r>   z83 runs produced an identical random hash  for "spam": {})msgz<import sys; print("random is", sys.flags.hash_randomization)r   ri  s   random is 1r   s   random is 0)r&   r   r   getr   ranger   rj   appendsortedsetassertGreaterr0   rW  r.   )r   hashesr   ir   r#   r$   r%   s           r   test_hash_randomization#CmdLineTest.test_hash_randomization  s]   t$::>>*H5Arzz"C $% #CCqA(D+D$>#>LBSR#MM#	 
 F$3v; 117 	 	A
 N'd2Fnc*'d8Lnc*'d3Gnc*'dDMnc*r   c                     [         R                  nU R                  [         R                  U5        [	        USSS9 n[        SUS9  [        SUS9  S S S 5        [        U5        g ! , (       d  f       N= f)Nwr   r&  z
import sys)filezdel sys.modules['__main__'])r   TESTFN
addCleanupunlinkopenprintr   )r   filenamescripts      r   test_del___main__CmdLineTest.test_del___main__C  s^     ##	(((3(C'2f,V,/f= 3 	" 32s   A%%
A3c                 n   [        SS5      u  pnU R                  SU5        U R                  UR                  5       R	                  S5      S5        U R                  SU5        [        SSS9u  pnU R                  SU5        U R                  UR                  5       R	                  S5      S5        U R                  SU5        [        SSSS9u  pnU R                  SU5        U R                  SU5        U R                  UR                  5       R	                  S5      S5        U R                  SU5        g )	Nr]   z-zs   Unknown option: -zr>   r   )withoutz-as   Unknown option: -a)r	   r.   rj   r-   countr!   rX   s       r   test_unknown_options CmdLineTest.test_unknown_optionsN  s   ,T48+S1)//0EFJc" -T4@+S1)//0EFJc",T4F+S1.4)//0EFJc"r   6Cannot run -I tests when PYTHON env vars are required.c           	         U R                  S5        U R                  S5        [        SSSSS9u  pnU R                  UR                  5       S5        [        R
                  " 5        n[        R                  R                  US5      n[        R                  R                  US	5      n[        US
SS9 nUR                  S5        S S S 5        [        US
SS9 nUR                  S5        UR                  S5        S S S 5        U R                  [        R                  [        R                  [        R                   SU/U[        R"                  S9  [        R                  " [        R                   SU/US9nU R                  UR                  5       S5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nrz   z-IEPsr^   z`from sys import flags as f; print(f.no_user_site, f.ignore_environment, f.isolated, f.safe_path)r   )dummyvars
   1 1 1 Truezuuid.pyzmain.pyrz  r   r{  z)raise RuntimeError('isolated mode test')
zimport uuid
zprint('ok')
r]   )cwdrq   )r  s   ok)r&   r   rj   stripr   temp_cwdr   r   r@   r  r   assertRaisesra   CalledProcessErrorrb   rN   r`   DEVNULL)r   r#   r$   r%   tmpdirfakemainfs           r   test_isolatedmodeCmdLineTest.test_isolatedmodea  sn    	t$w''dS 	
 	m4!V77<<	2D77<<	2DdC'2aDE 3dC'2a(( 3 j;;(55"~~tT:%/%7%7  9 ))3>>4*F.46CSYY[%0 "! 3222 "!s>   'AG3F G#F1;BG 
F.	*G1
F?	;G
Gc                     S HS  u  p[        UUUUS9n[        [        U5      5      nSU SU S3nU R                  US9   [	        SU40 UD6  S S S 5        MU     g ! , (       d  f       Mg  = f)N))r   r   )r   r>   )r   r>   )2rM   )PYTHONDEBUGPYTHONOPTIMIZEPYTHONDONTWRITEBYTECODEPYTHONVERBOSEz|import sys; sys.stderr.write(str(sys.flags)); sys.exit(not (
                    sys.flags.optimize == sys.flags.verbose == zM
                    and sys.flags.debug == sys.flags.dont_write_bytecode == z
                )))envar_valuer^   )r   intboolr   r   )r   valuer   env_varsexpected_boolr   s         r   test_sys_flags_setCmdLineTest.test_sys_flags_set}  s    IOE!$(-#	H  U,M@ AIz JMMZO \	  %0 t8x8 10!  J  10s    A
A*	c                 |   [        5       nSSSSSSUS 4/nU H~  u  p4nUc  SOSU S	3nS
U S3nSU/nUc  0 OSU0n	XAL a  SS/US S& OUb
  SSU 3/US S& U R                  X4S9   [        R                  " 5          [	        U0 U	D6  S S S 5        S S S 5        M     g ! , (       d  f       N= f! , (       d  f       M  = f)N)NNN)fooNr  )Nbarr  )r  r  r  )r  r   Nr  zis Nonez== ""z,import sys; sys.exit(not sys.pycache_prefix r   r^   PYTHONPYCACHEPREFIXr{   pycache_prefixr   zpycache_prefix=)envvalopt)objectr   r   r  r   )
r   NO_VALUEcasesr  r  r   
exp_clauser   rd   r   s
             r   test_set_pycache_prefix#CmdLineTest.test_set_pycache_prefix  s     8   !Hd#
 &+!F&.&6d8*A<NJA*QOD$<D"-BF,KC "23Ra OC5"9:RaV5'')$d2c2 * 65 &+ *) 65s$   $B,:BB,
B)%B,,
B;	T)check_exitcodexdevc                   [        [        R                  5      nUR                  SS 5        UR                  SS 5        UR                  SS 5        U(       a  [        R
                  SS/UQ7nO[        R
                  /UQ7n[        R                  " U[        R                  [        R                  SUS9nU(       a  U R                  UR                  SU5        UR                  R                  5       $ )	NPYTHONWARNINGSPYTHONDEVMODEPYTHONMALLOCr{   devTrp   rq   universal_newlinesr   r   )r   r   r   poprN   r`   ra   r   rs   r   rj   r   rp   r}   )r   r  r  rd   r   r   s         r   run_xdevCmdLineTest.run_xdev  s    2:: $'&%NND%7$7DNN*T*D~~d%/__%/%6%615"%	'
 T__a6{{!!##r   c                    SnU R                  SUSS9nU R                  US5        U R                  SU5      nU R                  US5        Sn[        R                  (       a  SnOS	nU R                  SU5      nU R                  X#5        U R                  S
SU5      nU R                  USU 35        U R                  SSU5      nU R                  USU 35        U R                  SSU5      nU R                  USU 35         SS KnSn[        R
                  " 5          U R                  SUSS9nS S S 5        [        R                  " 5       (       a  SnO[        R                  (       a  SnOSnU R                  X%5         SS K	nSnU R                  SU5      nU R                  US5        g ! , (       d  f       N= f! [         a     NIf = f! [         a     g f = f)N%import sys; print(sys.flags.dev_mode)r^   F)r  FalseTruez\import warnings; print(' '.join('%s::%s' % (f[0], f[2].__name__) for f in warnings.filters))zdefault::Warningzdefault::Warning default::DeprecationWarning ignore::DeprecationWarning ignore::PendingDeprecationWarning ignore::ImportWarning ignore::ResourceWarningz-bzdefault::BytesWarning -bbzerror::BytesWarning z-Werrorzerror::Warning r   Limport _testinternalcapi; print(_testinternalcapi.pymem_getallocatorsname()))r  pymalloc_debugmimalloc_debugmalloc_debugz5import faulthandler; print(faulthandler.is_enabled()))
r  rj   r   r~   _testinternalcapiSuppressCrashReportwith_pymallocPy_GIL_DISABLEDImportErrorfaulthandler)r   r   r$   expected_filtersr  
alloc_namer  s          r   	test_xdevCmdLineTest.test_xdev  s    7mmD$Um3g&mmD$'f%> 1!: mmD$'/mmD$- 67G6HIJmmE4. 45E4FGHmmItT20@/ABC	.$ bD,,.mmD$umE /$$&&-
((-
+
S-	* KD--d+CS&)% /.	  		"  		s0   F< F+ G +
F9<
G	G	
GGc                    U(       a  SnOSnUS-  n[         R                  SUSSU4n[        [        R                  5      nUR                  SS 5        X&S'   [        R                  " U[        R                  [        R                  S	US
9nU R                  UR                  SU5        UR                  R                  5       $ )Nzimport sys; from test.support.import_helper import import_fresh_module; warnings = import_fresh_module('warnings', blocked=['_warnings']); zimport sys, warnings; zKprint(' '.join('%s::%s' % (f[0], f[2].__name__) for f in warnings.filters))z-Wr  r^   r  r  Tr  r   )rN   r`   r   r   r   r  ra   r   rs   r   rj   r   rp   r}   )r   cmdline_optionenvvaruse_pywarningr   rd   r   r   s           r   check_warnings_filters"CmdLineTest.check_warnings_filters  s    ZD ,D > 	?neT4H2::& &~~d%/__%/%6%615"%	'
 	!T2{{!!##r   c                     Sn[         R                  (       d  US-  nU R                  SS5      nU R                  X!5        U R                  SSSS9nU R                  X!5        g )Nz9error::BytesWarning once::UserWarning always::UserWarningz default::DeprecationWarning ignore::DeprecationWarning ignore::PendingDeprecationWarning ignore::ImportWarning ignore::ResourceWarningzonce::UserWarningzalways::UserWarningT)r  )r   r~   r  rj   )r   r  r$   s      r   test_warnings_filter_precedence+CmdLineTest.test_warnings_filter_precedence  sz    2  "; < ))*=*?A/))*=*?8< * > 	/r   c                    Sn[        [        R                  5      nUR                  SS 5        Ub  XS'   OUR                  SS 5        [        R
                  SU4n[        R                  " U[        R                  [        R                  SUS9nU R                  UR                  R                  5       U5        U R                  UR                  S5        g )Nr  r  r  r^   Tr  r   )r   r   r   r  rN   r`   ra   r   rs   r   rj   rp   r}   r   )r   env_varnamer   r   rd   r   s          r   check_pythonmallocCmdLineTest.check_pythonmalloc'  s    ]2::&")GGND)d+~~d%/__%/%6%615"%	'
 	++-t4!,r   c                    [         R                  (       + n[         R                  " 5       n[         R                  " 5       n[         R                  (       a  [         R                  (       a  SOSnSnO>U(       a  [         R                  (       a  SOSnSnO[         R                  (       a  SOSnSnS U4SU4/nU(       a  UR                  SS	/5        U(       a  UR                  S
5        U(       a  UR                  S5        U H.  u  pxU R                  XxS9   U R                  Xx5        S S S 5        M0     g ! , (       d  f       MB  = f)Nr  mimallocr  pymallocr  mallocdebug)r  r  )r  r  ))r  r  )r  r  ))r  r  )r  r  )r  r  )r   r  r  with_mimallocr~   rr   r   r  )	r   r  r  r  default_namedefault_name_debugr   r  r  s	            r   test_pythonmallocCmdLineTest.test_pythonmalloc8  s    ,,,((*((*""/6/?/?+ZL!1/6/?/?+ZL!1-4-=-=>8L!/ < ()
 LL$0  LL   LL  
 #MGg9''6 :9 #99s   D66
E	c                 >   Sn[        [        R                  5      nUR                  SS 5        [        R
                  SU4n[        R                  " U[        R                  SUS9nU R                  UR                  R                  5       S5        U R                  UR                  SU5        SUS'   [        R                  " U[        R                  SUS9nU R                  UR                  R                  5       S	5        U R                  UR                  SU5        g )
Nr  r  r^   T)rp   r  r   r  r   r   r  )r   r   r   r  rN   r`   ra   r   rs   rj   rp   r}   r   )r   r   r   rd   r   s        r   test_pythondevmode_env"CmdLineTest.test_pythondevmode_env`  s    62::&d+~~d:??153@++-w7!T2"O~~d:??153@++-v6!T2r   c           
         SS/n[         R                  (       a  UR                  / SQ5        OUR                  SS/5        Sn[        [        R
                  5      nU H  u  pEpgU R                  XtUS9   UR                  SS 5        Ub  XCS'   / nUb  S	S
U 3/n[        R                  " [        R                  /UQSPUP[        R                  [        R                  SUS9n	U R                  U	R                  SU	5        U R                  U	R                  R!                  5       U5        U R                  U	R"                  S5        S S S 5        M     g ! , (       d  f       GM  = f)N)r   Nr   zPYTHON_GIL=1)Nr   r   z-X gil=1))NNNonezno options set)r   Nr   zPYTHON_GIL=0)r   r   r   z-X gil=0 overrides PYTHON_GIL=1)Nr   r   z-X gil=0)NNr   z$-X gil=0 (unsupported by this build))r   Nr   z(PYTHON_GIL=0 (unsupported by this build)z import sys; print(sys.flags.gil))r   r  
PYTHON_GILr{   zgil=r^   T)rp   rq   r   r   r   r   )r   r  rr   r   r   r   r   r  ra   r   rN   r`   rs   rj   r   rp   r}   rq   )
r   r  r   r   r   r  r   rm  
extra_argsr   s
             r   test_python_gilCmdLineTest.test_python_gilr  s@    -(
 ""LL LLMP 2rzz"',#Chc4L$/?,/L)
?"&$se!5J!~~s~~&O
&OD&O$&O-7__-7__+/W>   !T:  !3!3!5x@  b1 54 (-44s   4CE
E#	z!bpo-32457 only applies on Windowsc                 n   [         R                  SS4n[        R                  R	                  [         R                  5      u  p#US-   U-   n[
        R                  " U[
        R                  US9nU R                  UR                  SU5        U R                  UR                  R                  5       S5        g )Nr^   zprint(0)z\.\.\.\)rp   r`   r      0)rN   r`   r   r   splitra   r   rs   rj   r   rp   r  )r   rd   prefixexer`   r   s         r   test_argv0_normalization$CmdLineTest.test_argv0_normalization  s     ~~tZ/ggmmCNN3m+c1
~~d:??)35!T2**,d3r   c                 6   [         R                  SS/n[        R                  " U[        R                  [        R                  SS9nSnU R                  UR                  R                  U5      UR                  5        U R                  UR                  S5        g )Nrz   z--unknown-optionT)rp   rq   r   z'unknown option --unknown-option
usage: r   )
rN   r`   ra   r   rs   r   rq   rR   assertNotEqualr   )r   rd   r   err_msgs       r   test_parsing_errorCmdLineTest.test_parsing_error  sp    &89~~d%/__%/__#') =..w7EDOOQ/r   c                    Sn[        SSSU5        [        SSSU5        [        SSSU5        [        SSSUSS9  [        SUS	S9  [        SUS
S9  [        SU5      nU R                  n[        R                  " 5       nU R                  U" U5      XD45        [        SSSU5      nU R                  U" U5      S5        [        SSSU5      nU R                  U" U5      S5        [        SSSU5      nU R                  U" U5      S5        [        SUSS9nU R                  U" U5      S5        [        SUSS9nU R                  U" U5      S5        [        SSSUSS9nU R                  U" U5      S5        g )NzMimport sys; print(sys.flags.int_max_str_digits, sys.get_int_max_str_digits())r{   int_max_str_digitsr^   zint_max_str_digits=foozint_max_str_digits=1004000)PYTHONINTMAXSTRDIGITSr  100zint_max_str_digits=0)r   r   zint_max_str_digits=4000)  r  zint_max_str_digits=100000)順 r  r   zint_max_str_digits=6000)p  r	  )r	   r   res2intrN   get_int_max_str_digitsrj   )r   r   r   r
  current_maxs        r   test_int_max_str_digits#CmdLineTest.test_int_max_str_digits  s}   ^d$8$Ed$<dDId$<dDId$8$4:	< 	dDFdDFtT*,,002'ABt%;T4Hv.t%>dK|4t%@$M'78tTEv.tTH|4+T4"(
 	|4r   c                     Sn[        SSSU5      nU R                  U R                  U5      S5        [        SUSS9nU R                  U R                  U5      S5        g )	N8import os; print(os.cpu_count(), os.process_cpu_count())r{   zcpu_count=4321r^   )  r  1234PYTHON_CPU_COUNT)  r  )r   rj   r
  )r   r   r   s      r   test_cpu_countCmdLineTest.test_cpu_count  sX    It%5tTBc*L9tTFCc*L9r   c                 
   Sn[        SSSU5      nU R                  U R                  U5      [        R                  " 5       [        R
                  " 5       45        [        SSSUSS9nU R                  U R                  U5      [        R                  " 5       [        R
                  " 5       45        [        SUSS9nU R                  U R                  U5      [        R                  " 5       [        R
                  " 5       45        g )Nr  r{   zcpu_count=defaultr^   r  r  default)r   rj   r
  r   	cpu_countprocess_cpu_count)r   r   r   ess       r   test_cpu_count_default"CmdLineTest.test_cpu_count_default  s    It%8$Ec*R\\^R=Q=Q=S,TUt%8$W]^c*R\\^R=Q=Q=S,TUdD9Ec*R\\^R=Q=Q=S,TUr   c                     UR                   R                  5       R                  S5      n[        S UR	                  5        5       5      $ )Nr   c              3   8   #    U  H  n[        U5      v   M     g 7fr   )r  ).0rv  s     r   	<genexpr>&CmdLineTest.res2int.<locals>.<genexpr>  s     1[SVV[s   )r$   r  rA   tupler  )r   r   r$   s      r   r
  CmdLineTest.res2int  s3    ggmmo$$W-1SYY[111r    N)F)Q__name__
__module____qualname____firstlineno__r   r&   r   cpython_onlyr3   r8   r;   rB   rF   rJ   rU   rY   r   skipIfr
   rk   r   r   r   r   r   r   r   
skipUnlessr   r   r   r   rN   r;  r   r   
is_androidr   r   r  r  r  flags	safe_pathr   r(  r1  r5  r8  r=  rC  rH  rK  r   r  rX  r\  r_  rc  rf  rw  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r
  __static_attributes__r&  r   r   r   r      s   % ( ( * * & & 	, 	,&% 5 51 __57MO:O: '> D D 	D 	D
4	<I' ..0LM( N( ..0LMF NF __S\\W,79Q9QB __S\\W,79(G9(GT #,,(2 #""%LN*N*(/L 52 __SYY((>@%@%")$
4-"## __RWW')EF__S\\Y.IK+K G+0'((;#+J	# # #$ __57MO1O149*34 .2 $& ;* ;*z$*0*-" %7 %7N3$)2V 0<>4>4 0 05B:V2r   r   r  c                   ,    \ rS rSrS rS rS rS rSrg)IgnoreEnvironmentTesti  c                 @    SR                  U5      n[        SSU40 UD6$ )Nz@import sys; sys.stderr.write(str(sys.flags)); sys.exit(not ({}))r]   r^   )rW  r   )r   	predicater  r   s       r   run_ignoring_vars'IgnoreEnvironmentTest.run_ignoring_vars  s*    
 RXXYbcdD=H==r   c                 F    SnU R                  SR                  U5      US9  g )Nshould_be_ignoredz'{}' not in sys.pathr  )r6  rW  )r   r   s     r   test_ignore_PYTHONPATH,IgnoreEnvironmentTest.test_ignore_PYTHONPATH  s+    "5<<TB*. 	 	0r   c                 $    U R                  SSS9  g )Nz!sys.flags.hash_randomization == 1r   rn  r6  r   s    r   test_ignore_PYTHONHASHSEED0IgnoreEnvironmentTest.test_ignore_PYTHONHASHSEED  s    B.1 	 	3r   c           	      0    SnU R                  USSSSSS9  g )Nz
            (sys.flags.debug == sys.flags.optimize ==
             sys.flags.dont_write_bytecode ==
             sys.flags.verbose == sys.flags.safe_path == 0)
        r   )r  r  r  r  PYTHONSAFEPATHr=  )r   expected_outcomes     r   test_sys_flags_not_set,IgnoreEnvironmentTest.test_sys_flags_not_set  s1    
 	$' 	 	
r   r&  N)	r'  r(  r)  r*  r6  r:  r>  rC  r1  r&  r   r   r3  r3    s    >0
3
r   r3  c                   0    \ rS rSr\S 5       rS rS rSrg)SyntaxErrorTestsi  c                 2   [         R                  " [        R                  S/U[         R                  [         R                  S9nU R                  UR                  S5        U R                  UR                  S 5        U R                  SUR                  5        g )N-)inputrp   rq   r   s   
SyntaxError)	ra   r   rN   r`   rs   r  r   rq   r.   )r   r   r   s      r   check_stringSyntaxErrorTests.check_string  sf    ~~s~~s34%/__Z__NDOOQ/DKK.&4r   c                 &    U R                  S5        g )Ns   (1+2+3rJ  r   s    r   test_tokenizer_error_with_stdin0SyntaxErrorTests.test_tokenizer_error_with_stdin  s    )$r   c                 &    U R                  S5        g )Ns   '\u1f'rM  r   s    r   *test_decoding_error_at_the_end_of_the_line;SyntaxErrorTests.test_decoding_error_at_the_end_of_the_line  s    *%r   r&  N)	r'  r(  r)  r*  r   rJ  rN  rQ  r1  r&  r   r   rF  rF    s    5 5%&r   rF  c                  .    [         R                  " 5         g r   )r   reap_childrenr&  r   r   tearDownModulerU     s    r   __main__)r   ra   rN   r,  r   r   r   r   test.supportr   r   test.support.script_helperr   r   r   r	   r
   has_subprocess_supportSkipTestr   TestCaser   r,  r3  rF  rU  r'  r  r&  r   r   <module>r\     s   
 
  
     " , 
 %%


=
>>I2(## I2X 
13IK!
H-- !
K!
H&x(( &  zMMO r   