1
1
import sys
2
2
import os
3
3
4
- sys .path .append (os .path .dirname (os .path .dirname ((__file__ ))))
4
+ sys .path .append (os .path .dirname (os .path .dirname ((__file__ )))) # $ unresolved_call=os.path.dirname(..) unresolved_call=sys.path.append(..)
5
5
from testlib import *
6
6
7
7
# These are defined so that we can evaluate the test code.
@@ -42,7 +42,7 @@ def setFoo(obj, x):
42
42
SINK_F (obj .foo )
43
43
obj .foo = x
44
44
45
- @expects (2 )
45
+ @expects (2 ) # $ unresolved_call=expects(..) unresolved_call=expects(..)(..)
46
46
def test_indirect_assign ():
47
47
myobj = MyObj ("OK" )
48
48
@@ -53,7 +53,7 @@ def test_indirect_assign():
53
53
def test_indirect_assign_method ():
54
54
myobj = MyObj ("OK" )
55
55
56
- myobj .setFoo (SOURCE )
56
+ myobj .setFoo (SOURCE ) # $ unresolved_call=myobj.setFoo(..)
57
57
SINK (myobj .foo ) # $ MISSING: flow
58
58
59
59
@@ -79,7 +79,7 @@ def test_direct_if_assign(cond = False):
79
79
SINK (myobj .foo ) # $ flow="SOURCE, l:-4 -> myobj.foo"
80
80
81
81
82
- @expects (2 )
82
+ @expects (2 ) # $ unresolved_call=expects(..) unresolved_call=expects(..)(..)
83
83
def test_direct_if_always_assign (cond = True ):
84
84
myobj = MyObj (NONSOURCE )
85
85
myobj .foo = SOURCE
@@ -157,7 +157,7 @@ def test_nested_obj():
157
157
def test_nested_obj_method ():
158
158
x = SOURCE
159
159
a = NestedObj ()
160
- a .getObj ().foo = x
160
+ a .getObj ().foo = x # $ unresolved_call=a.getObj()
161
161
SINK (a .obj .foo ) # $ MISSING: flow
162
162
163
163
# ------------------------------------------------------------------------------
@@ -173,12 +173,12 @@ def test_nested_obj_method():
173
173
# scope tests into multiple functions, since we wouldn't know which one did the initial
174
174
# import that does all the printing :|
175
175
176
- @expects (18 + 2 )
176
+ @expects (18 + 2 ) # $ unresolved_call=expects(..) unresolved_call=expects(..)(..)
177
177
def test_global_scope ():
178
178
import fieldflow .test_global
179
179
180
- fieldflow .test_global .func_defined_before ()
181
- fieldflow .test_global .func_defined_after ()
180
+ fieldflow .test_global .func_defined_before () # $ unresolved_call=fieldflow.test_global.func_defined_before()
181
+ fieldflow .test_global .func_defined_after () # $ unresolved_call=fieldflow.test_global.func_defined_after()
182
182
183
183
# ------------------------------------------------------------------------------
184
184
# Global flow cases that doesn't work in this file, but works in test_global.py
@@ -194,40 +194,40 @@ def test_global_scope():
194
194
195
195
# apparently these if statements below makes a difference :O
196
196
# but one is not enough
197
- cond = os .urandom (1 )[0 ] > 128
197
+ cond = os .urandom (1 )[0 ] > 128 # $ unresolved_call=os.urandom(..)
198
198
199
199
if cond :
200
200
pass
201
201
202
202
# def test_constructor_assign():
203
- obj2 = MyObj (SOURCE )
204
- SINK (obj2 .foo ) # $ MISSING: flow="SOURCE, l:-1 -> obj2.foo"
203
+ obj2 = MyObj (SOURCE ) # $ unresolved_call=MyObj(..)
204
+ SINK (obj2 .foo ) # $ unresolved_call=SINK(..) MISSING: flow="SOURCE, l:-1 -> obj2.foo"
205
205
206
206
if cond :
207
207
pass
208
208
209
209
# def test_constructor_assign():
210
- obj2 = MyObj (SOURCE )
211
- SINK (obj2 .foo ) # $ MISSING: flow="SOURCE, l:-1 -> obj2.foo"
210
+ obj2 = MyObj (SOURCE ) # $ unresolved_call=MyObj(..)
211
+ SINK (obj2 .foo ) # $ unresolved_call=SINK(..) MISSING: flow="SOURCE, l:-1 -> obj2.foo"
212
212
213
213
# def test_constructor_assign_kw():
214
- obj3 = MyObj (foo = SOURCE )
215
- SINK (obj3 .foo ) # $ MISSING: flow="SOURCE, l:-1 -> obj3.foo"
214
+ obj3 = MyObj (foo = SOURCE ) # $ unresolved_call=MyObj(..)
215
+ SINK (obj3 .foo ) # $ unresolved_call=SINK(..) MISSING: flow="SOURCE, l:-1 -> obj3.foo"
216
216
217
217
# def test_fields():
218
- SINK (fields_with_local_flow (SOURCE )) # $ MISSING: flow="SOURCE -> fields_with_local_flow(..)"
218
+ SINK (fields_with_local_flow (SOURCE )) # $ unresolved_call=fields_with_local_flow(..) unresolved_call=SINK(..) MISSING: flow="SOURCE -> fields_with_local_flow(..)"
219
219
220
220
# --------------------------------------
221
221
# method calls
222
222
# --------------------------------------
223
223
224
224
# def test_indirect_assign_method():
225
- myobj2 = MyObj ("OK" )
226
- myobj2 .setFoo (SOURCE )
227
- SINK (myobj2 .foo ) # $ MISSING: flow="SOURCE, l:-1 -> myobj2.foo"
225
+ myobj2 = MyObj ("OK" ) # $ unresolved_call=MyObj(..)
226
+ myobj2 .setFoo (SOURCE ) # $ unresolved_call=myobj2.setFoo(..)
227
+ SINK (myobj2 .foo ) # $ unresolved_call=SINK(..) MISSING: flow="SOURCE, l:-1 -> myobj2.foo"
228
228
229
229
# def test_nested_obj_method():
230
230
x2 = SOURCE
231
- a2 = NestedObj ()
232
- a2 .getObj ().foo = x2
233
- SINK (a2 .obj .foo ) # $ MISSING: flow="SOURCE, l:-3 -> a2.obj.foo"
231
+ a2 = NestedObj () # $ unresolved_call=NestedObj()
232
+ a2 .getObj ().foo = x2 # $ unresolved_call=a2.getObj()
233
+ SINK (a2 .obj .foo ) # $ unresolved_call=SINK(..) MISSING: flow="SOURCE, l:-3 -> a2.obj.foo"
0 commit comments