def test_find_initializing_stores_across_blocks(): class A(object): pass class B(object): pass def f(x): a1 = A() a2 = A() a = A() b = B() b.a = a if x: b.b = a1 b.c = a2 else: b.c = a1 b.b = a2 t = rtype(f, [int]) etrafo = ExceptionTransformer(t) graphs = etrafo.transform_completely() collect_analyzer = CollectAnalyzer(t) init_stores = find_initializing_stores(collect_analyzer, t.graphs[0]) assert len(init_stores) == 5
def test_find_initializing_stores(): class A(object): pass class B(object): pass def f(): a = A() b = B() b.a = a b.b = 1 t = rtype(f, []) etrafo = ExceptionTransformer(t) graphs = etrafo.transform_completely() collect_analyzer = CollectAnalyzer(t) init_stores = find_initializing_stores(collect_analyzer, t.graphs[0]) assert len(init_stores) == 1