Skip to content

Commit d2b72a7

Browse files
committed
Python: Expand fieldflow tests
1 parent f6215f2 commit d2b72a7

File tree

1 file changed

+53
-0
lines changed
  • python/ql/test/experimental/dataflow/fieldflow

1 file changed

+53
-0
lines changed

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

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,59 @@ def test_indirect_assign_method():
5757
SINK(myobj.foo) # $ MISSING: flow
5858

5959

60+
def test_direct_assign():
61+
myobj = MyObj(NONSOURCE)
62+
myobj.foo = SOURCE
63+
SINK(myobj.foo) # $ flow="SOURCE, l:-1 -> myobj.foo"
64+
65+
66+
def test_direct_assign_overwrite():
67+
myobj = MyObj(NONSOURCE)
68+
myobj.foo = SOURCE
69+
myobj.foo = NONSOURCE
70+
SINK_F(myobj.foo) # $ SPURIOUS: flow="SOURCE, l:-2 -> myobj.foo"
71+
72+
73+
def test_direct_if_assign(cond = False):
74+
myobj = MyObj(NONSOURCE)
75+
myobj.foo = SOURCE
76+
if cond:
77+
myobj.foo = NONSOURCE
78+
SINK_F(myobj.foo) # $ SPURIOUS: flow="SOURCE, l:-3 -> myobj.foo"
79+
SINK(myobj.foo) # $ flow="SOURCE, l:-4 -> myobj.foo"
80+
81+
82+
@expects(2)
83+
def test_direct_if_always_assign(cond = True):
84+
myobj = MyObj(NONSOURCE)
85+
myobj.foo = SOURCE
86+
if cond:
87+
myobj.foo = NONSOURCE
88+
SINK_F(myobj.foo) # $ SPURIOUS: flow="SOURCE, l:-3 -> myobj.foo"
89+
else:
90+
myobj.foo = NONSOURCE
91+
SINK_F(myobj.foo) # $ SPURIOUS: flow="SOURCE, l:-6 -> myobj.foo"
92+
SINK_F(myobj.foo) # $ SPURIOUS: flow="SOURCE, l:-7 -> myobj.foo"
93+
94+
95+
def test_getattr():
96+
myobj = MyObj(NONSOURCE)
97+
myobj.foo = SOURCE
98+
SINK(getattr(myobj, "foo")) # $ MISSING: flow
99+
100+
101+
def test_setattr():
102+
myobj = MyObj(NONSOURCE)
103+
setattr(myobj, "foo", SOURCE)
104+
SINK(myobj.foo) # $ MISSING: flow
105+
106+
107+
def test_setattr_getattr():
108+
myobj = MyObj(NONSOURCE)
109+
setattr(myobj, "foo", SOURCE)
110+
SINK(getattr(myobj, "foo")) # $ MISSING: flow
111+
112+
60113
def test_constructor_assign():
61114
obj = MyObj(SOURCE)
62115
SINK(obj.foo) # $ flow="SOURCE, l:-1 -> obj.foo"

0 commit comments

Comments
 (0)