Skip to content

Commit 6cb5e13

Browse files
committed
Java: Re-factor tests and update expected test output.
1 parent 68880b2 commit 6cb5e13

File tree

4 files changed

+72
-33
lines changed

4 files changed

+72
-33
lines changed
Lines changed: 35 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package my.qltest;
22

3+
import my.qltest.external.Library;
4+
35
public class C {
46
void foo() {
57
Object arg1 = new Object();
@@ -25,35 +27,50 @@ void foo() {
2527
}
2628

2729
void fooGenerated() {
30+
Object arg = new Object();
31+
32+
// The (generated) summary is ignored because the source code is available.
33+
stepArgResGenerated(arg);
34+
}
35+
36+
// Library functionality is emulated by placing the source code in a "stubs"
37+
// folder. This means that a generated summary will be applied, if there
38+
// doesn't exist a manual summary or manual summary neutral.
39+
void fooLibrary() {
2840
Object arg1 = new Object();
29-
stepArgResGenerated(arg1);
41+
42+
Library lib = new Library();
43+
44+
lib.apiStepArgResGenerated(arg1);
3045

3146
Object arg2 = new Object();
32-
// The summary for the first parameter is ignored, because it is generated and
33-
// because there is hand written summary for the second parameter.
34-
stepArgResGeneratedIgnored(arg1, arg2);
3547

36-
stepArgQualGenerated(arg1);
3748
// The summary for the first parameter is ignored, because it is generated and
38-
// because there is hand written neutral summary model for this callable.
39-
stepArgQualGeneratedIgnored(arg1);
40-
}
49+
// because there is a manual summary for the second parameter.
50+
lib.apiStepArgResGeneratedIgnored(arg1, arg2);
4151

42-
Object stepArgRes(Object x) { return null; }
52+
lib.apiStepArgQualGenerated(arg1);
4353

44-
void stepArgArg(Object in, Object out) { }
54+
// The summary for the parameter is ignored, because it is generated and
55+
// because there is a manual neutral summary model for this callable.
56+
lib.apiStepArgQualGeneratedIgnored(arg1);
57+
}
4558

46-
void stepArgQual(Object x) { }
59+
Object stepArgRes(Object x) {
60+
return null;
61+
}
4762

48-
Object stepQualRes() { return null; }
63+
void stepArgArg(Object in, Object out) {}
4964

50-
void stepQualArg(Object out) { }
65+
void stepArgQual(Object x) {}
5166

52-
Object stepArgResGenerated(Object x) { return null; }
67+
Object stepQualRes() {
68+
return null;
69+
}
5370

54-
Object stepArgResGeneratedIgnored(Object x, Object y) { return null; }
71+
void stepQualArg(Object out) {}
5572

56-
Object stepArgQualGenerated(Object x) { return null; }
57-
58-
Object stepArgQualGeneratedIgnored(Object x) { return null; }
73+
Object stepArgResGenerated(Object x) {
74+
return null;
75+
}
5976
}
Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
invalidModelRow
22
#select
3-
| C.java:6:16:6:19 | arg1 | C.java:6:5:6:20 | stepArgRes(...) |
4-
| C.java:10:16:10:21 | argIn1 | C.java:10:24:10:30 | argOut1 [post update] |
5-
| C.java:13:16:13:21 | argIn2 | C.java:13:24:13:30 | argOut2 [post update] |
6-
| C.java:16:17:16:20 | arg2 | C.java:16:5:16:21 | this <.method> [post update] |
7-
| C.java:18:22:18:25 | arg3 | C.java:18:5:18:8 | this [post update] |
8-
| C.java:20:5:20:8 | this | C.java:20:5:20:22 | stepQualRes(...) |
9-
| C.java:21:5:21:17 | this <.method> | C.java:21:5:21:17 | stepQualRes(...) |
10-
| C.java:24:5:24:23 | this <.method> | C.java:24:17:24:22 | argOut [post update] |
11-
| C.java:34:38:34:41 | arg2 | C.java:34:5:34:42 | stepArgResGeneratedIgnored(...) |
3+
| C.java:8:16:8:19 | arg1 | C.java:8:5:8:20 | stepArgRes(...) |
4+
| C.java:12:16:12:21 | argIn1 | C.java:12:24:12:30 | argOut1 [post update] |
5+
| C.java:15:16:15:21 | argIn2 | C.java:15:24:15:30 | argOut2 [post update] |
6+
| C.java:18:17:18:20 | arg2 | C.java:18:5:18:21 | this <.method> [post update] |
7+
| C.java:20:22:20:25 | arg3 | C.java:20:5:20:8 | this [post update] |
8+
| C.java:22:5:22:8 | this | C.java:22:5:22:22 | stepQualRes(...) |
9+
| C.java:23:5:23:17 | this <.method> | C.java:23:5:23:17 | stepQualRes(...) |
10+
| C.java:26:5:26:23 | this <.method> | C.java:26:17:26:22 | argOut [post update] |
11+
| C.java:44:32:44:35 | arg1 | C.java:44:5:44:36 | apiStepArgResGenerated(...) |
12+
| C.java:50:45:50:48 | arg2 | C.java:50:5:50:49 | apiStepArgResGeneratedIgnored(...) |
13+
| C.java:52:33:52:36 | arg1 | C.java:52:5:52:7 | lib [post update] |

