From 2321eecb9ecb5087f0959fd336f2c4f574225b01 Mon Sep 17 00:00:00 2001 From: Chris Smowton Date: Fri, 1 Mar 2024 12:50:44 +0000 Subject: [PATCH] Add tests for multi-release jars under Java 11 and 17 --- .../ExtractorInformation.expected | 18 ++++++++++++++++++ .../ExtractorInformation.qlref | 1 + .../mod1/mod1pkg/Mod1Class.java | 3 +++ .../mod1/module-info.java | 5 +++++ .../mod2/mod2pkg/User.java | 7 +++++++ .../mod2/module-info.java | 5 +++++ .../java/multi-release-jar-java11/test.py | 15 +++++++++++++++ .../ExtractorInformation.expected | 18 ++++++++++++++++++ .../ExtractorInformation.qlref | 1 + .../mod1/mod1pkg/Mod1Class.java | 3 +++ .../mod1/module-info.java | 5 +++++ .../mod2/mod2pkg/User.java | 7 +++++++ .../mod2/module-info.java | 5 +++++ .../java/multi-release-jar-java17/test.py | 13 +++++++++++++ 14 files changed, 106 insertions(+) create mode 100644 java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/ExtractorInformation.expected create mode 100644 java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/ExtractorInformation.qlref create mode 100644 java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/mod1/mod1pkg/Mod1Class.java create mode 100644 java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/mod1/module-info.java create mode 100644 java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/mod2/mod2pkg/User.java create mode 100644 java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/mod2/module-info.java create mode 100644 java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/test.py create mode 100644 java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/ExtractorInformation.expected create mode 100644 java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/ExtractorInformation.qlref create mode 100644 java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/mod1/mod1pkg/Mod1Class.java create mode 100644 java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/mod1/module-info.java create mode 100644 java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/mod2/mod2pkg/User.java create mode 100644 java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/mod2/module-info.java create mode 100644 java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/test.py diff --git a/java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/ExtractorInformation.expected b/java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/ExtractorInformation.expected new file mode 100644 index 00000000000..6d33b902935 --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/ExtractorInformation.expected @@ -0,0 +1,18 @@ +| Annotation processors enabled: true | 1 | +| Number of calls with call target | 1 | +| Number of calls with missing call target | 0 | +| Number of expressions with known type | 1 | +| Number of expressions with unknown type | 0 | +| Number of files | 543 | +| Number of files with extension class | 538 | +| Number of files with extension jar | 1 | +| Number of files with extension java | 2 | +| Number of files with extension properties | 1 | +| Number of lines of code | 7 | +| Number of lines of code with extension java | 7 | +| Percentage of calls with call target | 100 | +| Percentage of expressions with known type | 100 | +| Total number of lines | 12 | +| Total number of lines with extension java | 12 | +| Used annotation processor: lombok.launch.AnnotationProcessorHider$AnnotationProcessor | 1 | +| Used annotation processor: lombok.launch.AnnotationProcessorHider$ClaimingProcessor | 1 | diff --git a/java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/ExtractorInformation.qlref b/java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/ExtractorInformation.qlref new file mode 100644 index 00000000000..ff57e78a9d7 --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/ExtractorInformation.qlref @@ -0,0 +1 @@ +Telemetry/ExtractorInformation.ql \ No newline at end of file diff --git a/java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/mod1/mod1pkg/Mod1Class.java b/java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/mod1/mod1pkg/Mod1Class.java new file mode 100644 index 00000000000..3b9bc9e0b0c --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/mod1/mod1pkg/Mod1Class.java @@ -0,0 +1,3 @@ +package mod1pkg; + +public class Mod1Class { } diff --git a/java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/mod1/module-info.java b/java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/mod1/module-info.java new file mode 100644 index 00000000000..cde20aaf6c7 --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/mod1/module-info.java @@ -0,0 +1,5 @@ +module moduleone { + + exports mod1pkg; + +} diff --git a/java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/mod2/mod2pkg/User.java b/java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/mod2/mod2pkg/User.java new file mode 100644 index 00000000000..c21bb391335 --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/mod2/mod2pkg/User.java @@ -0,0 +1,7 @@ +import mod1pkg.Mod1Class; + +public class User { + + private Mod1Class m1c; + +} diff --git a/java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/mod2/module-info.java b/java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/mod2/module-info.java new file mode 100644 index 00000000000..94f93fdfdf3 --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/mod2/module-info.java @@ -0,0 +1,5 @@ +module moduletwo { + + requires moduleone; + +} diff --git a/java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/test.py b/java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/test.py new file mode 100644 index 00000000000..c4726143c50 --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/multi-release-jar-java11/test.py @@ -0,0 +1,15 @@ +import sys + +from create_database_utils import * +import subprocess +import os + +try_use_java11() + +os.mkdir("mod1obj") +os.mkdir("mod2obj") + +subprocess.check_call(["javac", "mod1/module-info.java", "mod1/mod1pkg/Mod1Class.java", "-d", "mod1obj"]) +subprocess.check_call(["jar", "-c", "-f", "mod1.jar", "-C", "mod1obj", "mod1pkg/Mod1Class.class", "--release", "9", "-C", "mod1obj", "module-info.class"]) + +run_codeql_database_create(["javac mod2/mod2pkg/User.java mod2/module-info.java -d mod2obj -p mod1.jar"], lang="java") diff --git a/java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/ExtractorInformation.expected b/java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/ExtractorInformation.expected new file mode 100644 index 00000000000..d6bdf6dd7b5 --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/ExtractorInformation.expected @@ -0,0 +1,18 @@ +| Annotation processors enabled: true | 1 | +| Number of calls with call target | 1 | +| Number of calls with missing call target | 0 | +| Number of expressions with known type | 1 | +| Number of expressions with unknown type | 0 | +| Number of files | 610 | +| Number of files with extension class | 605 | +| Number of files with extension jar | 1 | +| Number of files with extension java | 2 | +| Number of files with extension properties | 1 | +| Number of lines of code | 7 | +| Number of lines of code with extension java | 7 | +| Percentage of calls with call target | 100 | +| Percentage of expressions with known type | 100 | +| Total number of lines | 12 | +| Total number of lines with extension java | 12 | +| Used annotation processor: lombok.launch.AnnotationProcessorHider$AnnotationProcessor | 1 | +| Used annotation processor: lombok.launch.AnnotationProcessorHider$ClaimingProcessor | 1 | diff --git a/java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/ExtractorInformation.qlref b/java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/ExtractorInformation.qlref new file mode 100644 index 00000000000..ff57e78a9d7 --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/ExtractorInformation.qlref @@ -0,0 +1 @@ +Telemetry/ExtractorInformation.ql \ No newline at end of file diff --git a/java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/mod1/mod1pkg/Mod1Class.java b/java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/mod1/mod1pkg/Mod1Class.java new file mode 100644 index 00000000000..3b9bc9e0b0c --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/mod1/mod1pkg/Mod1Class.java @@ -0,0 +1,3 @@ +package mod1pkg; + +public class Mod1Class { } diff --git a/java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/mod1/module-info.java b/java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/mod1/module-info.java new file mode 100644 index 00000000000..cde20aaf6c7 --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/mod1/module-info.java @@ -0,0 +1,5 @@ +module moduleone { + + exports mod1pkg; + +} diff --git a/java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/mod2/mod2pkg/User.java b/java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/mod2/mod2pkg/User.java new file mode 100644 index 00000000000..c21bb391335 --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/mod2/mod2pkg/User.java @@ -0,0 +1,7 @@ +import mod1pkg.Mod1Class; + +public class User { + + private Mod1Class m1c; + +} diff --git a/java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/mod2/module-info.java b/java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/mod2/module-info.java new file mode 100644 index 00000000000..94f93fdfdf3 --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/mod2/module-info.java @@ -0,0 +1,5 @@ +module moduletwo { + + requires moduleone; + +} diff --git a/java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/test.py b/java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/test.py new file mode 100644 index 00000000000..c912a0cb27a --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/multi-release-jar-java17/test.py @@ -0,0 +1,13 @@ +import sys + +from create_database_utils import * +import subprocess +import os + +os.mkdir("mod1obj") +os.mkdir("mod2obj") + +subprocess.check_call(["javac", "mod1/module-info.java", "mod1/mod1pkg/Mod1Class.java", "-d", "mod1obj"]) +subprocess.check_call(["jar", "-c", "-f", "mod1.jar", "-C", "mod1obj", "mod1pkg/Mod1Class.class", "--release", "9", "-C", "mod1obj", "module-info.class"]) + +run_codeql_database_create(["javac mod2/mod2pkg/User.java mod2/module-info.java -d mod2obj -p mod1.jar"], lang="java")