From 701a5c67e2578eddd12fea9b689ad1e7f3f765d7 Mon Sep 17 00:00:00 2001 From: Atish Kumar Dipongkor Date: Tue, 9 Dec 2025 09:30:32 -0500 Subject: [PATCH 1/5] Add Java test coverage workflow --- .github/workflows/coverage.yml | 80 ++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 .github/workflows/coverage.yml diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml new file mode 100644 index 000000000..3fdd502a6 --- /dev/null +++ b/.github/workflows/coverage.yml @@ -0,0 +1,80 @@ +name: Java Test Coverage + +on: + push: + branches: [main, master, develop] + pull_request: + branches: [main, master, develop] + +jobs: + test-coverage: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + cache: 'maven' + + - name: Run tests with coverage + run: mvn clean test jacoco:report + + - name: Generate line-level coverage + run: python3 scripts/parse_jacoco.py target/site/jacoco/jacoco.xml --output-dir target/coverage + + - name: Upload coverage reports + uses: actions/upload-artifact@v4 + with: + name: coverage-reports + path: | + target/site/jacoco/ + target/coverage/ + retention-days: 30 + + - name: Coverage comment on PR + if: github.event_name == 'pull_request' + uses: madrapps/jacoco-report@v1.6.1 + with: + paths: target/site/jacoco/jacoco.xml + token: ${{ secrets.GITHUB_TOKEN }} + min-coverage-overall: 60 + min-coverage-changed-files: 80 + + diff-coverage: + runs-on: ubuntu-latest + if: github.event_name == 'pull_request' + needs: test-coverage + + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - uses: actions/download-artifact@v4 + with: + name: coverage-reports + path: coverage/ + + - uses: actions/setup-python@v5 + with: + python-version: '3.11' + + - name: Diff coverage + run: | + pip install diff-cover + diff-cover coverage/target/site/jacoco/jacoco.xml \ + --compare-branch=origin/${{ github.base_ref }} \ + --html-report diff-coverage.html \ + --json-report diff-coverage.json + + - uses: actions/upload-artifact@v4 + with: + name: diff-coverage + path: diff-coverage.* From a392c347d9cef19a49ac754f728966afad6a6705 Mon Sep 17 00:00:00 2001 From: Atish Kumar Dipongkor Date: Tue, 9 Dec 2025 09:32:16 -0500 Subject: [PATCH 2/5] Integrate JaCoCo Maven plugin Added JaCoCo Maven plugin for code coverage reports. --- pom.xml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/pom.xml b/pom.xml index a3885fdcf..25932f928 100644 --- a/pom.xml +++ b/pom.xml @@ -169,6 +169,26 @@ + + org.jacoco + jacoco-maven-plugin + 0.8.11 + + + prepare-agent + + prepare-agent + + + + report + test + + report + + + + com.github.ekryd.sortpom sortpom-maven-plugin From f8ec348947872cc4b898400ff3bbc0e06458e016 Mon Sep 17 00:00:00 2001 From: Atish Kumar Dipongkor Date: Tue, 9 Dec 2025 09:36:12 -0500 Subject: [PATCH 3/5] Modify coverage workflow triggers Updated workflow triggers to include manual dispatch. --- .github/workflows/coverage.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 3fdd502a6..3e1106f4b 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -1,10 +1,7 @@ name: Java Test Coverage on: - push: - branches: [main, master, develop] - pull_request: - branches: [main, master, develop] + workflow_dispatch: # Manual trigger from GitHub UI jobs: test-coverage: From 6c28b39657e839067bbafe55a195e0b11f756c1d Mon Sep 17 00:00:00 2001 From: Atish Kumar Dipongkor Date: Tue, 9 Dec 2025 09:56:02 -0500 Subject: [PATCH 4/5] Remove line-level coverage generation step Removed line-level coverage generation step from workflow. --- .github/workflows/coverage.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 3e1106f4b..c124b088e 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -22,10 +22,7 @@ jobs: - name: Run tests with coverage run: mvn clean test jacoco:report - - - name: Generate line-level coverage - run: python3 scripts/parse_jacoco.py target/site/jacoco/jacoco.xml --output-dir target/coverage - + - name: Upload coverage reports uses: actions/upload-artifact@v4 with: From 61a2187eecb33f62983f4558f459c7e9b2bdf147 Mon Sep 17 00:00:00 2001 From: Atish Kumar Dipongkor Date: Tue, 9 Dec 2025 10:02:53 -0500 Subject: [PATCH 5/5] Enhance coverage workflow with PR inputs and cleanup Added inputs for PR number and upstream repo, modified coverage report naming, and removed diff coverage steps. --- .github/workflows/coverage.yml | 62 ++++++++++------------------------ 1 file changed, 18 insertions(+), 44 deletions(-) diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index c124b088e..c9ab2c665 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -1,18 +1,33 @@ name: Java Test Coverage on: - workflow_dispatch: # Manual trigger from GitHub UI + workflow_dispatch: + inputs: + pr_number: + description: 'PR number from upstream repo' + required: true + type: string + upstream_repo: + description: 'Upstream repo (owner/name)' + required: true + default: 'owner/repo-name' # Change this to your upstream jobs: test-coverage: runs-on: ubuntu-latest steps: - - name: Checkout code + - name: Checkout fork uses: actions/checkout@v4 with: fetch-depth: 0 + - name: Fetch and checkout upstream PR + run: | + git remote add upstream https://github.com/${{ inputs.upstream_repo }}.git + git fetch upstream pull/${{ inputs.pr_number }}/head:pr-${{ inputs.pr_number }} + git checkout pr-${{ inputs.pr_number }} + - name: Set up JDK 17 uses: actions/setup-java@v4 with: @@ -26,49 +41,8 @@ jobs: - name: Upload coverage reports uses: actions/upload-artifact@v4 with: - name: coverage-reports + name: coverage-pr-${{ inputs.pr_number }} path: | target/site/jacoco/ target/coverage/ retention-days: 30 - - - name: Coverage comment on PR - if: github.event_name == 'pull_request' - uses: madrapps/jacoco-report@v1.6.1 - with: - paths: target/site/jacoco/jacoco.xml - token: ${{ secrets.GITHUB_TOKEN }} - min-coverage-overall: 60 - min-coverage-changed-files: 80 - - diff-coverage: - runs-on: ubuntu-latest - if: github.event_name == 'pull_request' - needs: test-coverage - - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - uses: actions/download-artifact@v4 - with: - name: coverage-reports - path: coverage/ - - - uses: actions/setup-python@v5 - with: - python-version: '3.11' - - - name: Diff coverage - run: | - pip install diff-cover - diff-cover coverage/target/site/jacoco/jacoco.xml \ - --compare-branch=origin/${{ github.base_ref }} \ - --html-report diff-coverage.html \ - --json-report diff-coverage.json - - - uses: actions/upload-artifact@v4 - with: - name: diff-coverage - path: diff-coverage.*