Java: Re-factor tests and update expected test output.

This commit is contained in:
Michael Nebel
2024-08-16 12:07:29 +02:00
parent 68880b2056
commit 6cb5e13a23
4 changed files with 75 additions and 36 deletions

View File

@@ -1,5 +1,7 @@
package my.qltest;
import my.qltest.external.Library;
public class C {
void foo() {
Object arg1 = new Object();
@@ -25,35 +27,50 @@ public class C {
}
void fooGenerated() {
Object arg1 = new Object();
stepArgResGenerated(arg1);
Object arg = new Object();
Object arg2 = new Object();
// The summary for the first parameter is ignored, because it is generated and
// because there is hand written summary for the second parameter.
stepArgResGeneratedIgnored(arg1, arg2);
stepArgQualGenerated(arg1);
// The summary for the first parameter is ignored, because it is generated and
// because there is hand written neutral summary model for this callable.
stepArgQualGeneratedIgnored(arg1);
// The (generated) summary is ignored because the source code is available.
stepArgResGenerated(arg);
}
Object stepArgRes(Object x) { return null; }
// Library functionality is emulated by placing the source code in a "stubs"
// folder. This means that a generated summary will be applied, if there
// doesn't exist a manual summary or manual summary neutral.
void fooLibrary() {
Object arg1 = new Object();
void stepArgArg(Object in, Object out) { }
Library lib = new Library();
void stepArgQual(Object x) { }
lib.apiStepArgResGenerated(arg1);
Object stepQualRes() { return null; }
Object arg2 = new Object();
void stepQualArg(Object out) { }
// The summary for the first parameter is ignored, because it is generated and
// because there is a manual summary for the second parameter.
lib.apiStepArgResGeneratedIgnored(arg1, arg2);
Object stepArgResGenerated(Object x) { return null; }
lib.apiStepArgQualGenerated(arg1);
Object stepArgResGeneratedIgnored(Object x, Object y) { return null; }
// The summary for the parameter is ignored, because it is generated and
// because there is a manual neutral summary model for this callable.
lib.apiStepArgQualGeneratedIgnored(arg1);
}
Object stepArgQualGenerated(Object x) { return null; }
Object stepArgQualGeneratedIgnored(Object x) { return null; }
Object stepArgRes(Object x) {
return null;
}
void stepArgArg(Object in, Object out) {}
void stepArgQual(Object x) {}
Object stepQualRes() {
return null;
}
void stepQualArg(Object out) {}
Object stepArgResGenerated(Object x) {
return null;
}
}

View File

@@ -1,11 +1,13 @@
invalidModelRow
#select
| C.java:6:16:6:19 | arg1 | C.java:6:5:6:20 | stepArgRes(...) |
| C.java:10:16:10:21 | argIn1 | C.java:10:24:10:30 | argOut1 [post update] |
| C.java:13:16:13:21 | argIn2 | C.java:13:24:13:30 | argOut2 [post update] |
| C.java:16:17:16:20 | arg2 | C.java:16:5:16:21 | this <.method> [post update] |
| C.java:18:22:18:25 | arg3 | C.java:18:5:18:8 | this [post update] |
| C.java:20:5:20:8 | this | C.java:20:5:20:22 | stepQualRes(...) |
| C.java:21:5:21:17 | this <.method> | C.java:21:5:21:17 | stepQualRes(...) |
| C.java:24:5:24:23 | this <.method> | C.java:24:17:24:22 | argOut [post update] |
| C.java:34:38:34:41 | arg2 | C.java:34:5:34:42 | stepArgResGeneratedIgnored(...) |
| C.java:8:16:8:19 | arg1 | C.java:8:5:8:20 | stepArgRes(...) |
| C.java:12:16:12:21 | argIn1 | C.java:12:24:12:30 | argOut1 [post update] |
| C.java:15:16:15:21 | argIn2 | C.java:15:24:15:30 | argOut2 [post update] |
| C.java:18:17:18:20 | arg2 | C.java:18:5:18:21 | this <.method> [post update] |
| C.java:20:22:20:25 | arg3 | C.java:20:5:20:8 | this [post update] |
| C.java:22:5:22:8 | this | C.java:22:5:22:22 | stepQualRes(...) |
| C.java:23:5:23:17 | this <.method> | C.java:23:5:23:17 | stepQualRes(...) |
| C.java:26:5:26:23 | this <.method> | C.java:26:17:26:22 | argOut [post update] |
| C.java:44:32:44:35 | arg1 | C.java:44:5:44:36 | apiStepArgResGenerated(...) |
| C.java:50:45:50:48 | arg2 | C.java:50:5:50:49 | apiStepArgResGeneratedIgnored(...) |
| C.java:52:33:52:36 | arg1 | C.java:52:5:52:7 | lib [post update] |

View File

@@ -9,13 +9,14 @@ extensions:
- ["my.qltest", "C", False, "stepQualRes", "()", "", "Argument[this]", "ReturnValue", "taint", "manual"]
- ["my.qltest", "C", False, "stepQualArg", "(Object)", "", "Argument[this]", "Argument[0]", "taint", "manual"]
- ["my.qltest", "C", False, "stepArgResGenerated", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["my.qltest", "C", False, "stepArgResGeneratedIgnored", "(Object,Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["my.qltest", "C", False, "stepArgResGeneratedIgnored", "(Object,Object)", "", "Argument[1]", "ReturnValue", "taint", "manual"]
- ["my.qltest", "C", False, "stepArgQualGenerated", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["my.qltest", "C", False, "stepArgQualGeneratedIgnored", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["my.qltest.external", "Library", False, "apiStepArgResGenerated", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["my.qltest.external", "Library", False, "apiStepArgResGeneratedIgnored", "(Object,Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["my.qltest.external", "Library", False, "apiStepArgResGeneratedIgnored", "(Object,Object)", "", "Argument[1]", "ReturnValue", "taint", "manual"]
- ["my.qltest.external", "Library", False, "apiStepArgQualGenerated", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["my.qltest.external", "Library", False, "apiStepArgQualGeneratedIgnored", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- addsTo:
pack: codeql/java-all
extensible: neutralModel
data:
- ["my.qltest", "C", "stepArgQualGenerated", "(Object)", "summary", "df-generated"]
- ["my.qltest", "C", "stepArgQualGeneratedIgnored", "(Object)", "summary", "manual"]
- ["my.qltest.external", "Library", "apiStepArgQualGenerated", "(Object)", "summary", "df-generated"]
- ["my.qltest.external", "Library", "apiStepArgQualGeneratedIgnored", "(Object)", "summary", "manual"]

View File

@@ -0,0 +1,19 @@
package my.qltest.external;
public class Library {
public Object apiStepArgResGenerated(Object x) {
return null;
}
public Object apiStepArgResGeneratedIgnored(Object x, Object y) {
return null;
}
public Object apiStepArgQualGenerated(Object x) {
return null;
}
public Object apiStepArgQualGeneratedIgnored(Object x) {
return null;
}
}