Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 5974af6

Browse files
committed
Python: Update test file
Makes the `a.b.c.d` test more sensible. Also adds a test that shows a case where we're currently _not_ getting the right flow.
1 parent ba98b08 commit 5974af6

1 file changed

Lines changed: 36 additions & 3 deletions

File tree

  • python/ql/test/experimental/dataflow/ApiGraphs

python/ql/test/experimental/dataflow/ApiGraphs/test.py

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,46 @@
2222

2323
abcd = abc.d #$ use=moduleImport("a").getMember("b").getMember("c").getMember("d")
2424

25-
x5 = abcd() #$ use=moduleImport("a").getMember("b").getMember("c").getMember("d").getReturn()
25+
x5 = abcd.method() #$ use=moduleImport("a").getMember("b").getMember("c").getMember("d").getMember("method").getReturn()
2626

27-
y5 = x5.method() #$ use=moduleImport("a").getMember("b").getMember("c").getMember("d").getReturn().getMember("method").getReturn()
27+
from a6 import m6 #$ use=moduleImport("a6").getMember("m6")
28+
29+
x6 = m6().foo().bar() #$ use=moduleImport("a6").getMember("m6").getReturn().getMember("foo").getReturn().getMember("bar").getReturn()
2830

2931

3032
# Relative imports. These are ignored
3133

3234
from .foo import bar
3335

34-
from ..foobar import baz
36+
from ..foobar import baz
37+
38+
39+
# Use of imports across scopes
40+
41+
def use_m4():
42+
x = m4.blah4 #$ use=moduleImport("a4").getMember("b4").getMember("c4").getMember("blah4")
43+
44+
def local_import_use():
45+
from foo import bar #$ use=moduleImport("foo").getMember("bar")
46+
47+
x = bar() #$ use=moduleImport("foo").getMember("bar").getReturn()
48+
49+
from eggs import ham as spam #$ use=moduleImport("eggs").getMember("ham")
50+
51+
def bbb():
52+
f = spam #$ use=moduleImport("eggs").getMember("ham")
53+
54+
from danger import SOURCE #$ use=moduleImport("danger").getMember("SOURCE")
55+
56+
foo = SOURCE #$ use=moduleImport("danger").getMember("SOURCE")
57+
58+
def change_foo():
59+
global foo
60+
foo = SOURCE #$ use=moduleImport("danger").getMember("SOURCE")
61+
62+
def f():
63+
global foo
64+
sink(foo) #$ use=moduleImport("danger").getMember("SOURCE")
65+
foo = NONSOURCE
66+
change_foo()
67+
sink(foo) #$ MISSING: use=moduleImport("danger").getMember("SOURCE")

0 commit comments

Comments
 (0)