def test_abstract_code_dependencies(): code = ''' a = b+c d = b+c a = func_a() a = func_b() a = x+d ''' known_vars = {'a', 'b', 'c'} known_funcs = {'func_a'} res = abstract_code_dependencies(code, known_vars, known_funcs) expected_res = dict( all=['a', 'b', 'c', 'd', 'x', 'func_a', 'func_b', ], read=['b', 'c', 'd', 'x'], write=['a', 'd'], funcs=['func_a', 'func_b'], known_all=['a', 'b', 'c', 'func_a'], known_read=['b', 'c'], known_write=['a'], known_funcs=['func_a'], unknown_read=['d', 'x'], unknown_write=['d'], unknown_funcs=['func_b'], undefined_read=['x'], newly_defined=['d'], ) for k, v in expected_res.items(): if not getattr(res, k)==set(v): raise AssertionError("For '%s' result is %s expected %s" % ( k, getattr(res, k), set(v)))