Skip to content

Commit 05aa314

Browse files
committed
Python: Add tests for non-async constructs
1 parent 768932d commit 05aa314

File tree

1 file changed

+45
-0
lines changed
  • python/ql/test/experimental/dataflow/tainttracking/defaultAdditionalTaintStep

1 file changed

+45
-0
lines changed
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# Add taintlib to PATH so it can be imported during runtime without any hassle
2+
import sys; import os; sys.path.append(os.path.dirname(os.path.dirname((__file__))))
3+
from taintlib import *
4+
5+
# This has no runtime impact, but allows autocomplete to work
6+
from typing import TYPE_CHECKING
7+
if TYPE_CHECKING:
8+
from ..taintlib import *
9+
10+
11+
# Actual tests
12+
13+
class Context:
14+
def __enter__(self):
15+
return TAINTED_STRING
16+
17+
def __exit__(self, exc_type, exc, tb):
18+
pass
19+
20+
def test_with():
21+
ctx = Context()
22+
taint(ctx)
23+
with ctx as tainted:
24+
ensure_tainted(tainted) # $ tainted
25+
26+
27+
class Iter:
28+
def __iter__(self):
29+
return self
30+
31+
def __next__(self):
32+
raise StopIteration
33+
34+
def test_for():
35+
iter = Iter()
36+
taint(iter)
37+
for tainted in iter:
38+
ensure_tainted(tainted) # $ tainted
39+
40+
41+
42+
# Make tests runable
43+
44+
test_with()
45+
test_for()

0 commit comments

Comments
 (0)