a ze!@stdZddlZddlZddlZddlmZddlmZmZddl Z ej rNddZ Gdddej Z ed krpedS) z/ Test cases for codeop.py Nick Mathewson N)support)compile_commandPyCF_DONT_IMPLY_DEDENTcCs(|D]\}}t|drd||<q|S)N__call__T)itemshasattr)dnvr D/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_codeop.pyunify_callabless  r c@sZeZdZdddZdddZdddZd d Zd d Zd dZddZ ddZ ddZ dS) CodeopTestssinglec Cstjrt|d|}|||dkrpii}}tj}tt_z&t||tt |dd|W|t_q|t_0n,|dkrddi}dt ||i}dt ||i}| t |t |n"t |d|t }| t|d||dS)z(succeed iff str is a valid piece of coderevalavalueN)r is_jythonr assertTruesysstdoutioStringIOexeccompiler assertEqualr r) selfstrsymbolcoderrZ saved_stdoutctxZexpectedr r r assertValids$     zCodeopTests.assertValidcCs|t||dddS)z5succeed iff str is the start of a valid piece of coder N)rr)rrr r r r assertIncomplete.szCodeopTests.assertIncompletecCsXzt||d|dWn8ty6||YntyR|| Yn0dS)z8succeed iff str is the start of an invalid piece of coder%z$No exception raised for invalid codeN)rZfail SyntaxErrorr OverflowError)rrr Z is_syntaxr r r assertInvalid2s   zCodeopTests.assertInvalidcCs|j}tjsB|tdtdddt|tdtdddtn|d|d|d|d|d|d |d |d |d |d |d|d|d|d|d|d|d|d|d|d|d|d|dd|dd|dd|dd|dd|d d|d!d|d |d"|d|d#|dd|d d|d!d|d$|d%|d&dS)'Npassrr a = 1z a = 1a = 1 za = 1 z a = 1 zdef x(): pass z if 1: pass z if 1: pass z if 1: pass zdef x(): pass zdef x(): pass zdef x(): pass zpass z3**3 zif 9==3: pass else: pass z(if 1: pass if 1: pass else: pass z #a #b a = 3 z #a a=3 za=3 z a = 9+ \ 3z3**3rz(lambda z: z**3)z9+ \ 3z9+ \ 3 z a**3z a**3z #a #b a**3z if 1: a=1 z #a a=3 z1def f(): try: pass finally: [x for x in (1,2)] zdef f(): pass #foo z@a.b.c def f(): pass )r$rrrrrr)ravr r r test_valid<sf            zCodeopTests.test_validcCsH|j}|d|d|d|d|d|d|d|d|d|d |d |d |d |d |d|d|d|d|d|d|d|d|d|d|d|dd|dd|dd|dd|dd|dd|d d|d!|d"|d#|d$|d%|d&|d'|d(|d)|d*|d+|d,|d-|d.|d/|d0|d1|d2|d3|d4|d5|d6|d7|d8|d9|d:|d;|d<|d=|d>|d?|d@|dA|dB|dC|dD|dE|dF|dG|dH|dI|dJ|d|dK|dL|dM|d|dN|dO|dP|dQ|dR|dS|dT|dU|dV|dW|dX|dY|dZ|d[|d\|d]|d^|d_|d`|da|db|dc|dddS)eNz(a **z(a,b,z(a,b,(a = (za = {zb + {zif 9==3: pass else:zif 9==3: pass else: zif 9==3: pass else: passzif 1:zif 1: z if 1: pass if 1: pass else:z!if 1: pass if 1: pass else: z'if 1: pass if 1: pass else: passzdef x():z def x(): z def x(): zdef x(): passzdef x(): pass zdef x(): pass z def x(): passza = 9+ \za = 'a\z a = '''xyr+rr-(z( z(9+z9+ \z lambda z: \z!if True: if True: if True: z@a(z@a(bz@a(b,z@a(b,cz@a(b,c,zfrom a import (zfrom a import (bzfrom a import (b,zfrom a import (b,czfrom a import (b,c,[z[az[a,z[a,bz[a,b,{z{az{a:z{a:bz{a:b,z{a:b,cz{a:b,c:z{a:b,c:dz {a:b,c:d,za(za(bza(b,za(b,cza(b,c,za[za[bza[b,za[b:za[b:cza[b:c:za[b:c:dzdef a(zdef a(bzdef a(b,z def a(b,cz def a(b,c,z(az(a,z(a,bzif a: pass elif b:zif a: pass elif b: pass else:zwhile a:zwhile a: pass else:z for a in b:zfor a in b: pass else:ztry:ztry: pass except:ztry: pass finally:z!try: pass except: pass finally:zwith a:z with a as b:zclass a:zclass a(z class a(bz class a(b,z class a():z[x forz [x for x inz [x for x in (z(x forz (x for x inz (x for x in ()r&rZair r r test_incomplete~s       zCodeopTests.test_incompletecCs|j}|d|d|d|d|d|d|d|d|d |d |d |d d |dd |dd |dd |dd |dd |dd |dd |d|d|d|d|d|d|ddS)Nza bza @za b @za ** @za = za = 9 +zdef x(): pass z if 1: pass passz a = 9+ \ za = 'a\ za = 'a\ r.rr2]z())z[}z9+z lambda z:z return 2.3zif (a == 1 and b = 2): passzdel 1zdel (1,)zdel [1]zdel '1'z"[i for i in range(10)] = (1, 2, 3)r*r6r r r test_invalids6        zCodeopTests.test_invalidcCsR|j}|ddd|ddd|ddd|ddd|ddd|ddddS) Nz raise = 4rr%zdef a-bzawait?z=!=za await raise bza await raise b?+1r9r6r r r test_invalid_exec$s     zCodeopTests.test_invalid_execcCs@|tddjtdddj|tddjtdddjdS)Nr/abcrdef)rr co_filenamerZassertNotEqual)rr r r test_filename-s   zCodeopTests.test_filenamec Cstdtfdtf*}td|t|jdWdn1sD0YtR| t (t dttdddWdn1s0YWdn1s0YdS) Nz .*literalz .*invalidz '\e' is 0rerrorz1 is 1rr%) rZcheck_warnings SyntaxWarningDeprecationWarningrrlenwarningscatch_warningsZ assertRaisesr( simplefilter)rwr r r test_warning3s0 zCodeopTests.test_warningN)r)r)rr') __name__ __module__ __qualname__r$r&r*r1r7r:r;r?rHr r r r rs   B& r__main__)__doc__rZunittestrDtestrZcodeoprrrrr ZTestCaserrImainr r r r s /