Skip to content

Commit 4fc3cae

Browse files
committed
Python: Add test for how arguments to *args and **kwargs are handled
1 parent 87ee6ae commit 4fc3cae

File tree

7 files changed

+23
-0
lines changed

7 files changed

+23
-0
lines changed

python/ql/test/library-tests/PointsTo/calls/CallPointsTo.expected

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,5 @@
1515
| 42 | ControlFlowNode for Attribute() | Method(Function C.n, C()) |
1616
| 45 | ControlFlowNode for open() | Builtin-function open |
1717
| 46 | ControlFlowNode for open() | Builtin-function open |
18+
| 51 | ControlFlowNode for foo() | Function foo |
19+
| 55 | ControlFlowNode for bar() | Function bar |

python/ql/test/library-tests/PointsTo/calls/GetACall.expected

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,5 @@
1919
| 42 | ControlFlowNode for Attribute() | Method(Function C.n, C()) |
2020
| 45 | ControlFlowNode for open() | Builtin-function open |
2121
| 46 | ControlFlowNode for open() | Builtin-function open |
22+
| 51 | ControlFlowNode for foo() | Function foo |
23+
| 55 | ControlFlowNode for bar() | Function bar |

python/ql/test/library-tests/PointsTo/calls/getArgumentForCall.expected

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,7 @@
2828
| 42 | ControlFlowNode for Attribute() | Method(Function C.n, C()) | 0 | ControlFlowNode for IntegerLiteral |
2929
| 45 | ControlFlowNode for open() | Builtin-function open | 0 | ControlFlowNode for Str |
3030
| 45 | ControlFlowNode for open() | Builtin-function open | 1 | ControlFlowNode for Str |
31+
| 51 | ControlFlowNode for foo() | Function foo | 0 | ControlFlowNode for IntegerLiteral |
32+
| 51 | ControlFlowNode for foo() | Function foo | 1 | ControlFlowNode for IntegerLiteral |
33+
| 51 | ControlFlowNode for foo() | Function foo | 2 | ControlFlowNode for IntegerLiteral |
34+
| 55 | ControlFlowNode for bar() | Function bar | 0 | ControlFlowNode for IntegerLiteral |

python/ql/test/library-tests/PointsTo/calls/getNamedArgumentForCall.expected

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,5 @@
2323
| 42 | ControlFlowNode for Attribute() | Function C.n | arg1 | ControlFlowNode for IntegerLiteral |
2424
| 42 | ControlFlowNode for Attribute() | Function C.n | self | ControlFlowNode for c |
2525
| 42 | ControlFlowNode for Attribute() | Method(Function C.n, C()) | arg1 | ControlFlowNode for IntegerLiteral |
26+
| 51 | ControlFlowNode for foo() | Function foo | a | ControlFlowNode for IntegerLiteral |
27+
| 55 | ControlFlowNode for bar() | Function bar | a | ControlFlowNode for IntegerLiteral |

python/ql/test/library-tests/PointsTo/calls/getParameter.expected

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
| Function C.n | 0 | ControlFlowNode for self |
22
| Function C.n | 1 | ControlFlowNode for arg1 |
33
| Function D.foo | 0 | ControlFlowNode for arg |
4+
| Function bar | 0 | ControlFlowNode for a |
45
| Function f | 0 | ControlFlowNode for arg0 |
56
| Function f | 1 | ControlFlowNode for arg1 |
67
| Function f | 2 | ControlFlowNode for arg2 |
8+
| Function foo | 0 | ControlFlowNode for a |
79
| Method(Function C.n, C()) | 0 | ControlFlowNode for arg1 |
810
| Method(Function C.n, class C) | 0 | ControlFlowNode for arg1 |
911
| Method(Function f, C()) | 0 | ControlFlowNode for arg1 |

python/ql/test/library-tests/PointsTo/calls/getParameterByName.expected

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
| Function C.n | arg1 | ControlFlowNode for arg1 |
22
| Function C.n | self | ControlFlowNode for self |
33
| Function D.foo | arg | ControlFlowNode for arg |
4+
| Function bar | a | ControlFlowNode for a |
45
| Function f | arg0 | ControlFlowNode for arg0 |
56
| Function f | arg1 | ControlFlowNode for arg1 |
67
| Function f | arg2 | ControlFlowNode for arg2 |
8+
| Function foo | a | ControlFlowNode for a |
79
| Method(Function C.n, C()) | arg1 | ControlFlowNode for arg1 |
810
| Method(Function C.n, class C) | arg1 | ControlFlowNode for arg1 |
911
| Method(Function f, C()) | arg1 | ControlFlowNode for arg1 |

python/ql/test/library-tests/PointsTo/calls/test.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,3 +44,12 @@ def foo(arg):
4444
# positional/keyword arguments for a builtin function
4545
open("foo.txt", "rb") # TODO: Not handled by getNamedArgumentForCall
4646
open(file="foo.txt", mode="rb") # TODO: Not handled by either getNamedArgumentForCall or getArgumentForCall
47+
48+
# Testing how arguments to *args and **kwargs are handled
49+
def foo(a, *args):
50+
pass
51+
foo(1, 2, 3)
52+
53+
def bar(a, **kwargs):
54+
pass
55+
bar(a=1, b=2, c=3) # TODO: no result for `b` or `c` with getNamedArgumentForCall

0 commit comments

Comments
 (0)