a ze*@sFddlZddlZddlmZmZGdddejZedkrBedS)N) swap_item swap_attrc@s`eZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ dS)RebindBuiltinsTestsz=Test all the ways that we can change/shadow globals/builtins.cGsdS)aPerform TestCase-specific configuration on a function before testing. By default, this does nothing. Example usage: spinning a function so that a JIT will optimize it. Subclasses should override this as needed. Args: func: function to configure. *args: any arguments that should be passed to func, if calling it. Returns: Nothing. Work will be performed on func in-place. N)selffuncargsrrE/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_dynamic.pyconfigure_func s z"RebindBuiltinsTests.configure_funccCsddd}||||dttddd||dWdn1sV0YdS)NcSs tgdSN)lenrrrr foosz=RebindBuiltinsTests.test_globals_shadow_builtins..foorrcSsdSNrxrrr #zBRebindBuiltinsTests.test_globals_shadow_builtins..rr assertEqualrglobalsrrrrr test_globals_shadow_builtinss  z0RebindBuiltinsTests.test_globals_shadow_builtinscCsbdd}||||dttddd||dWdn1sT0YdS)NcSs tgdSr rrrrr r(sz5RebindBuiltinsTests.test_modify_builtins..foorrcSsdSrrrrrr r-rz:RebindBuiltinsTests.test_modify_builtins..r)r rrbuiltinsrrrr test_modify_builtins&s  z(RebindBuiltinsTests.test_modify_builtinscCsldd}|||}|t|dttddd |t|dWdn1s^0YdS)Ncss td}t|Vt|VdSNrrangerrrrr r2s zLRebindBuiltinsTests.test_modify_builtins_while_generator_active..foorrcSsdSrrrrrr r:rzQRebindBuiltinsTests.test_modify_builtins_while_generator_active..r)r rnextrrrrgrrr +test_modify_builtins_while_generator_active0s  z?RebindBuiltinsTests.test_modify_builtins_while_generator_activecCsdttdtDdd}dd}||dd|||dd gWdn1sV0YdS) NrcSsddt_dS)NcSsdS)Nrrrrr rBrzZRebindBuiltinsTests.test_modify_builtins_from_leaf_function..bar..)rrrrrr barAszHRebindBuiltinsTests.test_modify_builtins_from_leaf_function..barcSs2g}|ttd||ttd|Sr)appendrr!)modifierlrrr rDs zHRebindBuiltinsTests.test_modify_builtins_from_leaf_function..foocSsdS)Nrrrrr rJrzMRebindBuiltinsTests.test_modify_builtins_from_leaf_function..rr&)rrrr r)rr'rrrr 'test_modify_builtins_from_leaf_function=s z;RebindBuiltinsTests.test_modify_builtins_from_leaf_functioncCsZdd}||dddi}||ddd}|td|d |tdd |id dS) NcSs tgdSr rrrrr rOszQRebindBuiltinsTests.test_cannot_change_globals_or_builtins_with_eval..foorcSsdSrrrrrr rTrzVRebindBuiltinsTests.test_cannot_change_globals_or_builtins_with_eval..cSsdSNrrrrr rVrr __builtins__rzfoo()rr)r reval)rr builtins_dict globals_dictrrr 0test_cannot_change_globals_or_builtins_with_evalNs  zDRebindBuiltinsTests.test_cannot_change_globals_or_builtins_with_evalcCsndd}||d|i}td|||ddddd i}||d d d }td|||dddS) NcSs tgdSr rrrrr r\szQRebindBuiltinsTests.test_cannot_change_globals_or_builtins_with_exec..foorz x = foo()rrrcSsdSrrrrrr rerzVRebindBuiltinsTests.test_cannot_change_globals_or_builtins_with_exec..cSsdSr,rrrrr rgrr.)r execr)rrr2r1rrr 0test_cannot_change_globals_or_builtins_with_exec[s    zDRebindBuiltinsTests.test_cannot_change_globals_or_builtins_with_execcCsrdd}|||}|t|dttddddi |t|dWdn1sd0YdS)Ncss td}t|Vt|VdSrr rrrr rms zORebindBuiltinsTests.test_cannot_replace_builtins_dict_while_active..foorr/rcSsdSrrrrrr rurzTRebindBuiltinsTests.test_cannot_replace_builtins_dict_while_active..)r rr"rrr#rrr .test_cannot_replace_builtins_dict_while_activels  zBRebindBuiltinsTests.test_cannot_replace_builtins_dict_while_activecCshdd}||||dttddddi||dWdn1sZ0YdS)NcSs tgdSr rrrrr ryszPRebindBuiltinsTests.test_cannot_replace_builtins_dict_between_calls..foorr/rcSsdSrrrrrr r~rzURebindBuiltinsTests.test_cannot_replace_builtins_dict_between_calls..rrrrr /test_cannot_replace_builtins_dict_between_callsxs  zCRebindBuiltinsTests.test_cannot_replace_builtins_dict_between_callscCs2dddi}td|}||||ddS)NrcSsdSrrrrrr rrzKRebindBuiltinsTests.test_eval_gives_lambda_custom_globals..zlambda: len([])r)r0r r)rr2rrrr %test_eval_gives_lambda_custom_globalss   z9RebindBuiltinsTests.test_eval_gives_lambda_custom_globalsN)__name__ __module__ __qualname____doc__r rrr%r+r3r5r6r7r8rrrr r s      r__main__) rZunittestZ test.supportrrZTestCaserr9mainrrrr s