
    /hh}                     h   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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JrJr  S SKJrJrJrJrJrJrJrJr  \R6                  r/ SQrSr\4S jr\S4S	 jr\R@                   " S
 S\RB                  5      5       r"S r#\$S:X  a  \RJ                  " 5         gg)    N)support)import_helperis_apple	os_helper)make_pkgmake_scriptmake_zip_pkgmake_zip_scriptassert_python_okassert_python_failurespawn_pythonkill_python)test1test2test3a  # Script may be run with optimisation enabled, so don't rely on assert
# statements being executed
def assertEqual(lhs, rhs):
    if lhs != rhs:
        raise AssertionError('%r != %r' % (lhs, rhs))
def assertIdentical(lhs, rhs):
    if lhs is not rhs:
        raise AssertionError('%r is not %r' % (lhs, rhs))
# Check basic code execution
result = ['Top level assignment']
def f():
    result.append('Lower level reference')
f()
assertEqual(result, ['Top level assignment', 'Lower level reference'])
# Check population of magic variables
assertEqual(__name__, '__main__')
from importlib.machinery import BuiltinImporter
_loader = __loader__ if __loader__ is BuiltinImporter else type(__loader__)
print('__loader__==%a' % _loader)
print('__file__==%a' % __file__)
print('__cached__==%a' % __cached__)
print('__package__==%r' % __package__)
# Check PEP 451 details
import os.path
if __package__ is not None:
    print('__main__ was located through the import system')
    assertIdentical(__spec__.loader, __loader__)
    expected_spec_name = os.path.splitext(os.path.basename(__file__))[0]
    if __package__:
        expected_spec_name = __package__ + "." + expected_spec_name
    assertEqual(__spec__.name, expected_spec_name)
    assertEqual(__spec__.parent, __package__)
    assertIdentical(__spec__.submodule_search_locations, None)
    assertEqual(__spec__.origin, __file__)
    if __spec__.cached is not None:
        assertEqual(__spec__.cached, __cached__)
# Check the sys module
import sys
assertIdentical(globals(), sys.modules[__name__].__dict__)
if __spec__ is not None:
    # XXX: We're not currently making __main__ available under its real name
    pass # assertIdentical(globals(), sys.modules[__spec__.name].__dict__)
