@@ -164,127 +164,18 @@ def test_nested_obj_method():
164164# Global scope
165165# ------------------------------------------------------------------------------
166166
167- def func_defined_before ():
168- SINK (global_obj .foo ) # $ MISSING: flow="SOURCE, l:+3 -> global_obj.foo"
169-
170- global_obj = MyObj (NONSOURCE )
171- global_obj .foo = SOURCE
172- SINK (global_obj .foo ) # $ flow="SOURCE, l:-1 -> global_obj.foo"
173-
174- def func_defined_after ():
175- SINK (global_obj .foo ) # $ MISSING: flow="SOURCE, l:-4 -> global_obj.foo"
176-
177- @expects (2 )
178- def test_global_funcs ():
179- func_defined_before ()
180- func_defined_after ()
181-
182- # ------------------------------------------------------------------------------
183- # All the other tests, but also in global scope.
167+ # since these are defined on global scope, and we still want to run them with
168+ # `validTest.py`, we have them defined in a different file, and have hardcoded this
169+ # number that reflects how many OK we expect to see ... Not an ideal solution, but at
170+ # least we know that the tests are actually valid.
184171#
185- # You might think that these are just the same... but it turns out they are not :O
186- # ------------------------------------------------------------------------------
187-
188-
189- myobj = MyObj ("OK" )
190-
191- setFoo (myobj , SOURCE )
192- SINK (myobj .foo ) # $ flow="SOURCE, l:-1 -> myobj.foo"
193-
194-
195-
196- myobj = MyObj ("OK" )
197-
198- myobj .setFoo (SOURCE )
199- SINK (myobj .foo ) # $ MISSING: flow
200-
201-
202-
203- myobj = MyObj (NONSOURCE )
204- myobj .foo = SOURCE
205- SINK (myobj .foo ) # $ flow="SOURCE, l:-1 -> myobj.foo"
206-
207-
208-
209- myobj = MyObj (NONSOURCE )
210- myobj .foo = SOURCE
211- myobj .foo = NONSOURCE
212- SINK_F (myobj .foo )
213-
214-
215-
216- myobj = MyObj (NONSOURCE )
217- myobj .foo = SOURCE
218- if cond :
219- myobj .foo = NONSOURCE
220- SINK_F (myobj .foo )
221- # SPLITTING happens here, so in one version there is flow, and in the other there isn't
222- # that's why it has both a flow and a MISSING: flow annotation
223- SINK (myobj .foo ) # $ flow="SOURCE, l:-6 -> myobj.foo" MISSING: flow
224-
225-
226-
227- myobj = MyObj (NONSOURCE )
228- myobj .foo = SOURCE
229- if cond :
230- myobj .foo = NONSOURCE
231- SINK_F (myobj .foo )
232- else :
233- myobj .foo = NONSOURCE
234- SINK_F (myobj .foo )
235- SINK_F (myobj .foo )
236-
237-
238-
239- myobj = MyObj (NONSOURCE )
240- myobj .foo = SOURCE
241- SINK (getattr (myobj , "foo" )) # $ flow="SOURCE, l:-1 -> getattr(..)"
242-
243-
244-
245- myobj = MyObj (NONSOURCE )
246- setattr (myobj , "foo" , SOURCE )
247- SINK (myobj .foo ) # $ flow="SOURCE, l:-1 -> myobj.foo"
248-
249-
250-
251- myobj = MyObj (NONSOURCE )
252- setattr (myobj , "foo" , SOURCE )
253- SINK (getattr (myobj , "foo" )) # $ flow="SOURCE, l:-1 -> getattr(..)"
254-
255-
256-
257- myobj = MyObj (NONSOURCE )
258- setattr (myobj , "foo" , SOURCE )
259- setattr (myobj , "foo" , NONSOURCE )
260- SINK_F (getattr (myobj , "foo" ))
261-
262-
263-
264- obj2 = MyObj (SOURCE )
265- SINK (obj2 .foo ) # $ MISSING: flow="SOURCE, l:-1 -> obj2.foo"
266-
267-
268-
269- obj3 = MyObj (foo = SOURCE )
270- SINK (obj3 .foo ) # $ MISSING: flow="SOURCE, l:-1 -> obj3.foo"
271-
272-
273- SINK (fields_with_local_flow (SOURCE )) # $ MISSING: flow="SOURCE -> fields_with_local_flow(..)"
274-
275- # ------------------------------------------------------------------------------
276- # Nested Object
277- # ------------------------------------------------------------------------------
278-
279-
280- x = SOURCE
281- a = NestedObj ()
282- a .obj .foo = x
283- SINK (a .obj .foo ) # $ flow="SOURCE, l:-3 -> a.obj.foo"
284-
172+ # Notice that since the tests are run in a random order, we cannot split the global
173+ # scope tests into multiple functions, since we wouldn't know which one did the initial
174+ # import that does all the printing :|
285175
176+ @expects (18 + 2 )
177+ def test_global_scope ():
178+ import fieldflow .test_global
286179
287- x = SOURCE
288- a = NestedObj ()
289- a .getObj ().foo = x
290- SINK (a .obj .foo ) # $ MISSING: flow
180+ fieldflow .test_global .func_defined_before ()
181+ fieldflow .test_global .func_defined_after ()
0 commit comments