From f705f4d1d7fa66eea06109f761957859d0c48aae Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 23 Jul 2026 09:28:50 +0000 Subject: [PATCH 1/9] feat: add JaCoCo code coverage reporting and Codecov upload - Add jacoco-maven-plugin 0.8.12 to pom.xml with prepare-agent and report executions - Exclude dictgenerator from coverage report - Wire argLine into maven-surefire-plugin so JaCoCo agent is activated during tests - Add test-coverage GitHub Actions job that runs tests and uploads to Codecov --- .github/workflows/maven.yml | 21 +++++++++++++++++++++ pom.xml | 29 +++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index a8a0cf4ea..40e3423fa 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -64,3 +64,24 @@ jobs: cache: 'maven' - name: Test with Maven on Windows run: ./mvnw.cmd install -B -V -D"maven.javadoc.skip"="true" -P"skipBundlePlugin,minimal-fix-latest" -D"java.util.logging.config.file"="${{github.workspace}}/quickfixj-core/src/test/resources/logging.properties" -D"http.keepAlive"="false" -D"maven.wagon.http.pool"="false" -D"maven.wagon.httpconnectionManager.ttlSeconds"="120" + + test-coverage: + runs-on: ubuntu-latest + name: Run tests and upload coverage + permissions: + contents: read + steps: + - uses: actions/checkout@v7 + - name: Set up JDK + uses: actions/setup-java@v5 + with: + distribution: 'temurin' + java-version: 21 + cache: 'maven' + - name: Test with Maven + run: ./mvnw install -B -V -D"maven.javadoc.skip"="true" -P"skipBundlePlugin,minimal-fix-latest" -D"java.util.logging.config.file"="${{github.workspace}}/quickfixj-core/src/test/resources/logging.properties" -D"http.keepAlive"="false" -D"maven.wagon.http.pool"="false" -D"maven.wagon.httpconnectionManager.ttlSeconds"="120" + - name: Upload coverage reports to Codecov + uses: codecov/codecov-action@v5 + with: + token: ${{ secrets.CODECOV_TOKEN }} + slug: quickfix-j/quickfixj diff --git a/pom.xml b/pom.xml index d22bcb205..8a8034fd8 100644 --- a/pom.xml +++ b/pom.xml @@ -73,6 +73,7 @@ 3.15.0 3.5.0 3.5.6 + 0.8.12 3.28.0 3.4.0 3.12.0 @@ -236,6 +237,9 @@ org.apache.maven.plugins maven-surefire-plugin ${maven-surefire-plugin-version} + + @{argLine} -Dfile.encoding=${project.build.sourceEncoding} + org.apache.maven.plugins @@ -448,6 +452,31 @@ + + org.jacoco + jacoco-maven-plugin + ${jacoco-maven-plugin-version} + + + jacoco-initialize + + prepare-agent + + + + jacoco-site + package + + report + + + + org/quickfixj/dictgenerator/** + + + + + From 189f22a7cf48f5ee172f76f2d66e1df49f6b0123 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 23 Jul 2026 09:51:41 +0000 Subject: [PATCH 2/9] fix: jacoco version 0.8.15, correct exclusion pattern, add nightly coverage upload --- .github/workflows/nightly-build.yml | 6 ++++++ pom.xml | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/nightly-build.yml b/.github/workflows/nightly-build.yml index 35663ec1c..388073823 100644 --- a/.github/workflows/nightly-build.yml +++ b/.github/workflows/nightly-build.yml @@ -24,6 +24,12 @@ jobs: - name: Build SNAPSHOT run: ./mvnw clean package -pl '!quickfixj-distribution' -B -V -D"maven.javadoc.skip"="true" -D"java.util.logging.config.file"="${{github.workspace}}/quickfixj-core/src/test/resources/logging.properties" -D"http.keepAlive"="false" -D"maven.wagon.http.pool"="false" -D"maven.wagon.httpconnectionManager.ttlSeconds"="120" + - name: Upload coverage reports to Codecov + uses: codecov/codecov-action@v5 + with: + token: ${{ secrets.CODECOV_TOKEN }} + slug: quickfix-j/quickfixj + - name: Delete old packages continue-on-error: true uses: SmartsquareGmbH/delete-old-packages@v1.0.0 diff --git a/pom.xml b/pom.xml index 8a8034fd8..2cb27ec13 100644 --- a/pom.xml +++ b/pom.xml @@ -73,7 +73,7 @@ 3.15.0 3.5.0 3.5.6 - 0.8.12 + 0.8.15 3.28.0 3.4.0 3.12.0 @@ -471,7 +471,7 @@ - org/quickfixj/dictgenerator/** + quickfixj-messages/quickfixj-messages-*/target/classes/** From c71a70d1d6564f2d33990174968fe669e1cd3c41 Mon Sep 17 00:00:00 2001 From: Christoph John Date: Thu, 23 Jul 2026 13:19:44 +0200 Subject: [PATCH 3/9] Remove test-coverage job from maven.yml ... it is done on the nightly build. --- .github/workflows/maven.yml | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 40e3423fa..a8a0cf4ea 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -64,24 +64,3 @@ jobs: cache: 'maven' - name: Test with Maven on Windows run: ./mvnw.cmd install -B -V -D"maven.javadoc.skip"="true" -P"skipBundlePlugin,minimal-fix-latest" -D"java.util.logging.config.file"="${{github.workspace}}/quickfixj-core/src/test/resources/logging.properties" -D"http.keepAlive"="false" -D"maven.wagon.http.pool"="false" -D"maven.wagon.httpconnectionManager.ttlSeconds"="120" - - test-coverage: - runs-on: ubuntu-latest - name: Run tests and upload coverage - permissions: - contents: read - steps: - - uses: actions/checkout@v7 - - name: Set up JDK - uses: actions/setup-java@v5 - with: - distribution: 'temurin' - java-version: 21 - cache: 'maven' - - name: Test with Maven - run: ./mvnw install -B -V -D"maven.javadoc.skip"="true" -P"skipBundlePlugin,minimal-fix-latest" -D"java.util.logging.config.file"="${{github.workspace}}/quickfixj-core/src/test/resources/logging.properties" -D"http.keepAlive"="false" -D"maven.wagon.http.pool"="false" -D"maven.wagon.httpconnectionManager.ttlSeconds"="120" - - name: Upload coverage reports to Codecov - uses: codecov/codecov-action@v5 - with: - token: ${{ secrets.CODECOV_TOKEN }} - slug: quickfix-j/quickfixj From 072ac8c0927f831be13678a00c73096cd61dd651 Mon Sep 17 00:00:00 2001 From: Christoph John Date: Thu, 23 Jul 2026 13:31:20 +0200 Subject: [PATCH 4/9] Add Codecov badge to README Added Codecov badge to README for coverage tracking. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index c7c7cdfbb..245c236aa 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,7 @@ QuickFIX/J [![Java CI](https://github.com/quickfix-j/quickfixj/actions/workflows/maven.yml/badge.svg)](https://github.com/quickfix-j/quickfixj/actions/workflows/maven.yml) [![CodeQL](https://github.com/quickfix-j/quickfixj/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/quickfix-j/quickfixj/actions/workflows/codeql-analysis.yml) [![Sonatype Central](https://maven-badges.sml.io/sonatype-central/org.quickfixj/quickfixj-core/badge.svg)](https://maven-badges.sml.io/sonatype-central/org.quickfixj/quickfixj-core) +[![codecov](https://codecov.io/gh/quickfix-j/quickfixj/graph/badge.svg?token=svUBx8TTzQ)](https://codecov.io/gh/quickfix-j/quickfixj) This is the official QuickFIX/J project repository. From 4b681f91de2b448ee6789636922c8e789215b513 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 23 Jul 2026 12:40:09 +0000 Subject: [PATCH 5/9] refactor: move JaCoCo to a coverage Maven profile, activate only on nightly build - Add default empty argLine property so surefire @{argLine} expands safely without the profile - Move jacoco-maven-plugin (prepare-agent + report) into a new coverage profile - Activate -Pcoverage only on the nightly Build SNAPSHOT step --- .github/workflows/nightly-build.yml | 2 +- pom.xml | 64 +++++++++++++++++------------ 2 files changed, 38 insertions(+), 28 deletions(-) diff --git a/.github/workflows/nightly-build.yml b/.github/workflows/nightly-build.yml index 388073823..54c54da6b 100644 --- a/.github/workflows/nightly-build.yml +++ b/.github/workflows/nightly-build.yml @@ -22,7 +22,7 @@ jobs: cache: maven - name: Build SNAPSHOT - run: ./mvnw clean package -pl '!quickfixj-distribution' -B -V -D"maven.javadoc.skip"="true" -D"java.util.logging.config.file"="${{github.workspace}}/quickfixj-core/src/test/resources/logging.properties" -D"http.keepAlive"="false" -D"maven.wagon.http.pool"="false" -D"maven.wagon.httpconnectionManager.ttlSeconds"="120" + run: ./mvnw clean package -pl '!quickfixj-distribution' -B -V -D"maven.javadoc.skip"="true" -P"coverage" -D"java.util.logging.config.file"="${{github.workspace}}/quickfixj-core/src/test/resources/logging.properties" -D"http.keepAlive"="false" -D"maven.wagon.http.pool"="false" -D"maven.wagon.httpconnectionManager.ttlSeconds"="120" - name: Upload coverage reports to Codecov uses: codecov/codecov-action@v5 diff --git a/pom.xml b/pom.xml index 2cb27ec13..8f158cee2 100644 --- a/pom.xml +++ b/pom.xml @@ -74,6 +74,7 @@ 3.5.0 3.5.6 0.8.15 + 3.28.0 3.4.0 3.12.0 @@ -451,35 +452,44 @@ - - - org.jacoco - jacoco-maven-plugin - ${jacoco-maven-plugin-version} - - - jacoco-initialize - - prepare-agent - - - - jacoco-site - package - - report - - - - quickfixj-messages/quickfixj-messages-*/target/classes/** - - - - - - + + + coverage + + false + + + + + org.jacoco + jacoco-maven-plugin + ${jacoco-maven-plugin-version} + + + jacoco-initialize + + prepare-agent + + + + jacoco-site + package + + report + + + + quickfixj-messages/quickfixj-messages-*/target/classes/** + + + + + + + + skipBundlePlugin From 94f5e1c32972c14f4d3351f69c857ddad6964c54 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 23 Jul 2026 13:42:01 +0000 Subject: [PATCH 6/9] fix: correct mismatched closing tag in pom.xml ( vs ) --- pom.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 8f158cee2..665802d00 100644 --- a/pom.xml +++ b/pom.xml @@ -452,7 +452,8 @@ - + + From 9efddeb645ffc6fbd837542cf0f2e5bd8e595b0c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 24 Jul 2026 09:45:37 +0000 Subject: [PATCH 7/9] refactor: move Codecov upload from nightly build to maven.yml coverage job --- .github/workflows/maven.yml | 20 ++++++++++++++++++++ .github/workflows/nightly-build.yml | 8 +------- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index a8a0cf4ea..8d9d6468c 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -38,6 +38,26 @@ jobs: - name: Test with Maven run: ./mvnw install -B -V -D"maven.javadoc.skip"="true" -P"skipBundlePlugin,minimal-fix-latest" -D"java.util.logging.config.file"="${{github.workspace}}/quickfixj-core/src/test/resources/logging.properties" -D"http.keepAlive"="false" -D"maven.wagon.http.pool"="false" -D"maven.wagon.httpconnectionManager.ttlSeconds"="120" + coverage: + runs-on: ubuntu-latest + name: Coverage JDK 21, ubuntu-latest + + steps: + - uses: actions/checkout@v7 + - name: Set up JDK + uses: actions/setup-java@v5 + with: + distribution: 'corretto' + java-version: 21 + cache: 'maven' + - name: Test with Maven (coverage) + run: ./mvnw install -B -V -D"maven.javadoc.skip"="true" -P"skipBundlePlugin,minimal-fix-latest,coverage" -D"java.util.logging.config.file"="${{github.workspace}}/quickfixj-core/src/test/resources/logging.properties" -D"http.keepAlive"="false" -D"maven.wagon.http.pool"="false" -D"maven.wagon.httpconnectionManager.ttlSeconds"="120" + - name: Upload coverage reports to Codecov + uses: codecov/codecov-action@v5 + with: + token: ${{ secrets.CODECOV_TOKEN }} + slug: quickfix-j/quickfixj + test-windows: runs-on: ${{ matrix.os }} strategy: diff --git a/.github/workflows/nightly-build.yml b/.github/workflows/nightly-build.yml index 54c54da6b..66c02b0f1 100644 --- a/.github/workflows/nightly-build.yml +++ b/.github/workflows/nightly-build.yml @@ -22,13 +22,7 @@ jobs: cache: maven - name: Build SNAPSHOT - run: ./mvnw clean package -pl '!quickfixj-distribution' -B -V -D"maven.javadoc.skip"="true" -P"coverage" -D"java.util.logging.config.file"="${{github.workspace}}/quickfixj-core/src/test/resources/logging.properties" -D"http.keepAlive"="false" -D"maven.wagon.http.pool"="false" -D"maven.wagon.httpconnectionManager.ttlSeconds"="120" - - - name: Upload coverage reports to Codecov - uses: codecov/codecov-action@v5 - with: - token: ${{ secrets.CODECOV_TOKEN }} - slug: quickfix-j/quickfixj + run: ./mvnw clean package -pl '!quickfixj-distribution' -B -V -D"maven.javadoc.skip"="true" -P"skipBundlePlugin,minimal-fix-latest" -D"java.util.logging.config.file"="${{github.workspace}}/quickfixj-core/src/test/resources/logging.properties" -D"http.keepAlive"="false" -D"maven.wagon.http.pool"="false" -D"maven.wagon.httpconnectionManager.ttlSeconds"="120" - name: Delete old packages continue-on-error: true From ea6f47c02b3e9d411a757a8dfbfdc5d588567c05 Mon Sep 17 00:00:00 2001 From: Christoph John Date: Fri, 24 Jul 2026 11:54:33 +0200 Subject: [PATCH 8/9] Removed incorrectly added profiles --- .github/workflows/nightly-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/nightly-build.yml b/.github/workflows/nightly-build.yml index 66c02b0f1..35663ec1c 100644 --- a/.github/workflows/nightly-build.yml +++ b/.github/workflows/nightly-build.yml @@ -22,7 +22,7 @@ jobs: cache: maven - name: Build SNAPSHOT - run: ./mvnw clean package -pl '!quickfixj-distribution' -B -V -D"maven.javadoc.skip"="true" -P"skipBundlePlugin,minimal-fix-latest" -D"java.util.logging.config.file"="${{github.workspace}}/quickfixj-core/src/test/resources/logging.properties" -D"http.keepAlive"="false" -D"maven.wagon.http.pool"="false" -D"maven.wagon.httpconnectionManager.ttlSeconds"="120" + run: ./mvnw clean package -pl '!quickfixj-distribution' -B -V -D"maven.javadoc.skip"="true" -D"java.util.logging.config.file"="${{github.workspace}}/quickfixj-core/src/test/resources/logging.properties" -D"http.keepAlive"="false" -D"maven.wagon.http.pool"="false" -D"maven.wagon.httpconnectionManager.ttlSeconds"="120" - name: Delete old packages continue-on-error: true From 26979eea9d5398e95840faa1e7673c717ca136f9 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 24 Jul 2026 10:51:51 +0000 Subject: [PATCH 9/9] refactor: move JaCoCo to main build; upload coverage from ubuntu/JDK21 test job --- .github/workflows/maven.yml | 16 +--------- pom.xml | 62 ++++++++++++++++--------------------- 2 files changed, 27 insertions(+), 51 deletions(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 8d9d6468c..c8e56320d 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -37,22 +37,8 @@ jobs: cache: 'maven' - name: Test with Maven run: ./mvnw install -B -V -D"maven.javadoc.skip"="true" -P"skipBundlePlugin,minimal-fix-latest" -D"java.util.logging.config.file"="${{github.workspace}}/quickfixj-core/src/test/resources/logging.properties" -D"http.keepAlive"="false" -D"maven.wagon.http.pool"="false" -D"maven.wagon.httpconnectionManager.ttlSeconds"="120" - - coverage: - runs-on: ubuntu-latest - name: Coverage JDK 21, ubuntu-latest - - steps: - - uses: actions/checkout@v7 - - name: Set up JDK - uses: actions/setup-java@v5 - with: - distribution: 'corretto' - java-version: 21 - cache: 'maven' - - name: Test with Maven (coverage) - run: ./mvnw install -B -V -D"maven.javadoc.skip"="true" -P"skipBundlePlugin,minimal-fix-latest,coverage" -D"java.util.logging.config.file"="${{github.workspace}}/quickfixj-core/src/test/resources/logging.properties" -D"http.keepAlive"="false" -D"maven.wagon.http.pool"="false" -D"maven.wagon.httpconnectionManager.ttlSeconds"="120" - name: Upload coverage reports to Codecov + if: matrix.os == 'ubuntu-latest' && matrix.java == 21 uses: codecov/codecov-action@v5 with: token: ${{ secrets.CODECOV_TOKEN }} diff --git a/pom.xml b/pom.xml index 665802d00..f5463f23e 100644 --- a/pom.xml +++ b/pom.xml @@ -453,44 +453,34 @@ - + + org.jacoco + jacoco-maven-plugin + ${jacoco-maven-plugin-version} + + + jacoco-initialize + + prepare-agent + + + + jacoco-site + package + + report + + + + quickfixj-messages/quickfixj-messages-*/target/classes/** + + + + + + - - coverage - - false - - - - - org.jacoco - jacoco-maven-plugin - ${jacoco-maven-plugin-version} - - - jacoco-initialize - - prepare-agent - - - - jacoco-site - package - - report - - - - quickfixj-messages/quickfixj-messages-*/target/classes/** - - - - - - - - skipBundlePlugin