from test import test_cmd_line_script
example_args_list = test_cmd_line_script.example_args
assertEqual(sys.argv[1:], example_args_list)
print('sys.argv[0]==%a' % sys.argv[0])
print('sys.path[0]==%a' % sys.path[0])
# Check the working directory
import os
print('cwd==%a' % os.getcwd())
c                 H    [        XU5      n[        R                  " 5         U$ N)r   	importlibinvalidate_caches)
script_dirscript_basenamesource	to_returns       B/opt/python-3.13.8/usr/lib/python3.13/test/test_cmd_line_script.py_make_test_scriptr   O   s     J@I!       c                 J    [        XX#XE5      n[        R                  " 5         U$ r   )r	   r   r   )zip_dirzip_basenamepkg_namer   r   depthr   s          r   _make_test_zip_pkgr#   T   s%    WH#,I!r   c                      \ rS rSr SDS jrSS.S jrSS.S jrS rS r\	R                  SES	 j5       rSES
 jrSES jrS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S% r'\	R                  S& 5       r(S' r)S( r*S) r+S* r,S+ r-S, r.S- r/S. r0S/ r1S0 r2S1 r3S2 r4S3 r5S4 r6S5 r7S6 r8S7 r9S8 r:S9 r;S: r<S; r=\>R~                  " \@R                  R                  S<5      S=5      \>R                  " \DR                  R                  S>5      =(       a9    \@R                  " S?5      R                  \@R                  " S@5      R                  :H  SA5      SB 5       5       rISCrJg)FCmdLineTest\   Nc
                 8   [         S:  a"  [        SU-  5        [        [        U5      5        U R                  US5        SU-  n
SU-  nSU-  nSU-  nSU-  nU	c  [        R
                  " 5       n	S	U	-  n[         S:  a7  [        S
5        [        U5        [        U5        [        U5        [        U5        U R                  U
R                  S5      U5        U R                  UR                  S5      U5        U R                  UR                  S5      U5        U R                  UR                  S5      U5        [        R                  R                  (       d!  U R                  UR                  S5      U5        U R                  UR                  S5      U5        g )Nr   zOutput from test script %r:r   z__loader__==%az__file__==%az__package__==%rzsys.argv[0]==%azsys.path[0]==%azcwd==%azExpected output:utf-8)verboseprintreprassertEqualosgetcwdassertInencodesysflags	safe_path)selfscript_name	exit_codedataexpected_fileexpected_argv0expected_path0expected_packageexpected_loaderexpected_cwdprinted_loaderprinted_fileprinted_packageprinted_argv0printed_path0printed_cwds                   r   _check_outputCmdLineTest._check_output^   sV    Q;/+=>$t*A&)O;%5+.>>)N:)N:99;L,.Q;$%,/"- +n++G4d;l))'2D9o,,W5t<m**73T:yy""MM-..w7>k((148r   cwdc                    [        U[        5      (       a  U/n/ [        R                  " 5       QUQUQ[        Qn
[        U
SUS.U	D6u  pnU R                  XX-   UX4XVU5	        g )NF
__isolated__cwd)
isinstancestrr   !optim_args_from_interpreter_flagsexample_argsr   rD   )r4   script_exec_argsr8   r9   r:   r;   r<   rG   cmd_line_switchesenv_varsrun_argsrcouterrs                 r   _check_scriptCmdLineTest._check_script}   s     &,, 01JW>>@ J&J)9J<HJ'%s
6>
 	+M)+c	Cr   c                0   [        U[        5      (       a  U4nO[        U5      nXA-   n[        USUS.UD6u  pxn	[        S:  a2  [        SU<S 35        [        [        U	5      5        [        SU-  5        U R                  UR                  S5      U	5        g )NFrI   r   zOutput from test script  zExpected output: %rr(   )	rL   rM   tupler   r)   r*   r+   r/   r0   )
r4   rP   expected_msgrG   rQ   rR   rS   rT   rU   rV   s
             r   _check_import_errorCmdLineTest._check_import_error   s    &,, 02$%56$7,%s
6>
 Q;,-=,Aq,ABC$s)',67l))'2C8r   c                     [        SS5      u  pn[        [        R                  R                  5      R                  S5      nU R                  XB5        g )N-czprint(__loader__)r(   )r   r+   r   	machineryBuiltinImporterr0   r/   )r4   rT   rU   rV   expecteds        r   test_dash_c_loaderCmdLineTest.test_dash_c_loader   s@    '.AB	++;;<CCGLh$r   c                 @   [        5       n UR                  R                  S5        UR                  R                  5         [	        U5      n[        [        R                  R                  5      R                  S5      nU R                  X25        g ! [	        U5      nf = f)Ns   print(__loader__)
r(   )r   stdinwriteflushr   r+   r   ra   rb   r0   r/   )r4   prU   rc   s       r   test_stdin_loaderCmdLineTest.test_stdin_loader   sq     N	!GGMM01GGMMOa.C	++;;<CCGLh$ a.Cs   5B Bc              #     #    U(       a%  [        S[        R                  S9nUR                  nO$[        S[        R                  S9nUR
                  n  UR                  S5      nUS:X  a  OUR                  5         M*  Uv   [        U5        UR                  5         g ! [        U5        UR                  5         f = f7f)Nz-i)stderr   s   >>> )
r   
subprocessPIPErn   STDOUTstdoutreadreadliner   close)r4   separate_stderrrj   rn   r7   s        r   interactive_pythonCmdLineTest.interactive_python   s     T*//:AXXFT**;*;<AXXF
	{{1~7?!	 
 GNLLN NLLNs   AB?/B B?B<<B?c                 4   U R                  U5       nUR                  R                  S5        UR                  R                  5         U R	                  SUR
                  R                  5       R                  5       5        S S S 5        g ! , (       d  f       g = f)Ns   print('foo')
s   foo)rx   rg   rh   ri   r,   rs   ru   strip)r4   rw   rj   s      r   check_repl_stdout_flush#CmdLineTest.check_repl_stdout_flush   sb    $$_5GGMM+,GGMMOVQXX%6%6%8%>%>%@A 655s   A.B		
Bc                 B   U R                  U5       nUR                  R                  S5        UR                  R                  5         U(       a  UR                  OUR
                  nU R                  SUR                  5       5        U R                  SUR                  5       5        U R                  SUR                  5       5        U R                  SUR                  5       5        U R                  SUR                  5       5        S S S 5        g ! , (       d  f       g = f)Ns   1/0
s
   Traceback s   File "<stdin>"s   1/0       ~^~s   ZeroDivisionError)rx   rg   rh   ri   rn   rs   r/   ru   )r4   rw   rj   rn   s       r   check_repl_stderr_flush#CmdLineTest.check_repl_stderr_flush   s    $$_5GGMM(#GGMMO!0QXXahhFMM-):;MM+V__->?MM&&//"34MM*foo&78MM.0AB 655s   C5D
Dc                 $    U R                  5         g r   r|   r4   s    r   test_repl_stdout_flush"CmdLineTest.test_repl_stdout_flush       $$&r   c                 &    U R                  S5        g NTr   r   s    r   &test_repl_stdout_flush_separate_stderr2CmdLineTest.test_repl_stdout_flush_separate_stderr       $$T*r   c                 $    U R                  5         g r   r   r   s    r   test_repl_stderr_flush"CmdLineTest.test_repl_stderr_flush   r   r   c                 &    U R                  S5        g r   r   r   s    r   &test_repl_stderr_flush_separate_stderr2CmdLineTest.test_repl_stderr_flush_separate_stderr   r   r   c                     [         R                  " 5        n[        US5      nU R                  X"UUS [        R
                  R                  US9  S S S 5        g ! , (       d  f       g = f)Nscript)r=   r   temp_dirr   rW   r   ra   SourceFileLoaderr4   r   r5   s      r   test_basic_scriptCmdLineTest.test_basic_script   sV    !Z+JAK{)4(22CC,6  8 "!!s   9A
A&c           	      p   [         R                  " 5        nU R                  [        R                  R                  U5      U5        [        US5      n[        R                  R                  U5      nU R                  X2UUS [        R                  R                  5        S S S 5        g ! , (       d  f       g = f)Nr   )r   temp_cwd
assertTruer-   pathisabsr   basenamerW   r   ra   r   )r4   r   r5   relative_names       r   test_script_abspathCmdLineTest.test_script_abspath   s     !ZOOBGGMM*5zB+JAKGG,,[9M}=)4(22CCE "!!s   BB''
B5c           	      T   [         R                  " 5        n[        US5      n[        R                  " USS9  [
        R                  " U5        [        R                  " U5      nU R                  X3X1S [        R                  R                  5        S S S 5        g ! , (       d  f       g = f)Nr   Tdoraiser   r   r   
py_compilecompiler-   remover   make_legacy_pycrW   r   ra   SourcelessFileLoaderr4   r   r5   pyc_files       r   test_script_compiled CmdLineTest.test_script_compiled   sy    !Z+JAK{D9IIk"$44[AHx'T(22GGI "!!s   A:B
B'c           	          [         R                  " 5        n[        US5      nU R                  XUUS[        R
                  R                  5        S S S 5        g ! , (       d  f       g = f)N__main__rZ   r   r   s      r   test_directoryCmdLineTest.test_directory   sO    !Z+J
CKz
)2(22CCE "!!s   :A
A'c           	      V   [         R                  " 5        n[        US5      n[        R                  " USS9  [
        R                  " U5        [        R                  " U5      nU R                  XUUS[        R                  R                  5        S S S 5        g ! , (       d  f       g = f)Nr   Tr   rZ   r   r   s       r   test_directory_compiled#CmdLineTest.test_directory_compiled  s{    !Z+J
CK{D9IIk"$44[AHzZ)2(22GGI "!!s   A;B
B(c                     [         R                  " 5        nSU-  nU R                  X5        S S S 5        g ! , (       d  f       g = f)N"can't find '__main__' module in %r)r   r   r]   )r4   r   msgs      r   test_directory_error CmdLineTest.test_directory_error  s4    !Z6CC$$Z5 "!!s	   6
Ac           	          [         R                  " 5        n[        US5      n[        USU5      u  p4U R	                  X4X3S[
        R                  5        S S S 5        g ! , (       d  f       g = f)Nr   test_ziprZ   )r   r   r   r
   rW   	zipimportzipimporter)r4   r   r5   zip_namerun_names        r   test_zipfileCmdLineTest.test_zipfile  sV    !Z+J
CK!0Z!UHx8r(446 "!!s   >A
A+c           	      8   [         R                  " 5        n[        US5      n[        R                  " US[        R
                  R                  S9n[        USU5      u  pEU R                  XEXDS[        R                  5        S S S 5        g ! , (       d  f       g = fNr   T)r   invalidation_moder   rZ   )r   r   r   r   r   PycInvalidationMode	TIMESTAMPr
   rW   r   r   r4   r   r5   compiled_namer   r   s         r   test_zipfile_compiled_timestamp+CmdLineTest.test_zipfile_compiled_timestamp  s}    !Z+J
CK&..T","@"@"J"JLM "1Z!WHx8r(446 "!!   A,B
Bc           	      8   [         R                  " 5        n[        US5      n[        R                  " US[        R
                  R                  S9n[        USU5      u  pEU R                  XEXDS[        R                  5        S S S 5        g ! , (       d  f       g = fr   )r   r   r   r   r   r   CHECKED_HASHr
   rW   r   r   r   s         r   "test_zipfile_compiled_checked_hash.CmdLineTest.test_zipfile_compiled_checked_hash$  s}    !Z+J
CK&..T","@"@"M"MOM "1Z!WHx8r(446 "!!r   c           	      8   [         R                  " 5        n[        US5      n[        R                  " US[        R
                  R                  S9n[        USU5      u  pEU R                  XEXDS[        R                  5        S S S 5        g ! , (       d  f       g = fr   )r   r   r   r   r   r   UNCHECKED_HASHr
   rW   r   r   r   s         r   $test_zipfile_compiled_unchecked_hash0CmdLineTest.test_zipfile_compiled_unchecked_hash.  s}    !Z+J
CK&..T","@"@"O"OQM "1Z!WHx8r(446 "!!r   c                     [         R                  " 5        n[        US5      n[        USU5      u  p4SU-  nU R	                  X55        S S S 5        g ! , (       d  f       g = f)Nnot_mainr   r   )r   r   r   r
   r]   )r4   r   r5   r   r   r   s         r   test_zipfile_errorCmdLineTest.test_zipfile_error8  sQ    !Z+J
CK!0Z!UH6AC$$X3	 "!!s   2A
Ac                 ,   [         R                  " 5        n[        R                  R	                  US5      n[        U5        [        US5      nU R                  SS/X3US[        R                  R                  US9  S S S 5        g ! , (       d  f       g = f)Ntest_pkgr   -mtest_pkg.scriptrF   r   r   r-   r   joinr   r   rW   r   ra   r   r4   r   pkg_dirr5   s       r   test_module_in_package"CmdLineTest.test_module_in_package?  sx    !Zggll:z:GW+GX>K&78+):(22CC#-  /	 "!!   A&B
Bc                     [         R                  " 5        n[        USSS5      u  p#U R                  SS/X3US[        R
                  X!S9  S S S 5        g ! , (       d  f       g = f)Nr   r   r   r   r   
PYTHONPATHrG   r   r   r#   rW   r   r   r4   r   r   r   s       r   !test_module_in_package_in_zipfile-CmdLineTest.test_module_in_package_in_zipfileI  s^    !Z!3J
JX`!aH&78():y7L7L*2  D "!!s   5A
A"c                     [         R                  " 5        n[        USSSSS9u  p#U R                  SS/X3US[        R
                  X!S	9  S S S 5        g ! , (       d  f       g = f)
Nr   r   r      )r"   r   ztest_pkg.test_pkg.scriptztest_pkg.test_pkgr   r   r   s       r   $test_module_in_subpackage_in_zipfile0CmdLineTest.test_module_in_subpackage_in_zipfileP  sc    !Z!3J
JX`hi!jH&@A8)+>(44*2  D "!!s   4A
A!c                 ,   [         R                  " 5        n[        R                  R	                  US5      n[        U5        [        US5      nU R                  SS/UX1S[        R                  R                  US9  S S S 5        g ! , (       d  f       g = f)Nr   r   r   rF   r   r   s       r   test_packageCmdLineTest.test_packageX  sw    !Zggll:z:GW+GZ@Kj1;*
(22CC#-  /	 "!!r   c                    [         R                  " 5        n[        R                  R	                  US5      n[        U5        [        US5      n[        R                  " USS9n[        R                  " U5        [        R                  " U5      nU R                  SS/UXQS[        R                  R                  US9  S S S 5        g ! , (       d  f       g = f)Nr   r   Tr   r   rF   )r   r   r-   r   r   r   r   r   r   r   r   r   rW   r   ra   r   )r4   r   r   r5   r   r   s         r   test_package_compiled!CmdLineTest.test_package_compiledb  s    !Zggll:z:GW+GZ@K&..{DIMIIk"$44[AHj18'Z(22GG#-  / "!!s   B'C
Cc                     [         R                  " 5        n[        R                  R	                  US5      n[        U5        SnU R                  SS/X1S9  S S S 5        g ! , (       d  f       g = f)Nr   z7'test_pkg' is a package and cannot be directly executedr   rF   r   r   r-   r   r   r   r]   )r4   r   r   r   s       r   test_package_errorCmdLineTest.test_package_erroro  sW    !Zggll:z:GW*C$$dJ%7$M "!!s   A A
A-c                 6   [         R                  " 5        n[        R                  R	                  US5      n[        U5        [        R                  R	                  US5      n[        U5        SnU R                  SS/XAS9  S S S 5        g ! , (       d  f       g = f)Nr   r   z^Cannot use package as __main__ module; 'test_pkg' is a package and cannot be directly executedr   rF   r   )r4   r   r   main_dirr   s        r   test_package_recursion"CmdLineTest.test_package_recursionw  su    !Zggll:z:GWww||GZ8HX*C $$dJ%7$M "!!s   A+B


Bc                 @   [         R                  " 5        n[         R                  " US9   [        R                  R                  US5      n[        US5        [        US5      n[        SS/[        Q7SS06u  pEn[        S	:  a  [        [        U5      5        S
S-  nU R                  UR                  S5      U5        U R                  X4UX3US[         R"                  R$                  5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr   r   z1import sys; print('init_argv0==%r' % sys.argv[0])r   r   r   rJ   Fr   zinit_argv0==%rr(   )r   r   
change_cwdr-   r   r   r   r   r   rO   r)   r*   r+   r/   r0   rD   r   ra   r   )r4   r   r   r5   rT   rU   rV   rc   s           r   test_issue8202CmdLineTest.test_issue8202  s     !Z%%:6'',,z:>"UV/B/6Gi,ichiQ;$s)$+d2hoog6<"";C#.Z#,#6#6#G#GI 7 "!66 "!s#   DCC>-D>
D	D
Dc           	         [         R                  " 5        n[         R                  " US9   [        SSSS9 nUR	                  S5        [        SSSS	9u  p4n[        S
:  a  [        [        U5      5        SS-  nU R                  UR                  S5      U5        S S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = f)Nr  r`   wr(   encodingr7   z2import sys; print("sys.path[0]==%r" % sys.path[0])F)rJ   r   zsys.path[0]==%rrZ   )r   r   r  openrh   r   r)   r*   r+   r/   r0   )r4   r   frT   rU   rV   rc   s          r   "test_issue8202_dash_c_file_ignored.CmdLineTest.test_issue8202_dash_c_file_ignored  s     !Z%%:6$g6!GGFO#3DL#($*LBS {d3i(025HMM(//'":C@ 7 7 "!66 76 "!s:   CCA$B4C#C4
C>C
C	C
C$c                    [         R                  " 5        n[        US5      n[         R                  " US9   [	        SSSS9 nUR                  S5        [        SS/[        Q7SS	06u  pEnU R                  X$UX"US
[        R                  R                  5        S S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = f)Notherr  r   r  r(   r  r7   rJ   FrZ   )r   r   r   r  r	  rh   r   rO   rD   r   ra   r   )r4   r   r5   r
  rT   rU   rV   s          r   "test_issue8202_dash_m_file_ignored.CmdLineTest.test_issue8202_dash_m_file_ignored  s     !Z+J@K%%:6$g6!GGFO#3D' $FL $F?D$FLBS&&{&1
B&/&9&9&J&JL	 7 7 "! 76 76 "!s;   !CCAB3C"C3
C=C
C	C
C#c                 Z   [         R                  " 5        n[        R                  R	                  US5      n[        USSSS9 nUR                  S5        UR                  S5        [        S5       H  nUR                  S	5        M     UR                  S5        S S S 5        [         R                  " US
9   [        U5      u  pVnS S S 5        U R                  SW5        U R                  SW5        S S S 5        g ! , (       d  f       Nf= f! , (       d  f       NL= f! , (       d  f       g = f)Nzissue20884.pyr  latin1
)r  newlinez#coding: iso-8859-1
z"""
   zQxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
r  r   )r   r   r-   r   r   r	  rh   ranger  r   r,   )r4   r   r5   r
  _rT   rU   rV   s           r   test_issue20884CmdLineTest.test_issue20884  s     !Z'',,z?CKk34HA/0 rAGGM* #  I %%:6/< 7S#&S#& "!HH 76 "!s<   -DAC:D6D,D:
D	D
D	D
D*c              '   &  #    [         R                  " 5        n[         R                  " US9   [        R                  R                  US5      n[        U/UQ76   Uv   S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f7f)Nr  r   )r   r   r  r-   r   r   r   )r4   argsr   r   s       r   setup_test_pkgCmdLineTest.setup_test_pkg  sc     !Z$$*5ggll:z:GW$t$M 6 "!55 "!s3   BB 1A/B &	B/
A=	9B  
B
Bc                     [        S/UQ7SS06u  p#n[        S:  a  [        [        U5      5        U R	                  US5        U$ )Nr   rJ   Fr   )r   r)   r*   r+   r,   )r4   r  rT   rU   rV   s        r   check_dash_m_failure CmdLineTest.check_dash_m_failure  sB    ,TKDKUKQ;$s)Q
r   c                     U R                  5        n[        USS5      nU R                  " S/[        Q76 nU R	                  SU5        S S S 5        g ! , (       d  f       g = f)Nr  z+if __name__ == '__main__': raise ValueErrorztest_pkg.others
   ValueError)r  r   r  rO   r/   )r4   r   r5   rV   s       r   test_dash_m_error_code_is_one)CmdLineTest.test_dash_m_error_code_is_one  sT       "g+GW,Y[K++,<L|LCMM--	 #""s   7A
Ac                     SnU Hc  u  p#U R                  U5         [        SU5      u  pEnU R                  US5        U R                  Xc5        U R	                  SU5        S S S 5        Me     g ! , (       d  f       Mw  = f)N))builtinss   No code object available)z
builtins.xs=   Error while finding module specification.*ModuleNotFoundError)zbuiltins.x.ys]   Error while finding module specification.*ModuleNotFoundError.*No module named.*not a package)r   s=   No module named.*is a package and cannot be directly executed)zimportlib.nonexistents   No module named)z	.unittests#   Relative module names not supportedr   r   	   Traceback)subTestr   r,   assertRegexassertNotIn)r4   testsnameregexrT   r  rV   s          r   test_dash_m_errorsCmdLineTest.test_dash_m_errors  sp    

 !KDd#24>
s  Q'  ,  s3	 $# !##s   AA--
A<	c                    [         R                  " 5        n[         R                  " US9   [        R                  " S5        [        SS5          S S S 5        U R                  S5      nU R                  US5        U R                  SU5        U R                  SU5        S S S 5        S S S 5        g ! , (       d  f       Nf= f! , (       d  f       N(= f! , (       d  f       g = f)Nr  r   ztest_pkg/__init__.pycwbsG   Error while finding module specification.*ImportError.*bad magic numbers   is a packager&  )	r   r   r  r-   mkdirr	  r  r(  r)  r4   r   rV   s      r   test_dash_m_bad_pycCmdLineTest.test_dash_m_bad_pyc  s    !Z$$*5HHZ -t4 5++J7CS23 _c2\3/ 6 "! 54 65 "!s;   C#CB0ACC0
B>:C
C	C
C c                 R   [         R                  " 5        n[         R                  " US9   [        SS5          S S S 5        U R	                  S5      nU R                  SU5        S S S 5        S S S 5        g ! , (       d  f       NB= f! , (       d  f       N(= f! , (       d  f       g = f)Nr  z
asyncio.pyr0  s>   Try using 'asyncio' instead of 'asyncio.py' as the module name)r   r   r  r	  r  r/   r2  s      r   *test_hint_when_triying_to_import_a_py_file6CmdLineTest.test_hint_when_triying_to_import_a_py_file  s~    !Z$$*5lD) *++L9CMM @ADF 6 "! *) 65 "!s8   BBA6+B%B6
B B
B	B
B&c                    [         [        [        [        4nU H  nUR                  nSR                  U5      nU R                  U5         U R                  U5       nU R                  S5      nU R                  UR                  S5      U5        U R                  SU5        U R                  SU5        S S S 5        S S S 5        M     g ! , (       d  f       N= f! , (       d  f       M  = f)Nz%raise {0}('Exception in __init__.py')r   asciis   Exception in __init__.pyr&  )ImportErrorAttributeError	TypeError
ValueError__name__formatr'  r  r  r/   r0   )r4   
exceptions	exceptioninitr   rV   s         r   test_dash_m_init_traceback&CmdLineTest.test_dash_m_init_traceback  s     ">9jI
#I!**I:AA)LDi(''-//
;i..w7=93?lC0	 . )( $ .- )(s%   
CAC3C
CC
C(	c                    U R                  5        nSn[        USU5        U R                  S5      nU R                  SU5        U R                  SU5        U R                  SU5        S S S 5        g ! , (       d  f       g = f)Nz1raise ImportError('Exception in __main__ module')r   r   s   ImportErrors   Exception in __main__ moduler&  )r  r   r  r/   )r4   r   mainrV   s       r   test_dash_m_main_traceback&CmdLineTest.test_dash_m_main_traceback  sh      "gFDgz48++J7CMM.#.MM93?MM,, #""s   AA11
A?c                    [         R                  " S5      n[        R                  " 5        n[	        USU5      n[        U5      u  pEnUR                  S5      R                  S5      nU R                  [        U5      S5        U R                  US   R                  S5      5        U R                  US   R                  S	5      5        U R                  US
   R                  S5      5        S S S 5        g ! , (       d  f       g = f)Nz|            try:
                raise ValueError
            except:
                raise NameError from None
            r   r9  r     r   	Tracebackr   z  File    	NameError)textwrapdedentr   r   r   r   decodesplitr,   lenr   
startswithr4   r   r   r5   exitcoders   rn   texts           r   test_pep_409_verbiage!CmdLineTest.test_pep_409_verbiage  s      "  !Z+J&IK'<['I$Hf==)//5DSY*OODG..{;<OODG..y9:OODG..{;< "!!s   C C55
Dc                 j   [         R                  (       aD  [        R                  S;  a0  [        (       d%  [
        R                  " [         R                  5      nO7[         R                  (       a  [         R                  nOU R                  S5        Sn[        [
        R                  " 5       WU5      nU R                  [         R                  U5        [        U5      u  pEnU R                  [        U5      UR!                  5       R#                  S5      SU< SU< 35        U R                  SU5        g )N>   wasiwin32
emscriptenzneed os_helper.TESTFN_NONASCIIzprint(ascii(__file__))
r9  zstdout=z stderr=r   )r   TESTFN_UNDECODABLEr1   platformr   r-   fsdecodeTESTFN_NONASCIIskipTestr   r.   
addCleanupunlinkr   r,   r9  rstriprP  )r4   r+  r   r5   rT   rs   rn   s          r   test_non_asciiCmdLineTest.test_non_ascii0  s     (( %  H;;y;;<D&&,,DMM:; ,'		T6B	((+6-k:F+MMO""7+%+V4	6 	Br   c                 &   [         R                  " S5      n[        R                  " 5        n[	        USU5      n[        U5      u  pEnUR                  S5      nU R                  UR                  5       S5        S S S 5        g ! , (       d  f       g = f)Nz            import sys
            error = None
            try:
                raise ValueError('some text')
            except ValueError as err:
                error = err

            if error:
                sys.exit(error)
            r   r9  z	some text)	rN  rO  r   r   r   r   rP  r,   rd  rT  s           r   )test_issue20500_exit_with_exception_value5CmdLineTest.test_issue20500_exit_with_exception_valueM  sr     
" 
 !Z+J&IK'<['I$Hf==)DT[[]K8	 "!!s   AB
Bc                 2   Sn[         R                  " 5        n[        USU5      n[        U5      u  pEn[        R
                  " [        R                  " U5      S5      R                  5       nU R                  SU5        S S S 5        g ! , (       d  f       g = f)Nz
1 + 1 = 2
r   r9  z
    ^^^^^
)	r   r   r   r   ioTextIOWrapperBytesIOrt   r/   rT  s           r   *test_syntaxerror_unindented_caret_position6CmdLineTest.test_syntaxerror_unindented_caret_position_  sp    !Z+J&IK'<['I$Hf##BJJv$6@EEGDMM/40 "!!s   A'B
Bc                 N   [         R                  " S5      n[        R                  " 5        n[	        USU5      n[        U5      u  pEn[        R                  " [        R                  " U5      S5      R                  5       nU R                  SU5        Sn[	        USU5      n[        U5      u  pEn[        R                  " [        R                  " U5      S5      R                  5       nU R                  SU5        U R                  SU5        S S S 5        g ! , (       d  f       g = f)Nz;            if True:
                1 + 1 = 2
            r   r9  z
    1 + 1 = 2
    ^^^^^
zif True:
    1 + 1 = 2
)rN  rO  r   r   r   r   rk  rl  rm  rt   r/   r)  rT  s           r   (test_syntaxerror_indented_caret_position4CmdLineTest.test_syntaxerror_indented_caret_positionh  s     "  !Z+J&IK'<['I$Hf##BJJv$6@EEGDMM8$?$  ,J&IK'<['I$Hf##BJJv$6@EEGDT4(MM8$?! "!!s   C!D
D$c                     Sn[         R                  " 5        n[        USU5      n[        U5      u  pEnU R	                  UR                  5       SS  / SQ5        S S S 5        g ! , (       d  f       g = f)Nzfoo = f"""{}
foo"""
r   )s       foo = f"""{}s                  ^s;   SyntaxError: f-string: valid expression required before '}'r   r   r   r   r,   
splitlinesr4   r   r   r5   rU  rs   rn   s          r   #test_syntaxerror_multi_line_fstring/CmdLineTest.test_syntaxerror_multi_line_fstring  sd    )!Z+J&IK'<['I$Hf!!#BC( "!!   AA""
A0c                     Sn[         R                  " 5        n[        USU5      n[        SU5      u  pEnU R	                  UR                  5       SS  / SQ5        S S S 5        g ! , (       d  f       g = f)Nzfoo = """\q"""
r   z-Werrorru  )s       foo = """\q"""s                ^^s)   SyntaxError: invalid escape sequence '\q'rv  rx  s          r   3test_syntaxerror_invalid_escape_sequence_multi_line?CmdLineTest.test_syntaxerror_invalid_escape_sequence_multi_line  sk    $!Z+J&IK'<;($Hf !!#BC( "!!s   AA##
A1c                     Sn[         R                  " 5        n[        USU5      n[        U5      u  pEnU R	                  UR                  5       SS  SS/5        S S S 5        g ! , (       d  f       g = f)Nz?x = ' ' nothing to see here
';import os;os.system('echo pwnd')
r   s	       x = '2   SyntaxError: source code cannot contain null bytesrv  rx  s          r   test_syntaxerror_null_bytes'CmdLineTest.test_syntaxerror_null_bytes  sj    U!Z+J&IK'<['I$Hf!!#BC( I "!!r{  c                     SS/n[         R                  " 5        nU HC  n[        USU5      n[        U5      u    pVU R	                  UR                  5       SS  SS/5        ME     S S S 5        g ! , (       d  f       g = f)Nz
'''
multilinestring 
'''z
f'''
multilinestring 
'''r   r  s       multilinestringr  rv  )r4   scriptsr   r   r5   r  rn   s          r   /test_syntaxerror_null_bytes_in_multiline_string;CmdLineTest.test_syntaxerror_null_bytes_in_multiline_string  sy    24TU!Z!/
HfM4[A1  %%',.M " "!!s   A
A--
A;c                 j    [        SS5      u    p/ SQnU R                  UR                  5       U5        g )Nr`   z1/0)s"   Traceback (most recent call last):s&     File "<string>", line 1, in <module>s       1/0r   s#   ZeroDivisionError: division by zero)r   r,   rw  )r4   r  rn   expected_liness       r   /test_source_lines_are_shown_when_running_source;CmdLineTest.test_source_lines_are_shown_when_running_source  s4    ,T5914 	**,n=r   c                 P   Sn[         R                  " 5        n[        USU5      n[        U5      u  pEn[        R
                  " [        R                  " U5      S5      R                  5       nU R                  UR                  S5      U5        S S S 5        g ! , (       d  f       g = f)Nznonlocal x
r   r9  z>SyntaxError: nonlocal declaration not allowed at module level
)
r   r   r   r   rk  rl  rm  rt   r   endswithrT  s           r   test_syntaxerror_does_not_crash+CmdLineTest.test_syntaxerror_does_not_crash  s    !Z+J&IK'<['I$Hf##BJJv$6@EEGDOODMMQ "!!s   A6B
B%c                    [         R                  " S5      nS U l        [        R                  " 5        n[        R                  " 5        n[        USU5      n[        SXBS9n[        U5      R                  5       R                  5       nU R                  US   U5        U R                  X&5        [        SX2S9n[        U5      R                  5       R                  5       nU R                  Xv5        [        SX2S9n[        U5      R                  5       R                  5       nU R                  XU5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nc            import sys
            for entry in sys.path:
                print(entry)
            r   z-EsrF   r   z-I)rN  rO  maxDiffr   r   r   r   r   rP  rw  r,   r)  )	r4   r   work_dirr   r5   rj   out_by_name
out_by_dirout_by_dir_isolateds	            r   -test_consistent_sys_path_for_direct_execution9CmdLineTest.test_consistent_sys_path_for_direct_execution  s     "  !Xy/A/A/Cz+J
FKK UK>A%a.//1<<>K[^Z8X3UJ=A$Q..0;;=JZ5T:<A"-a."7"7"9"D"D"F0kJ 0D!!/C/C!!s$   E	C*E3E
E	E
E#c                    [         R                  " S5      nS U l        [        R                  " 5        n[
        R                  R                  US5      n[
        R                  " U5        [        USU5      n[        SSUS9n[        U5      R                  5       R                  5       nU R                  US   U5        U R                  X65        [        SSUS9n[        U5      R                  5       R                  5       nU R                  Xv5        [!        SSUS9u  pn
U
R                  5       R                  5       nU R#                  S	US
   5        S S S 5        g ! , (       d  f       g = f)Nr  
script_pkgr   z-smzscript_pkg.__main__rF   r   z-ImzNo module named script_pkg)rN  rO  r  r   r   r-   r   r   r1  r   r   r   rP  rw  r,   r)  r   r/   )r4   r   r  r   r5   rj   out_by_moduleout_by_packagerU  rs   rn   traceback_liness               r   -test_consistent_sys_path_for_module_execution9CmdLineTest.test_consistent_sys_path_for_module_execution  s.     "  !Xh=JHHZ +J
FKK U$9xHA'N113>>@M]1-x8Z7ULh?A(^224??AN^;'<|($Hf %mmo88:OMM68KL) "!!s   D E
E*c                 4   SnU R                  [        R                  R                  U5      5        [	        US[
        R                  [
        R                  S9nUR                  5       u  p4U R                  SU5        U R                  UR                  S5        g )Nznonexistingscript.pyT)rV  rs   rn   z: can't open file r   )assertFalser-   r   existsr   rp   rq   communicater/   assertNotEqual
returncode)r4   r   procrU   rV   s        r   test_nonexisting_script#CmdLineTest.test_nonexisting_script  su    
 (/0F#-??#-??4 ##%*C0DOOQ/r   z	/dev/fd/0zrequires /dev/fd platformfreebsdz/devz/dev/fdz.Requires fdescfs mounted on /dev/fd on FreeBSDc                 p   Sn[         R                  " 5        n[        USU5      n[        US5       n[	        SUR                  5        3SSSSUR                  5       4S	9nUR                  5       u  pgU R                  US
5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nz print("12345678912345678912345")z	script.pyrz/dev/fd/Tr   r   r   )	close_fdspass_fdss   12345678912345678912345
)r   r   r   r	  r   filenor  r,   )r4   r   r  r5   fprj   rU   rV   s           r   test_script_as_dev_fd!CmdLineTest.test_script_as_dev_fd  s     4!X+Hk6JKk3'2 8BIIK=!9TUVWXYZ[][d[d[fTgh==?  &BC ( "!'' "!s#   B'ABB'
B$	 B''
B5)r  r   )F)Kr>  
__module____qualname____firstlineno__rD   rW   r]   rd   rk   
contextlibcontextmanagerrx   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r"  r-  r3  r6  rC  rG  rW  re  rh  rn  rr  ry  r}  r  r  r  r  r  r  r  unittest
skipUnlessr-   r   r  skipIfr1   r^  rS  statst_devr  __static_attributes__ r   r   r%   r%   \   s   
 <@9D 59C  599 %
%  &B	C'+'+8
EIEI6
66664/DD//N	NI"AL'"  .4(0F1-=$ :9$1@.
>	K>#MJ0 46QR__S\\,,Y7 IWWV_++rwwy/A/H/HHEG
DG S
Dr   r%   c                  .    [         R                  " 5         g r   )r   reap_childrenr  r   r   tearDownModuler  /  s    r   r   )&r  r   importlib.machineryr   r  r1   r-   os.pathr   rp   rk  rN  testr   test.supportr   r   r   test.support.script_helperr   r   r	   r
   r   r   r   r   r)   rO   test_sourcer   r#   force_not_colorized_test_classTestCaser%   r  r>  rF  r  r   r   <module>r     s         
 	    	   ; ;H H H //*3j ;F  * 	''ND(## ND (NDd zMMO r   