From bb64af0b892031d0c2d6a02bb704fa29b6d13a98 Mon Sep 17 00:00:00 2001 From: Anders Fugmann Date: Wed, 12 Aug 2026 14:03:29 +0200 Subject: [PATCH 1/2] Java: add regression test for Maven version property Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 77fc65d2-e1bb-46b1-a73d-aed6101a7596 --- .../maven-enforcer-property-version/pom.xml | 134 ++++++++++++++++++ .../settings.xml | 10 ++ .../source_archive.expected | 11 ++ .../src/main/java/com/example/App.java | 30 ++++ .../src/main/resources/my-app.properties | 1 + .../src/main/resources/page.xml | 8 ++ .../src/main/resources/struts.xml | 4 + .../src/test/java/com/example/AppTest.java | 20 +++ .../maven-enforcer-property-version/test.py | 9 ++ .../maven-enforcer-single-version/test.py | 1 + 10 files changed, 228 insertions(+) create mode 100644 java/ql/integration-tests/java/maven-enforcer-property-version/pom.xml create mode 100644 java/ql/integration-tests/java/maven-enforcer-property-version/settings.xml create mode 100644 java/ql/integration-tests/java/maven-enforcer-property-version/source_archive.expected create mode 100644 java/ql/integration-tests/java/maven-enforcer-property-version/src/main/java/com/example/App.java create mode 100644 java/ql/integration-tests/java/maven-enforcer-property-version/src/main/resources/my-app.properties create mode 100644 java/ql/integration-tests/java/maven-enforcer-property-version/src/main/resources/page.xml create mode 100644 java/ql/integration-tests/java/maven-enforcer-property-version/src/main/resources/struts.xml create mode 100644 java/ql/integration-tests/java/maven-enforcer-property-version/src/test/java/com/example/AppTest.java create mode 100644 java/ql/integration-tests/java/maven-enforcer-property-version/test.py diff --git a/java/ql/integration-tests/java/maven-enforcer-property-version/pom.xml b/java/ql/integration-tests/java/maven-enforcer-property-version/pom.xml new file mode 100644 index 000000000000..1fde7386b72b --- /dev/null +++ b/java/ql/integration-tests/java/maven-enforcer-property-version/pom.xml @@ -0,0 +1,134 @@ + + + + 4.0.0 + + com.example + maven-sample + 1.0-SNAPSHOT + + maven-sample + + http://www.example.com + + + UTF-8 + 1.7 + 1.7 + 3.9.1 + + + + + junit + junit + 4.11 + test + + + + + + + exec-maven-plugin + org.codehaus.mojo + 1.1.1 + + + check-maven-version + package + + java + + + + + com.example.App + + + + com.diffplug.spotless + spotless-maven-plugin + 2.19.1 + + + + check + + compile + + + + + + /* FAIL ME */ + + + + + + org.apache.maven.plugins + maven-enforcer-plugin + + + enforce-maven + + enforce + + + + + ${maven.version} + + + + + + + + + + + + + maven-clean-plugin + 3.1.0 + + + + maven-resources-plugin + 3.0.2 + + + maven-compiler-plugin + 3.8.0 + + + maven-surefire-plugin + 2.22.1 + + + maven-jar-plugin + 3.0.2 + + + maven-install-plugin + 2.5.2 + + + maven-deploy-plugin + 2.8.2 + + + + maven-site-plugin + 3.7.1 + + + maven-project-info-reports-plugin + 3.0.0 + + + + + diff --git a/java/ql/integration-tests/java/maven-enforcer-property-version/settings.xml b/java/ql/integration-tests/java/maven-enforcer-property-version/settings.xml new file mode 100644 index 000000000000..a40670670a62 --- /dev/null +++ b/java/ql/integration-tests/java/maven-enforcer-property-version/settings.xml @@ -0,0 +1,10 @@ + + + + google-maven-central + GCS Maven Central mirror + https://maven-central.storage-download.googleapis.com/maven2/ + central + + + diff --git a/java/ql/integration-tests/java/maven-enforcer-property-version/source_archive.expected b/java/ql/integration-tests/java/maven-enforcer-property-version/source_archive.expected new file mode 100644 index 000000000000..d86dae4531fd --- /dev/null +++ b/java/ql/integration-tests/java/maven-enforcer-property-version/source_archive.expected @@ -0,0 +1,11 @@ +pom.xml +settings.xml +src/main/java/com/example/App.java +src/main/resources/my-app.properties +src/main/resources/page.xml +src/main/resources/struts.xml +src/test/java/com/example/AppTest.java +target/classes/my-app.properties +target/classes/page.xml +target/classes/struts.xml +target/maven-archiver/pom.properties diff --git a/java/ql/integration-tests/java/maven-enforcer-property-version/src/main/java/com/example/App.java b/java/ql/integration-tests/java/maven-enforcer-property-version/src/main/java/com/example/App.java new file mode 100644 index 000000000000..3229e21835cd --- /dev/null +++ b/java/ql/integration-tests/java/maven-enforcer-property-version/src/main/java/com/example/App.java @@ -0,0 +1,30 @@ +package com.example; + +import java.util.regex.Pattern; +import java.nio.file.Path; +import java.nio.file.Paths; + +/** + * Hello world! + * + */ +public class App +{ + public static void main( String[] args ) + { + System.out.println( "Hello World!" ); + String expectedVersion = System.getenv("EXPECT_MAVEN"); + Path mavenHome = Paths.get(System.getProperty("maven.home")).normalize(); + String observedVersion = mavenHome.getFileName().toString(); + if (expectedVersion != null && !expectedVersion.equals(observedVersion)) { + System.err.println("Wrong maven version, expected '" + expectedVersion + "' but got '" + observedVersion + "'" + mavenHome); + System.exit(1); + } + String commandMatcher = System.getenv("EXPECT_COMMAND_REGEX"); + String command = System.getProperty("sun.java.command"); + if (commandMatcher != null && !Pattern.matches(commandMatcher, command)) { + System.err.println("Wrong command line, '" + command + "' does not match '" + commandMatcher + "'"); + System.exit(1); + } + } +} diff --git a/java/ql/integration-tests/java/maven-enforcer-property-version/src/main/resources/my-app.properties b/java/ql/integration-tests/java/maven-enforcer-property-version/src/main/resources/my-app.properties new file mode 100644 index 000000000000..e566b49a29a8 --- /dev/null +++ b/java/ql/integration-tests/java/maven-enforcer-property-version/src/main/resources/my-app.properties @@ -0,0 +1 @@ +version=1.0 diff --git a/java/ql/integration-tests/java/maven-enforcer-property-version/src/main/resources/page.xml b/java/ql/integration-tests/java/maven-enforcer-property-version/src/main/resources/page.xml new file mode 100644 index 000000000000..2bab459cb031 --- /dev/null +++ b/java/ql/integration-tests/java/maven-enforcer-property-version/src/main/resources/page.xml @@ -0,0 +1,8 @@ + + +A sample + + +

