def test_taint_atomic_exception(self): from __pypy__ import taint, untaint, TaintError, taint_atomic x = taint(6) x *= 7 def dummy(x): if x + "world" == "hello world": return 5 else: return 3 dummy = taint_atomic(dummy) y = dummy(x) raises(TaintError, "if y == 3: z = 1") raises(TaintError, "untaint(int, y)")
def test_taint_atomic(self): from __pypy__ import taint, untaint, TaintError, taint_atomic x = taint(6) x *= 7 def dummy(x): if x > 40: return 5 else: return 3 dummy = taint_atomic(dummy) y = dummy(x) raises(TaintError, "if y == 3: z = 1") assert untaint(int, y) == 5
def test_taint_atomic_incoming_bomb(self): from __pypy__ import taint, untaint, TaintError, taint_atomic x = taint(6) x /= 0 lst = [] def dummy(x): lst.append("running!") if x > 40: return 5 else: return 3 dummy = taint_atomic(dummy) y = dummy(x) raises(TaintError, "if y == 3: z = 1") assert lst == [] raises(TaintError, "untaint(int, y)")