1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
from RestrictedPython.Guards import guarded_unpack_sequence
from tests.helper import restricted_exec
def test_RestrictingNodeTransformer__visit_Assign__1(mocker):
src = "orig = (a, (x, z)) = (c, d) = g"
_getiter_ = mocker.stub()
_getiter_.side_effect = lambda it: it
glb = {
'_getiter_': _getiter_,
'_unpack_sequence_': guarded_unpack_sequence,
'g': (1, (2, 3)),
}
restricted_exec(src, glb)
assert glb['a'] == 1
assert glb['x'] == 2
assert glb['z'] == 3
assert glb['c'] == 1
assert glb['d'] == (2, 3)
assert glb['orig'] == (1, (2, 3))
assert _getiter_.call_count == 3
_getiter_.assert_any_call((1, (2, 3)))
_getiter_.assert_any_call((2, 3))
_getiter_.reset_mock()
def test_RestrictingNodeTransformer__visit_Assign__2(
mocker):
src = "a, *d, (c, *e), x = (1, 2, 3, (4, 3, 4), 5)"
_getiter_ = mocker.stub()
_getiter_.side_effect = lambda it: it
glb = {
'_getiter_': _getiter_,
'_unpack_sequence_': guarded_unpack_sequence
}
restricted_exec(src, glb)
assert glb['a'] == 1
assert glb['d'] == [2, 3]
assert glb['c'] == 4
assert glb['e'] == [3, 4]
assert glb['x'] == 5
_getiter_.assert_has_calls([
mocker.call((1, 2, 3, (4, 3, 4), 5)),
mocker.call((4, 3, 4))])
|