Hello world!

+ + diff --git a/java/ql/integration-tests/java/maven-enforcer-property-version/src/main/resources/struts.xml b/java/ql/integration-tests/java/maven-enforcer-property-version/src/main/resources/struts.xml new file mode 100644 index 000000000000..73fc0c6b9cb6 --- /dev/null +++ b/java/ql/integration-tests/java/maven-enforcer-property-version/src/main/resources/struts.xml @@ -0,0 +1,4 @@ + + +This is a sample file + diff --git a/java/ql/integration-tests/java/maven-enforcer-property-version/src/test/java/com/example/AppTest.java b/java/ql/integration-tests/java/maven-enforcer-property-version/src/test/java/com/example/AppTest.java new file mode 100644 index 000000000000..328b4d97ce59 --- /dev/null +++ b/java/ql/integration-tests/java/maven-enforcer-property-version/src/test/java/com/example/AppTest.java @@ -0,0 +1,20 @@ +package com.example; + +import static org.junit.Assert.assertTrue; + +import org.junit.Test; + +/** + * Unit test for simple App. + */ +public class AppTest +{ + /** + * Rigorous Test :-) + */ + @Test + public void shouldAnswerWithTrue() + { + assertTrue( true ); + } +} diff --git a/java/ql/integration-tests/java/maven-enforcer-property-version/test.py b/java/ql/integration-tests/java/maven-enforcer-property-version/test.py new file mode 100644 index 000000000000..ac4bff0d9e26 --- /dev/null +++ b/java/ql/integration-tests/java/maven-enforcer-property-version/test.py @@ -0,0 +1,9 @@ +import os + +def test(codeql, java): + codeql.database.create( + _env={ + "EXPECT_MAVEN": "apache-maven-3.9.9", + "LGTM_INDEX_MAVEN_SETTINGS_FILE": os.path.join(os.path.dirname(os.path.realpath(__file__)), "settings.xml"), + }, + ) diff --git a/java/ql/integration-tests/java/maven-enforcer-single-version/test.py b/java/ql/integration-tests/java/maven-enforcer-single-version/test.py index a71c8821d5e6..ac4bff0d9e26 100644 --- a/java/ql/integration-tests/java/maven-enforcer-single-version/test.py +++ b/java/ql/integration-tests/java/maven-enforcer-single-version/test.py @@ -3,6 +3,7 @@ def test(codeql, java): codeql.database.create( _env={ + "EXPECT_MAVEN": "apache-maven-3.9.9", "LGTM_INDEX_MAVEN_SETTINGS_FILE": os.path.join(os.path.dirname(os.path.realpath(__file__)), "settings.xml"), }, ) From 668f4e836ef70bacad089fa13c05f97cb0cc5cba Mon Sep 17 00:00:00 2001 From: Anders Fugmann Date: Wed, 12 Aug 2026 14:49:51 +0200 Subject: [PATCH 2/2] Java: test Maven 3.9.16 selection Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: e435859b-f4ed-442f-b649-5e1002031780 --- .../java/maven-enforcer-property-version/test.py | 2 +- .../java/maven-enforcer-single-version/test.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/java/ql/integration-tests/java/maven-enforcer-property-version/test.py b/java/ql/integration-tests/java/maven-enforcer-property-version/test.py index ac4bff0d9e26..295db6762b6f 100644 --- a/java/ql/integration-tests/java/maven-enforcer-property-version/test.py +++ b/java/ql/integration-tests/java/maven-enforcer-property-version/test.py @@ -3,7 +3,7 @@ def test(codeql, java): codeql.database.create( _env={ - "EXPECT_MAVEN": "apache-maven-3.9.9", + "EXPECT_MAVEN": "apache-maven-3.9.16", "LGTM_INDEX_MAVEN_SETTINGS_FILE": os.path.join(os.path.dirname(os.path.realpath(__file__)), "settings.xml"), }, ) diff --git a/java/ql/integration-tests/java/maven-enforcer-single-version/test.py b/java/ql/integration-tests/java/maven-enforcer-single-version/test.py index ac4bff0d9e26..295db6762b6f 100644 --- a/java/ql/integration-tests/java/maven-enforcer-single-version/test.py +++ b/java/ql/integration-tests/java/maven-enforcer-single-version/test.py @@ -3,7 +3,7 @@ def test(codeql, java): codeql.database.create( _env={ - "EXPECT_MAVEN": "apache-maven-3.9.9", + "EXPECT_MAVEN": "apache-maven-3.9.16", "LGTM_INDEX_MAVEN_SETTINGS_FILE": os.path.join(os.path.dirname(os.path.realpath(__file__)), "settings.xml"), }, )