a ze@sddlZddlZddlZddlZddlZddlZddlZddlZddlm Z ddl m Z m Z Gdddej ZGdddej ZGdd d ej Zed kredS) N)support) script_helperFakePathc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zejd%krd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zd6d7Zd8d9Z d:d;Z!dd?Z#e$j%d@dAZ&dBdCZ'dDdEZ(dFdGZ)dHdIZ*e$j%dJdKZ+dLdMZ,dNdOZ-e$j%dPdQZ.e$j%dRdSZ/dTdUZ0dVdWZ1dXdYZ2e$j%dZd[Z3d\d]Z4d^d_Z5d`S)a TestSpecificscCst|dddS)Nzsinglecompileselfsourcer E/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_compile.pycompile_singleszTestSpecifics.compile_singlecCs|t|j|dSN) assertRaises SyntaxErrorrr r r r assertInvalidSinglesz!TestSpecifics.assertInvalidSinglecCstdddtddddS)Nhiexeczhi rr r r r test_no_ending_newlines z$TestSpecifics.test_no_ending_newlinecCstddddS)Nrrrrr r r test_emptyszTestSpecifics.test_emptycCs4tdddtdddtdddtddddS)Nz rr zhi stuff def f(): pass z(this_is really_old_mac def f(): passrrr r r test_other_newliness   z!TestSpecifics.test_other_newlinescCsH|ttdddddl}|j}t|dd|d|t|d|dS)Nz __debug__ = 1?rr __debug__ZsureF)rrrbuiltinsrsetattr assertEqual)r rprevr r r test_debug_assignment!s   z#TestSpecifics.test_debug_assignmentcCsX|ttd|ttd|ttd|ttd|ttd|ttddS)Nz lambda a,a:0zlambda a,a=1:0zlambda a=1,a=1:0zdef f(a, a): passzdef f(a = 0, a = 1): passdef f(a): global a; a = 1)rrevalrrr r r test_argument_handling*s z$TestSpecifics.test_argument_handlingcCs|ttddddS)Nz1+*3filenamerrrrrr r r test_syntax_error3szTestSpecifics.test_syntax_errorcCs|ttddddS)Nz f(None=1)rr'rr r r test_none_keyword_arg6sz#TestSpecifics.test_none_keyword_argcCs|ttddS)Nr#rrrrr r r test_duplicate_global_local9sz)TestSpecifics.test_duplicate_global_localcCs,Gddd}|}t}td||||jdztd||WntyVYn 0|dtd||||jdtd ftd ||||jd|ftd ||||jd|f|ttd|Gd d d }|}|ttd||Gdddt }|}td||||dddS)Nc@s(eZdZdZddZddZddZdS) zBTestSpecifics.test_exec_with_general_mapping_for_locals..Mz9Test mapping interface versus possible calls from eval().cSs|dkr dStdSNa )KeyErrorr keyr r r __getitem__@szNTestSpecifics.test_exec_with_general_mapping_for_locals..M.__getitem__cSs||f|_dSr)resultsr r2valuer r r __setitem__DszNTestSpecifics.test_exec_with_general_mapping_for_locals..M.__setitem__cSstdS)Nxyz)listrr r r keysFszGTestSpecifics.test_exec_with_general_mapping_for_locals..M.keysN)__name__ __module__ __qualname____doc__r3r7r:r r r r M>sr?zz = a)zr/zz = bzDid not detect a KeyErrorz z = dir()r@r8z z = globals()z z = locals()c@seZdZdZdS)zBTestSpecifics.test_exec_with_general_mapping_for_locals..Az Non-mappingN)r;r<r=r>r r r r A[srAc@seZdZddZdS)zBTestSpecifics.test_exec_with_general_mapping_for_locals..DcSs|dkr dSt||Sr-)dictr3r1r r r r3cszNTestSpecifics.test_exec_with_general_mapping_for_locals..D.__getitem__N)r;r<r=r3r r r r DbsrCr/) globalsrr r4 NameErrorfailr9r TypeErrorrB)r r?mgrArCdr r r )test_exec_with_general_mapping_for_locals<s0        z7TestSpecifics.test_exec_with_general_mapping_for_localscCs@ddd}i}d|fd}t||||ddddS) Nz x = x or z-xi z def f(x): %s %s %s %s %s %s %s %s %s %s # the expressions above have no effect, x == argument while x: x -= 1 # EXTENDED_ARG/JUMP_ABSOLUTE here return x fr)rr )r ZlongexprrIcoder r r test_extended_argks  zTestSpecifics.test_extended_argcCs|ttddS)Nzdef f(a=1, b): passr+rr r r test_argument_ordersz!TestSpecifics.test_argument_ordercCs<|ttd|ttd|ttd|ttddS)NZ2ez2.0e+z1e-z3-4e/21)rrr$rr r r test_float_literalssz!TestSpecifics.test_float_literalscCsd}t|dddS)Nz if 1: if 2: passr)rrr sr r r test_indentationszTestSpecifics.test_indentationcCsDddgddg}t|dd}||jd||jtdS)Nr Zspamfnri)joinrr co_firstlineno co_lnotabbytes)r Zs256cor r r test_leading_newliness z#TestSpecifics.test_leading_newlinescCsdD]}|tt|q|tdd|tdd|tdd|tdd|tdd |td d |td d |td d|tdd|tdd |tdd|tdd |tdd |tdd|tdd|tdd|tdd|tdd|tdd|tdd |td!d"|td#d$|td%d&|td'd(dS))N)Z077787Z0xjz0x.Z0eZ090000000000000Z080000000000000Z000000000000009Z000000000000008Z0b42Z0BADCAFEZ 0o123456789z0b1.1z0o4.2Z0b101j2Z0o153j2Z0b100e1Z0o777e1Z0777Z000777Z000000000000007Z0xffz0777.i z0777.0Z8000000000000000000000000000000000000000000000000000777e0Z0777e1iZZ0e0rz 0000e-012z09.5g#@Z0777jyH@Z000Z00jz00.0Z0e3z090000000000000.g聰vBz&090000000000000.0000000000000000000000Z090000000000000e0z090000000000000e-0Z090000000000000jy聰vBz000000000000008.g @z000000000000009.g"@Z0b101010*z-0b000000000010Z0o777iz -0o0000010i)rrr$r )r argr r r !test_literals_with_leading_zeroess4z/TestSpecifics.test_literals_with_leading_zeroescCstjdkr4d}|t|d|td|dn>tjdkrhd}|t|d|td|d n |d |td tj d t|td tj d tdS)NiZ 0xffffffffl-lZ0xffffffffffffffffllz)How many bits *does* this machine have???z%s)sysmaxsizer r$rFassertIsInstanceint)r Z all_one_bitsr r r test_unary_minuss   zTestSpecifics.test_unary_minusrfc CsHd}d}d}d}d}d}d}d}|jjjD]} | dur*|| tq*dS) Nllllllrfl)test_32_63_bit_values__code__ co_constsrkrl) r r.bcrJerMrIhvariabler r r rnsz#TestSpecifics.test_32_63_bit_valuescCs(dpd\}}||d||ddS)N)rg)rvrgrgrvr )r ijr r r test_sequence_unpacking_errors  z+TestSpecifics.test_sequence_unpacking_errorcCsBgd}|D]0}|d7}|tt|dd|tt|ddq dS)N) zNone = 0z None += 0z__builtins__.None = 0zdef None(): passzclass None: passz(a, None) = 0, 0zfor None in range(10): passzdef f(None): passz import Nonezimport x as Nonezfrom x import Nonezfrom x import y as NonerVtmprrr')r Zstmtsstmtr r r test_none_assignments z"TestSpecifics.test_none_assignmentcCsFgd}gd}|D]}t|ddq|D]}|tt|ddq*dS)N)z import syszimport os, syszimport os as barzimport os.path as barz0from __future__ import nested_scopes, generatorsz2from __future__ import (nested_scopes, generators)z3from __future__ import (nested_scopes, generators,)z%from sys import stdin, stderr, stdoutz'from sys import (stdin, stderr, stdout)z(from sys import (stdin, stderr, stdout,)z(from sys import (stdin , stderr, stdout)z)from sys import (stdin , stderr, stdout,)z7from sys import stdin as si, stdout as so, stderr as sez9from sys import (stdin as si, stdout as so, stderr as se)z:from sys import (stdin as si, stdout as so, stderr as se,))zimport (os, sys)zimport (os), (sys)zimport ((os), (sys))z import (sysz import sys)z import (os,)zimport os As barzimport os.path a barzfrom sys import stdin As stdoutzfrom sys import stdin a stdoutzfrom (sys) import stdinz%from __future__ import (nested_scopesz%from __future__ import nested_scopes)z0from __future__ import nested_scopes, generatorszfrom sys import (stdinzfrom sys import stdin)z%from sys import stdin, stdout, stderrzfrom sys import stdin sizfrom sys import stdin,zfrom sys import (*)z(from sys import (stdin,, stdout, stderr)z from sys import (stdin, stdout),r{r)rrr)r ZsucceedrFr|r r r test_imports zTestSpecifics.test_importcCs.dd}|\}}|t|jt|jdS)NcSsddd}ddd}||fS)NrgcSs|Srr xr r r .zITestSpecifics.test_for_distinct_code_objects..f..rhcSs|Srr rr r r r/r)rg)rhr )f1f2r r r rM-s  z7TestSpecifics.test_for_distinct_code_objects..f)assertNotEqualidro)r rMrrr r r test_for_distinct_code_objects+s z,TestSpecifics.test_for_distinct_code_objectscCsdd}||jdS)NcSsdS)NZfoor r r r r r5rz/TestSpecifics.test_lambda_doc..)Z assertIsNoner>)r lr r r test_lambda_doc4szTestSpecifics.test_lambda_doccCsd}|tt|ddd}t|dd|t|dd}|t|dd}|t|dd }|t|dd }|t|dd }|t|d d }|t|dd}|t|ddS)Ns## -*- coding: badencoding -*- pass r{ru%# -*- coding: badencoding -*- "¤" u¤u"¤" s"¤" ¤s# -*- coding: latin1 -*- "¤" s# -*- coding: utf-8 -*- "¤" s"# -*- coding: iso8859-15 -*- "¤" u€u*"""\ # -*- coding: iso8859-15 -*- ¤""" u!# -*- coding: iso8859-15 -*- ¤s("""\ # -*- coding: iso8859-15 -*- ¤""" u# -*- coding: iso8859-15 -*- ¤)rrrr r$r rOr r r test_encoding8s& zTestSpecifics.test_encodingcCs^Gdddt}|}d|d<||dd|dd7<||dd|d=|d|d|d<||dd|dd7<||dd|d=|d|d|dd<||ddd|ddd7<||ddd|dd=|tdd|d|ddddf<||ddddfd|ddddfd7<||ddddfd|ddddf=|tddtddf|d|ddd<||dddd|dddd7<||dddd|ddd=|tddd|d|ddddddf<||ddddddfd|ddddddfd7<||ddddddfd|ddddddf=|tdddtdddf|d|d<||dd|dd7<||dd|d=|t|d|d<||dd|dd7<||dd|d=|ttf|dS) Nc@s4eZdZddZddZddZddZd d Zd S) z.TestSpecifics.test_subscripts..str_mapcSs i|_dSr)datarr r r __init__Qsz7TestSpecifics.test_subscripts..str_map.__init__cSs|jt|Srrstrr1r r r r3Ssz:TestSpecifics.test_subscripts..str_map.__getitem__cSs||jt|<dSrrr5r r r r7Usz:TestSpecifics.test_subscripts..str_map.__setitem__cSs|jt|=dSrrr1r r r __delitem__Wsz:TestSpecifics.test_subscripts..str_map.__delitem__cSst||jvSr)rrr1r r r __contains__Ysz;TestSpecifics.test_subscripts..str_map.__contains__N)r;r<r=rr3r7rrr r r r str_mapPs rrgrh)rgrg.)..)objectr Z assertNotInsliceEllipsis)r rrJr r r test_subscriptsMsd           zTestSpecifics.test_subscriptscCs0d}|dddtdD;}t|dddS)Nzdef f(%s): passz, css|]}d||fVqdS)za%d:%dNr .0rxr r r rz6TestSpecifics.test_annotation_limit..i,rr)rYrangerrSr r r test_annotation_limitsz#TestSpecifics.test_annotation_limitcCsZGddd}|d|jjj|d|jjj|d|jjj|d|jjjdS)Nc@seZdZddZdS)z&TestSpecifics.test_mangling..AcSsd}d}ddl}ddl}dS)Nrgrhr)_A__mangled_modZ__package__.module) _A__mangled__not_mangled__r __package__r r r rMsz(TestSpecifics.test_mangling..A.fN)r;r<r=rMr r r r rAsrArrrr)assertInrMro co_varnames)r rAr r r test_manglings zTestSpecifics.test_manglingc CsHt}|dr|dd}t|d}|}Wdn1sF0Yddgddgdd gd d g||gg}|D]n\}}t|d |d }t|d|d tj}|t |tj kt|d|d }| ||| |j d|qvtddd tj}| tt|dd| tttdd t }tg|_| tt|dd dS)NZpycrvrzzx = 5z zif True: pass z z!for n in [1, 2, 3]: print(n) z zdef foo(): pass foo() z%s1rz%s2z%s3zprint(1)r)zr$)__file__lowerendswithopenreadr_astZ PyCF_ONLY_AST assertTruetypeZModuler co_filenamerrGZIfZBoolOpbody) r ZfnamerMZ fcontentsZ sample_coderOZco1astZco2r r r test_compile_asts0  &   zTestSpecifics.test_compile_astcs:dfdd}||||i}||ddddS)Nrcs d7S)Nrgr r rxr r rMsz3TestSpecifics.test_dict_evaluation_order..frh)rgrrw)r rMrJr rr test_dict_evaluation_orders z(TestSpecifics.test_dict_evaluation_orderc CsdD]}td|d}||jdqtdtdfD]H}|ttd|d}Wdn1sd0Y||jdq4|ttdt dddS)N)file.pyfile.pypassrrr) rr r bytearray memoryviewZ assertWarnsDeprecationWarningrrGr9)r r&rOr r r test_compile_filenames  *z#TestSpecifics.test_compile_filenamecCs<d}t|dd}|jD] }t|tjr||j|jqdS)Nzdef f(): pass def g(): passZmyfiler)rrp isinstancetypesCodeTypeassertIsr)r rTrrobjr r r test_same_filename_useds    z%TestSpecifics.test_same_filename_usedcCs|d|d|d|d|d|d|d|d|d |d |d |d |d |ddS)Nz1 + 2z 1 + 2z1 + 2 z1 + 2 z1 + 2 z1 + 2 z1 + 2 # one plus twoz1; 2zimport sys; syszdef f(): passzwhile False: passz if x: f(x)zif x: f(x) else: g(x)zclass T: pass)rrr r r test_single_statements             z#TestSpecifics.test_single_statementcCsT|d|d|d|d|d|d|d|ddS) Nz1 2z def f(): passza = 13 b = 187z del x del yzf() g()zf() # blah blah()zf() xy # blah blah()zx = 5 # comment x = 6 )rrr r r test_bad_single_statements       z'TestSpecifics.test_bad_single_statementc Csd}t`}tj|d}t|d}||Wdn1sF0Yt|d}Wdn1sr0Y| d|j dS)Ns0000 00000000000 bad.pywbr Non-UTF-8 tempfileTemporaryDirectoryospathrYrwriterZrun_python_until_endrerrr srcZtmpdrXfpresr r r "test_particularly_evil_undecodables  (,z0TestSpecifics.test_particularly_evil_undecodablec Csd}t`}tj|d}t|d}||Wdn1sF0Yt|d}Wdn1sr0Y| d|j dS)Ns# # rrrrrrr r r $test_yet_more_evil_still_undecodable s  (,z2TestSpecifics.test_yet_more_evil_still_undecodablecsTtdtdfdd}|dd|dd|dd|dd dS) Nrg?csl||}|||}d||}jt|d|Wdn1s^0YdS)NzCompiling ({!r} + {!r} * {}))msg)rformatrRecursionError)prefixZrepeatedZ expect_okbrokenZdetailsZ fail_depthr Z success_depthr r check_limit"s   z@TestSpecifics.test_compiler_recursion_limit..check_limitr.z()z.bz[0]z*a)rigetrecursionlimitrl)r rr rr test_compiler_recursion_limits     z+TestSpecifics.test_compiler_recursion_limitcCs8|tdtdddWdn1s.0Y|td ttdddWdn1sj0Yttddddd}|t|dttd dddd}|t|dttd dddd}|t|d|ttd dddt}ttd dd|||d d dS)Nzcannot contain nullz123r$s123rgrvs1234s$23$sax = 123rr/)ZassertRaisesRegex ValueErrorrrr r$rBr)r rO namespacer r r test_null_terminated0s*.z"TestSpecifics.test_null_terminatedcCs<|jjD]}t|t|krq8q|d||jjfdS)Nz unable to find constant %r in %r)rorpreprrF)r funcZexpectedconstr r r check_constantDs   zTestSpecifics.check_constantcsfdd}|d|d|d|d|ddddd}}|j|j|tt|ttd dd d}}d d}|jjd |jjd dtt|jjd |jjd d dd d}}|j|j|t dh |ddS)Ncs`i}d||f}t|||d}|d}|j|j||t|t|dSNzf1, f2 = lambda: %r, lambda: %rrr)rrrorr r)rnsrOrrrr r check_same_constantSs   z?TestSpecifics.test_merge_constants..check_same_constantrsabcabccSsdS)N.r r r r r rerz4TestSpecifics.test_merge_constants..cSsdS)N not a namer r r r r rkrcSsdS)Nrr r r r r rkrcSs|dvS)N>rr rr r r rlrrgcSs|dvSN>rr rr r r rtr) rrorrr rrpnextiter frozensetr)r rrrZf3r rr test_merge_constantsNs,   z"TestSpecifics.test_merge_constantscCs(dd}|dtt|djdS)z9Regression test for issue35193 when run under clang msan.cSsdS)NrZ unreachable) RuntimeErrorr r r r unused_code_at_endszcTestSpecifics.test_peephole_opt_unreachable_code_array_access_in_bounds..unused_code_at_end RETURN_VALUErvN)r r9disget_instructionsopname)r rr r r 9test_peephole_opt_unreachable_code_array_access_in_bounds}s zGTestSpecifics.test_peephole_opt_unreachable_code_array_access_in_boundscs fdd}|dd|dd|dd|dd |d d d d dd }}|j|j|d|dt|tdt|tddd dd }}|j|j|tdh|tdh|d|ddS)Ncsi}td||f||d}|d}|j|j|j|j||||t|t|t|t|dSr)r assertIsNotrorrr r)Zconst1Zconst2rrrrr r check_different_constantss  zJTestSpecifics.test_dont_merge_constants..check_different_constantsrrg)r)rr.a)r.)rcSsdS)Nr`r r r r r rrz9TestSpecifics.test_dont_merge_constants..cSsdS)Nr r r r r rrr`rcSs|dvSrr rr r r rrcSs|dvS)N>rr rr r r rr)rrorr rrr)r rrrr rr test_dont_merge_constantss$       z'TestSpecifics.test_dont_merge_constantscCstdtdddS)NZ42Ztest_compile_pathliker)rrrr r r test_path_like_objectssz$TestSpecifics.test_path_like_objectscCstdddddS)Nzif a: b i@ rrrrr r r test_stack_overflowsz!TestSpecifics.test_stack_overflowcCsdd}dd}dd}dd}||||g}|D]X}tt|}|d t||d |d j|d|d j|d |d jq0dS)NcSsdSrr r r r r unused_block_ifszPTestSpecifics.test_dead_blocks_do_not_generate_bytecode..unused_block_ifcSsdSrr r r r r unused_block_whileszSTestSpecifics.test_dead_blocks_do_not_generate_bytecode..unused_block_whilecSsdSrr r r r r unused_block_if_elseszUTestSpecifics.test_dead_blocks_do_not_generate_bytecode..unused_block_if_elsecSsdS)Nrar r r r r unused_block_while_elseszXTestSpecifics.test_dead_blocks_do_not_generate_bytecode..unused_block_while_elserh LOAD_CONSTrrrgr9rrr lenrZargval)r rrrrfuncsropcodesr r r )test_dead_blocks_do_not_generate_bytecodesz7TestSpecifics.test_dead_blocks_do_not_generate_bytecodecCszdd}dd}||g}|D]X}tt|}|dt||d|dj|d|dj|d|d jqdS) NcSsdSrr r r r r break_in_whilesz;TestSpecifics.test_false_while_loop..break_in_whilecSsdSrr r r r r continue_in_whilesz>TestSpecifics.test_false_while_loop..continue_in_whilerhrrrrgr)r r r rrrr r r test_false_while_loopsz#TestSpecifics.test_false_while_loopcCs<d}ddddt|Dd}|tt||dS)Ni{,css|]}|d|VqdS):Nr )rrr r r rrz6TestSpecifics.test_big_dict_literal..})rYrr rr$)r Z dict_sizeZthe_dictr r r test_big_dict_literals z#TestSpecifics.test_big_dict_literalN)6r;r<r=rrrrrr"r%r(r*r,rKrPrQrRrUr^rdrmrirjrnrzr}r~rrrrrrrrrrZ cpython_onlyrrrrrrrrrrrrrr r rr r r r r sj  / ! / H #         . ( rc@sPeZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ dS)TestExpressionStackSizedcCs>t|trt|dd}ttt|j}||j |dS)Nzr) rrrmathceillogrco_codeZassertLessEqual co_stacksize)r rOmax_sizer r r check_stack_sizes  z(TestExpressionStackSize.check_stack_sizecCs|d|jddS)Nzx and rrNrr r r test_and sz TestExpressionStackSize.test_andcCs|d|jddS)Nzx or rrrr r r test_or szTestExpressionStackSize.test_orcCs|d|jddS)Nz x and x or rrrr r r test_and_orsz#TestExpressionStackSize.test_and_orcCs|d|jddS)Nzx < rrrr r r test_chained_comparisonsz/TestExpressionStackSize.test_chained_comparisoncCs|d|jddS)Nz x if x else rrrr r r test_if_elsesz$TestExpressionStackSize.test_if_elsecCs|d|jddS)Nzx + rrrr r r test_binopsz"TestExpressionStackSize.test_binopcCs d}|d|j7}||dS)Nz def f(x): z x and x )rrrr r r test_func_andsz%TestExpressionStackSize.test_func_andN) r;r<r=rrrrrr r!r"r#r r r r rsrc@seZdZd5ddZddZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4S)6TestStackSizeStabilityFcs|fddfddtddD}tt|dkrxddl}ddl}|}|jd|d |d ||fdS) Ncs>i}d|}rd|}t|dd}t||||djS)Nz def func(): zasync z