java/ql/test/library-tests/dataflow/external-models/steps.ext.yml

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,14 @@ extensions:
99
- ["my.qltest", "C", False, "stepQualRes", "()", "", "Argument[this]", "ReturnValue", "taint", "manual"]
1010
- ["my.qltest", "C", False, "stepQualArg", "(Object)", "", "Argument[this]", "Argument[0]", "taint", "manual"]
1111
- ["my.qltest", "C", False, "stepArgResGenerated", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
12-
- ["my.qltest", "C", False, "stepArgResGeneratedIgnored", "(Object,Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
13-
- ["my.qltest", "C", False, "stepArgResGeneratedIgnored", "(Object,Object)", "", "Argument[1]", "ReturnValue", "taint", "manual"]
14-
- ["my.qltest", "C", False, "stepArgQualGenerated", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
15-
- ["my.qltest", "C", False, "stepArgQualGeneratedIgnored", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
12+
- ["my.qltest.external", "Library", False, "apiStepArgResGenerated", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
13+
- ["my.qltest.external", "Library", False, "apiStepArgResGeneratedIgnored", "(Object,Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
14+
- ["my.qltest.external", "Library", False, "apiStepArgResGeneratedIgnored", "(Object,Object)", "", "Argument[1]", "ReturnValue", "taint", "manual"]
15+
- ["my.qltest.external", "Library", False, "apiStepArgQualGenerated", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
16+
- ["my.qltest.external", "Library", False, "apiStepArgQualGeneratedIgnored", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
1617
- addsTo:
1718
pack: codeql/java-all
1819
extensible: neutralModel
1920
data:
20-
- ["my.qltest", "C", "stepArgQualGenerated", "(Object)", "summary", "df-generated"]
21-
- ["my.qltest", "C", "stepArgQualGeneratedIgnored", "(Object)", "summary", "manual"]
21+
- ["my.qltest.external", "Library", "apiStepArgQualGenerated", "(Object)", "summary", "df-generated"]
22+
- ["my.qltest.external", "Library", "apiStepArgQualGeneratedIgnored", "(Object)", "summary", "manual"]
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package my.qltest.external;
2+
3+
public class Library {
4+
public Object apiStepArgResGenerated(Object x) {
5+
return null;
6+
}
7+
8+
public Object apiStepArgResGeneratedIgnored(Object x, Object y) {
9+
return null;
10+
}
11+
12+
public Object apiStepArgQualGenerated(Object x) {
13+
return null;
14+
}
15+
16+
public Object apiStepArgQualGeneratedIgnored(Object x) {
17+
return null;
18+
}
19+
}

0 commit comments

Comments
 (0)