From ebd97f4496db3f8c8674f2ecaef298e207b1dfb1 Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen Date: Thu, 25 Aug 2022 10:37:26 +0200 Subject: [PATCH] Python: Add type-tracking regession example --- .../dataflow/typetracking/test.py | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/python/ql/test/experimental/dataflow/typetracking/test.py b/python/ql/test/experimental/dataflow/typetracking/test.py index 819d85c1d8a..294d72db01e 100644 --- a/python/ql/test/experimental/dataflow/typetracking/test.py +++ b/python/ql/test/experimental/dataflow/typetracking/test.py @@ -158,3 +158,27 @@ def test_long_import_chain_full_path(): from foo.bar import baz # $ tracked_foo_bar_baz x = baz # $ tracked_foo_bar_baz do_stuff(x) # $ tracked_foo_bar_baz + +# ------------------------------------------------------------------------------ +# Global variable to method body flow +# ------------------------------------------------------------------------------ + +some_value = get_tracked() # $ tracked +other_value = get_tracked() # $ tracked +print(some_value) # $ tracked +print(other_value) # $ tracked + +class MyClass(object): + # Since we define some_value method on the class, flow for some_value gets blocked + # into the methods + def some_value(self): + print(some_value) # $ MISSING: tracked + print(other_value) # $ tracked + + def other_name(self): + print(some_value) # $ MISSING: tracked + print(other_value) # $ tracked + + def with_global_modifier(self): + global some_value + print(some_value) # $ tracked