diff --git a/.circleci/post-coverage-comment.sh b/.circleci/post-coverage-comment.sh
index 505bedb89..d9e737409 100755
--- a/.circleci/post-coverage-comment.sh
+++ b/.circleci/post-coverage-comment.sh
@@ -9,6 +9,7 @@
## GITHUB_TOKEN - GitHub token for API access.
## CIRCLE_PROJECT_USERNAME - GitHub org/user.
## CIRCLE_PROJECT_REPONAME - GitHub repo name.
+## VORTEX_CI_CODE_COVERAGE_THRESHOLD - Coverage threshold percentage (default: 90).
##
## Usage:
## .circleci/post-coverage-comment.sh /path/to/coverage.txt
@@ -32,16 +33,25 @@ if [ -z "${GITHUB_TOKEN:-}" ]; then
exit 0
fi
-COVERAGE_CONTENT=$(sed '/./,$!d' "${COVERAGE_FILE}")
+COVERAGE_SUMMARY=$(awk '/^ *Summary:/{f=1;next} f && /^$/{exit} f' "${COVERAGE_FILE}")
+COVERAGE_DETAILS=$(awk 'BEGIN{s=0} /^ *Summary:/{s=1} s==1 && /^$/{s=2;next} s==2' "${COVERAGE_FILE}")
PR_NUMBER=$(echo "${CIRCLE_PULL_REQUEST}" | cut -d'/' -f 7)
REPO_SLUG="${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}"
+THRESHOLD="${VORTEX_CI_CODE_COVERAGE_THRESHOLD:-90}"
MARKER=""
-BODY=$(jq -n --arg body "**Code coverage (CircleCI)**
+BODY=$(jq -n --arg body "**Code coverage** (threshold: ${THRESHOLD}%)
\`\`\`
-${COVERAGE_CONTENT}
+${COVERAGE_SUMMARY}
\`\`\`
+
+Per-class coverage
+
+\`\`\`
+${COVERAGE_DETAILS}
+\`\`\`
+
${MARKER}" '{body: $body}')
# Minimize previous coverage comments.
diff --git a/.github/workflows/build-test-deploy.yml b/.github/workflows/build-test-deploy.yml
index 061f7d9f5..4c57637d3 100644
--- a/.github/workflows/build-test-deploy.yml
+++ b/.github/workflows/build-test-deploy.yml
@@ -433,8 +433,15 @@ jobs:
RATE=$(grep -om1 'line-rate="[0-9.]*"' .logs/coverage/phpunit/cobertura.xml | tr -cd '0-9.')
PERCENT=$(awk "BEGIN {printf \"%.2f\", $RATE*100}")
echo "Coverage: $PERCENT% (threshold: $VORTEX_CI_CODE_COVERAGE_THRESHOLD%)" | tee -a "$GITHUB_STEP_SUMMARY"
- echo "COVERAGE_PERCENT=${PERCENT}" >> "$GITHUB_ENV"
- { echo "COVERAGE_CONTENT<> "$GITHUB_ENV"
+ {
+ echo "COVERAGE_PERCENT=${PERCENT}"
+ echo "COVERAGE_SUMMARY<> "$GITHUB_ENV"
env:
VORTEX_CI_CODE_COVERAGE_THRESHOLD: ${{ vars.VORTEX_CI_CODE_COVERAGE_THRESHOLD || '90' }}
@@ -444,10 +451,17 @@ jobs:
with:
header: coverage-gha
message: |
- **Code coverage (GitHub Actions)**
+ **Code coverage** (threshold: ${{ vars.VORTEX_CI_CODE_COVERAGE_THRESHOLD || '90' }}%)
```
- ${{ env.COVERAGE_CONTENT }}
+ ${{ env.COVERAGE_SUMMARY }}
```
+
+ Per-class coverage
+
+ ```
+ ${{ env.COVERAGE_DETAILS }}
+ ```
+
hide_and_recreate: true
- name: Upload coverage report to Codecov
diff --git a/.vortex/installer/tests/Fixtures/handler_process/_baseline/.github/workflows/build-test-deploy.yml b/.vortex/installer/tests/Fixtures/handler_process/_baseline/.github/workflows/build-test-deploy.yml
index e8f0d2e7d..0bb51f782 100644
--- a/.vortex/installer/tests/Fixtures/handler_process/_baseline/.github/workflows/build-test-deploy.yml
+++ b/.vortex/installer/tests/Fixtures/handler_process/_baseline/.github/workflows/build-test-deploy.yml
@@ -385,8 +385,15 @@ jobs:
RATE=$(grep -om1 'line-rate="[0-9.]*"' .logs/coverage/phpunit/cobertura.xml | tr -cd '0-9.')
PERCENT=$(awk "BEGIN {printf \"%.2f\", $RATE*100}")
echo "Coverage: $PERCENT% (threshold: $VORTEX_CI_CODE_COVERAGE_THRESHOLD%)" | tee -a "$GITHUB_STEP_SUMMARY"
- echo "COVERAGE_PERCENT=${PERCENT}" >> "$GITHUB_ENV"
- { echo "COVERAGE_CONTENT<> "$GITHUB_ENV"
+ {
+ echo "COVERAGE_PERCENT=${PERCENT}"
+ echo "COVERAGE_SUMMARY<> "$GITHUB_ENV"
env:
VORTEX_CI_CODE_COVERAGE_THRESHOLD: ${{ vars.VORTEX_CI_CODE_COVERAGE_THRESHOLD || '90' }}
@@ -396,10 +403,17 @@ jobs:
with:
header: coverage-gha
message: |
- **Code coverage (GitHub Actions)**
+ **Code coverage** (threshold: ${{ vars.VORTEX_CI_CODE_COVERAGE_THRESHOLD || '90' }}%)
```
- ${{ env.COVERAGE_CONTENT }}
+ ${{ env.COVERAGE_SUMMARY }}
```
+
+ Per-class coverage
+
+ ```
+ ${{ env.COVERAGE_DETAILS }}
+ ```
+
hide_and_recreate: true
- name: Upload coverage report to Codecov
diff --git a/.vortex/installer/tests/Fixtures/handler_process/ciprovider_circleci/.circleci/post-coverage-comment.sh b/.vortex/installer/tests/Fixtures/handler_process/ciprovider_circleci/.circleci/post-coverage-comment.sh
index 505bedb89..d9e737409 100755
--- a/.vortex/installer/tests/Fixtures/handler_process/ciprovider_circleci/.circleci/post-coverage-comment.sh
+++ b/.vortex/installer/tests/Fixtures/handler_process/ciprovider_circleci/.circleci/post-coverage-comment.sh
@@ -9,6 +9,7 @@
## GITHUB_TOKEN - GitHub token for API access.
## CIRCLE_PROJECT_USERNAME - GitHub org/user.
## CIRCLE_PROJECT_REPONAME - GitHub repo name.
+## VORTEX_CI_CODE_COVERAGE_THRESHOLD - Coverage threshold percentage (default: 90).
##
## Usage:
## .circleci/post-coverage-comment.sh /path/to/coverage.txt
@@ -32,16 +33,25 @@ if [ -z "${GITHUB_TOKEN:-}" ]; then
exit 0
fi
-COVERAGE_CONTENT=$(sed '/./,$!d' "${COVERAGE_FILE}")
+COVERAGE_SUMMARY=$(awk '/^ *Summary:/{f=1;next} f && /^$/{exit} f' "${COVERAGE_FILE}")
+COVERAGE_DETAILS=$(awk 'BEGIN{s=0} /^ *Summary:/{s=1} s==1 && /^$/{s=2;next} s==2' "${COVERAGE_FILE}")
PR_NUMBER=$(echo "${CIRCLE_PULL_REQUEST}" | cut -d'/' -f 7)
REPO_SLUG="${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}"
+THRESHOLD="${VORTEX_CI_CODE_COVERAGE_THRESHOLD:-90}"
MARKER=""
-BODY=$(jq -n --arg body "**Code coverage (CircleCI)**
+BODY=$(jq -n --arg body "**Code coverage** (threshold: ${THRESHOLD}%)
\`\`\`
-${COVERAGE_CONTENT}
+${COVERAGE_SUMMARY}
\`\`\`
+
+Per-class coverage
+
+\`\`\`
+${COVERAGE_DETAILS}
+\`\`\`
+
${MARKER}" '{body: $body}')
# Minimize previous coverage comments.
diff --git a/.vortex/installer/tests/Fixtures/handler_process/deploy_types_all_circleci/.circleci/post-coverage-comment.sh b/.vortex/installer/tests/Fixtures/handler_process/deploy_types_all_circleci/.circleci/post-coverage-comment.sh
index 505bedb89..d9e737409 100755
--- a/.vortex/installer/tests/Fixtures/handler_process/deploy_types_all_circleci/.circleci/post-coverage-comment.sh
+++ b/.vortex/installer/tests/Fixtures/handler_process/deploy_types_all_circleci/.circleci/post-coverage-comment.sh
@@ -9,6 +9,7 @@
## GITHUB_TOKEN - GitHub token for API access.
## CIRCLE_PROJECT_USERNAME - GitHub org/user.
## CIRCLE_PROJECT_REPONAME - GitHub repo name.
+## VORTEX_CI_CODE_COVERAGE_THRESHOLD - Coverage threshold percentage (default: 90).
##
## Usage:
## .circleci/post-coverage-comment.sh /path/to/coverage.txt
@@ -32,16 +33,25 @@ if [ -z "${GITHUB_TOKEN:-}" ]; then
exit 0
fi
-COVERAGE_CONTENT=$(sed '/./,$!d' "${COVERAGE_FILE}")
+COVERAGE_SUMMARY=$(awk '/^ *Summary:/{f=1;next} f && /^$/{exit} f' "${COVERAGE_FILE}")
+COVERAGE_DETAILS=$(awk 'BEGIN{s=0} /^ *Summary:/{s=1} s==1 && /^$/{s=2;next} s==2' "${COVERAGE_FILE}")
PR_NUMBER=$(echo "${CIRCLE_PULL_REQUEST}" | cut -d'/' -f 7)
REPO_SLUG="${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}"
+THRESHOLD="${VORTEX_CI_CODE_COVERAGE_THRESHOLD:-90}"
MARKER=""
-BODY=$(jq -n --arg body "**Code coverage (CircleCI)**
+BODY=$(jq -n --arg body "**Code coverage** (threshold: ${THRESHOLD}%)
\`\`\`
-${COVERAGE_CONTENT}
+${COVERAGE_SUMMARY}
\`\`\`
+
+Per-class coverage
+
+\`\`\`
+${COVERAGE_DETAILS}
+\`\`\`
+
${MARKER}" '{body: $body}')
# Minimize previous coverage comments.
diff --git a/.vortex/installer/tests/Fixtures/handler_process/deploy_types_none_circleci/.circleci/post-coverage-comment.sh b/.vortex/installer/tests/Fixtures/handler_process/deploy_types_none_circleci/.circleci/post-coverage-comment.sh
index 505bedb89..d9e737409 100755
--- a/.vortex/installer/tests/Fixtures/handler_process/deploy_types_none_circleci/.circleci/post-coverage-comment.sh
+++ b/.vortex/installer/tests/Fixtures/handler_process/deploy_types_none_circleci/.circleci/post-coverage-comment.sh
@@ -9,6 +9,7 @@
## GITHUB_TOKEN - GitHub token for API access.
## CIRCLE_PROJECT_USERNAME - GitHub org/user.
## CIRCLE_PROJECT_REPONAME - GitHub repo name.
+## VORTEX_CI_CODE_COVERAGE_THRESHOLD - Coverage threshold percentage (default: 90).
##
## Usage:
## .circleci/post-coverage-comment.sh /path/to/coverage.txt
@@ -32,16 +33,25 @@ if [ -z "${GITHUB_TOKEN:-}" ]; then
exit 0
fi
-COVERAGE_CONTENT=$(sed '/./,$!d' "${COVERAGE_FILE}")
+COVERAGE_SUMMARY=$(awk '/^ *Summary:/{f=1;next} f && /^$/{exit} f' "${COVERAGE_FILE}")
+COVERAGE_DETAILS=$(awk 'BEGIN{s=0} /^ *Summary:/{s=1} s==1 && /^$/{s=2;next} s==2' "${COVERAGE_FILE}")
PR_NUMBER=$(echo "${CIRCLE_PULL_REQUEST}" | cut -d'/' -f 7)
REPO_SLUG="${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}"
+THRESHOLD="${VORTEX_CI_CODE_COVERAGE_THRESHOLD:-90}"
MARKER=""
-BODY=$(jq -n --arg body "**Code coverage (CircleCI)**
+BODY=$(jq -n --arg body "**Code coverage** (threshold: ${THRESHOLD}%)
\`\`\`
-${COVERAGE_CONTENT}
+${COVERAGE_SUMMARY}
\`\`\`
+
+Per-class coverage
+
+\`\`\`
+${COVERAGE_DETAILS}
+\`\`\`
+
${MARKER}" '{body: $body}')
# Minimize previous coverage comments.
diff --git a/.vortex/installer/tests/Fixtures/handler_process/deploy_types_none_gha/.github/workflows/build-test-deploy.yml b/.vortex/installer/tests/Fixtures/handler_process/deploy_types_none_gha/.github/workflows/build-test-deploy.yml
index effe39a19..8d0c9e979 100644
--- a/.vortex/installer/tests/Fixtures/handler_process/deploy_types_none_gha/.github/workflows/build-test-deploy.yml
+++ b/.vortex/installer/tests/Fixtures/handler_process/deploy_types_none_gha/.github/workflows/build-test-deploy.yml
@@ -1,4 +1,4 @@
-@@ -467,79 +467,3 @@
+@@ -481,79 +481,3 @@
timeout-minutes: 120 # Cancel the action after 15 minutes, regardless of whether a connection has been established.
with:
detached: true
diff --git a/.vortex/installer/tests/Fixtures/handler_process/deps_updates_provider_ci_circleci/.circleci/post-coverage-comment.sh b/.vortex/installer/tests/Fixtures/handler_process/deps_updates_provider_ci_circleci/.circleci/post-coverage-comment.sh
index 505bedb89..d9e737409 100755
--- a/.vortex/installer/tests/Fixtures/handler_process/deps_updates_provider_ci_circleci/.circleci/post-coverage-comment.sh
+++ b/.vortex/installer/tests/Fixtures/handler_process/deps_updates_provider_ci_circleci/.circleci/post-coverage-comment.sh
@@ -9,6 +9,7 @@
## GITHUB_TOKEN - GitHub token for API access.
## CIRCLE_PROJECT_USERNAME - GitHub org/user.
## CIRCLE_PROJECT_REPONAME - GitHub repo name.
+## VORTEX_CI_CODE_COVERAGE_THRESHOLD - Coverage threshold percentage (default: 90).
##
## Usage:
## .circleci/post-coverage-comment.sh /path/to/coverage.txt
@@ -32,16 +33,25 @@ if [ -z "${GITHUB_TOKEN:-}" ]; then
exit 0
fi
-COVERAGE_CONTENT=$(sed '/./,$!d' "${COVERAGE_FILE}")
+COVERAGE_SUMMARY=$(awk '/^ *Summary:/{f=1;next} f && /^$/{exit} f' "${COVERAGE_FILE}")
+COVERAGE_DETAILS=$(awk 'BEGIN{s=0} /^ *Summary:/{s=1} s==1 && /^$/{s=2;next} s==2' "${COVERAGE_FILE}")
PR_NUMBER=$(echo "${CIRCLE_PULL_REQUEST}" | cut -d'/' -f 7)
REPO_SLUG="${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}"
+THRESHOLD="${VORTEX_CI_CODE_COVERAGE_THRESHOLD:-90}"
MARKER=""
-BODY=$(jq -n --arg body "**Code coverage (CircleCI)**
+BODY=$(jq -n --arg body "**Code coverage** (threshold: ${THRESHOLD}%)
\`\`\`
-${COVERAGE_CONTENT}
+${COVERAGE_SUMMARY}
\`\`\`
+
+Per-class coverage
+
+\`\`\`
+${COVERAGE_DETAILS}
+\`\`\`
+
${MARKER}" '{body: $body}')
# Minimize previous coverage comments.
diff --git a/.vortex/installer/tests/Fixtures/handler_process/migration_disabled_circleci/.circleci/post-coverage-comment.sh b/.vortex/installer/tests/Fixtures/handler_process/migration_disabled_circleci/.circleci/post-coverage-comment.sh
index 505bedb89..d9e737409 100755
--- a/.vortex/installer/tests/Fixtures/handler_process/migration_disabled_circleci/.circleci/post-coverage-comment.sh
+++ b/.vortex/installer/tests/Fixtures/handler_process/migration_disabled_circleci/.circleci/post-coverage-comment.sh
@@ -9,6 +9,7 @@
## GITHUB_TOKEN - GitHub token for API access.
## CIRCLE_PROJECT_USERNAME - GitHub org/user.
## CIRCLE_PROJECT_REPONAME - GitHub repo name.
+## VORTEX_CI_CODE_COVERAGE_THRESHOLD - Coverage threshold percentage (default: 90).
##
## Usage:
## .circleci/post-coverage-comment.sh /path/to/coverage.txt
@@ -32,16 +33,25 @@ if [ -z "${GITHUB_TOKEN:-}" ]; then
exit 0
fi
-COVERAGE_CONTENT=$(sed '/./,$!d' "${COVERAGE_FILE}")
+COVERAGE_SUMMARY=$(awk '/^ *Summary:/{f=1;next} f && /^$/{exit} f' "${COVERAGE_FILE}")
+COVERAGE_DETAILS=$(awk 'BEGIN{s=0} /^ *Summary:/{s=1} s==1 && /^$/{s=2;next} s==2' "${COVERAGE_FILE}")
PR_NUMBER=$(echo "${CIRCLE_PULL_REQUEST}" | cut -d'/' -f 7)
REPO_SLUG="${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}"
+THRESHOLD="${VORTEX_CI_CODE_COVERAGE_THRESHOLD:-90}"
MARKER=""
-BODY=$(jq -n --arg body "**Code coverage (CircleCI)**
+BODY=$(jq -n --arg body "**Code coverage** (threshold: ${THRESHOLD}%)
\`\`\`
-${COVERAGE_CONTENT}
+${COVERAGE_SUMMARY}
\`\`\`
+
+Per-class coverage
+
+\`\`\`
+${COVERAGE_DETAILS}
+\`\`\`
+
${MARKER}" '{body: $body}')
# Minimize previous coverage comments.
diff --git a/.vortex/installer/tests/Fixtures/handler_process/migration_enabled_circleci/.circleci/post-coverage-comment.sh b/.vortex/installer/tests/Fixtures/handler_process/migration_enabled_circleci/.circleci/post-coverage-comment.sh
index 505bedb89..d9e737409 100755
--- a/.vortex/installer/tests/Fixtures/handler_process/migration_enabled_circleci/.circleci/post-coverage-comment.sh
+++ b/.vortex/installer/tests/Fixtures/handler_process/migration_enabled_circleci/.circleci/post-coverage-comment.sh
@@ -9,6 +9,7 @@
## GITHUB_TOKEN - GitHub token for API access.
## CIRCLE_PROJECT_USERNAME - GitHub org/user.
## CIRCLE_PROJECT_REPONAME - GitHub repo name.
+## VORTEX_CI_CODE_COVERAGE_THRESHOLD - Coverage threshold percentage (default: 90).
##
## Usage:
## .circleci/post-coverage-comment.sh /path/to/coverage.txt
@@ -32,16 +33,25 @@ if [ -z "${GITHUB_TOKEN:-}" ]; then
exit 0
fi
-COVERAGE_CONTENT=$(sed '/./,$!d' "${COVERAGE_FILE}")
+COVERAGE_SUMMARY=$(awk '/^ *Summary:/{f=1;next} f && /^$/{exit} f' "${COVERAGE_FILE}")
+COVERAGE_DETAILS=$(awk 'BEGIN{s=0} /^ *Summary:/{s=1} s==1 && /^$/{s=2;next} s==2' "${COVERAGE_FILE}")
PR_NUMBER=$(echo "${CIRCLE_PULL_REQUEST}" | cut -d'/' -f 7)
REPO_SLUG="${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}"
+THRESHOLD="${VORTEX_CI_CODE_COVERAGE_THRESHOLD:-90}"
MARKER=""
-BODY=$(jq -n --arg body "**Code coverage (CircleCI)**
+BODY=$(jq -n --arg body "**Code coverage** (threshold: ${THRESHOLD}%)
\`\`\`
-${COVERAGE_CONTENT}
+${COVERAGE_SUMMARY}
\`\`\`
+
+Per-class coverage
+
+\`\`\`
+${COVERAGE_DETAILS}
+\`\`\`
+
${MARKER}" '{body: $body}')
# Minimize previous coverage comments.
diff --git a/.vortex/installer/tests/Fixtures/handler_process/provision_profile/.github/workflows/build-test-deploy.yml b/.vortex/installer/tests/Fixtures/handler_process/provision_profile/.github/workflows/build-test-deploy.yml
index 40811a217..1bc33d106 100644
--- a/.vortex/installer/tests/Fixtures/handler_process/provision_profile/.github/workflows/build-test-deploy.yml
+++ b/.vortex/installer/tests/Fixtures/handler_process/provision_profile/.github/workflows/build-test-deploy.yml
@@ -175,7 +175,7 @@
- name: Login to container registry
run: ./scripts/vortex/login-container-registry.sh
-@@ -471,7 +331,6 @@
+@@ -485,7 +345,6 @@
deploy:
runs-on: ubuntu-latest
needs: [build, lint]
diff --git a/.vortex/installer/tests/Fixtures/handler_process/timezone_circleci/.circleci/post-coverage-comment.sh b/.vortex/installer/tests/Fixtures/handler_process/timezone_circleci/.circleci/post-coverage-comment.sh
index 505bedb89..d9e737409 100755
--- a/.vortex/installer/tests/Fixtures/handler_process/timezone_circleci/.circleci/post-coverage-comment.sh
+++ b/.vortex/installer/tests/Fixtures/handler_process/timezone_circleci/.circleci/post-coverage-comment.sh
@@ -9,6 +9,7 @@
## GITHUB_TOKEN - GitHub token for API access.
## CIRCLE_PROJECT_USERNAME - GitHub org/user.
## CIRCLE_PROJECT_REPONAME - GitHub repo name.
+## VORTEX_CI_CODE_COVERAGE_THRESHOLD - Coverage threshold percentage (default: 90).
##
## Usage:
## .circleci/post-coverage-comment.sh /path/to/coverage.txt
@@ -32,16 +33,25 @@ if [ -z "${GITHUB_TOKEN:-}" ]; then
exit 0
fi
-COVERAGE_CONTENT=$(sed '/./,$!d' "${COVERAGE_FILE}")
+COVERAGE_SUMMARY=$(awk '/^ *Summary:/{f=1;next} f && /^$/{exit} f' "${COVERAGE_FILE}")
+COVERAGE_DETAILS=$(awk 'BEGIN{s=0} /^ *Summary:/{s=1} s==1 && /^$/{s=2;next} s==2' "${COVERAGE_FILE}")
PR_NUMBER=$(echo "${CIRCLE_PULL_REQUEST}" | cut -d'/' -f 7)
REPO_SLUG="${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}"
+THRESHOLD="${VORTEX_CI_CODE_COVERAGE_THRESHOLD:-90}"
MARKER=""
-BODY=$(jq -n --arg body "**Code coverage (CircleCI)**
+BODY=$(jq -n --arg body "**Code coverage** (threshold: ${THRESHOLD}%)
\`\`\`
-${COVERAGE_CONTENT}
+${COVERAGE_SUMMARY}
\`\`\`
+
+Per-class coverage
+
+\`\`\`
+${COVERAGE_DETAILS}
+\`\`\`
+
${MARKER}" '{body: $body}')
# Minimize previous coverage comments.
diff --git a/.vortex/installer/tests/Fixtures/handler_process/tools_groups_no_be_lint_circleci/.circleci/post-coverage-comment.sh b/.vortex/installer/tests/Fixtures/handler_process/tools_groups_no_be_lint_circleci/.circleci/post-coverage-comment.sh
index 505bedb89..d9e737409 100755
--- a/.vortex/installer/tests/Fixtures/handler_process/tools_groups_no_be_lint_circleci/.circleci/post-coverage-comment.sh
+++ b/.vortex/installer/tests/Fixtures/handler_process/tools_groups_no_be_lint_circleci/.circleci/post-coverage-comment.sh
@@ -9,6 +9,7 @@
## GITHUB_TOKEN - GitHub token for API access.
## CIRCLE_PROJECT_USERNAME - GitHub org/user.
## CIRCLE_PROJECT_REPONAME - GitHub repo name.
+## VORTEX_CI_CODE_COVERAGE_THRESHOLD - Coverage threshold percentage (default: 90).
##
## Usage:
## .circleci/post-coverage-comment.sh /path/to/coverage.txt
@@ -32,16 +33,25 @@ if [ -z "${GITHUB_TOKEN:-}" ]; then
exit 0
fi
-COVERAGE_CONTENT=$(sed '/./,$!d' "${COVERAGE_FILE}")
+COVERAGE_SUMMARY=$(awk '/^ *Summary:/{f=1;next} f && /^$/{exit} f' "${COVERAGE_FILE}")
+COVERAGE_DETAILS=$(awk 'BEGIN{s=0} /^ *Summary:/{s=1} s==1 && /^$/{s=2;next} s==2' "${COVERAGE_FILE}")
PR_NUMBER=$(echo "${CIRCLE_PULL_REQUEST}" | cut -d'/' -f 7)
REPO_SLUG="${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}"
+THRESHOLD="${VORTEX_CI_CODE_COVERAGE_THRESHOLD:-90}"
MARKER=""
-BODY=$(jq -n --arg body "**Code coverage (CircleCI)**
+BODY=$(jq -n --arg body "**Code coverage** (threshold: ${THRESHOLD}%)
\`\`\`
-${COVERAGE_CONTENT}
+${COVERAGE_SUMMARY}
\`\`\`
+
+Per-class coverage
+
+\`\`\`
+${COVERAGE_DETAILS}
+\`\`\`
+
${MARKER}" '{body: $body}')
# Minimize previous coverage comments.
diff --git a/.vortex/installer/tests/Fixtures/handler_process/tools_groups_no_be_tests/.github/workflows/build-test-deploy.yml b/.vortex/installer/tests/Fixtures/handler_process/tools_groups_no_be_tests/.github/workflows/build-test-deploy.yml
index 1d99d14b3..2336feaf4 100644
--- a/.vortex/installer/tests/Fixtures/handler_process/tools_groups_no_be_tests/.github/workflows/build-test-deploy.yml
+++ b/.vortex/installer/tests/Fixtures/handler_process/tools_groups_no_be_tests/.github/workflows/build-test-deploy.yml
@@ -9,7 +9,7 @@
- name: Lint module code with NodeJS linters
run: docker compose exec -T cli bash -c "yarn run lint"
continue-on-error: ${{ vars.VORTEX_CI_NODEJS_LINT_IGNORE_FAILURE == '1' }}
-@@ -364,74 +360,6 @@
+@@ -364,88 +360,6 @@
docker compose cp -L .data/db.sql cli:/app/.data/db.sql
fi
docker compose exec $(env | cut -f1 -d= | sed 's/^/-e /') -T cli ./scripts/vortex/provision.sh
@@ -34,8 +34,15 @@
- RATE=$(grep -om1 'line-rate="[0-9.]*"' .logs/coverage/phpunit/cobertura.xml | tr -cd '0-9.')
- PERCENT=$(awk "BEGIN {printf \"%.2f\", $RATE*100}")
- echo "Coverage: $PERCENT% (threshold: $VORTEX_CI_CODE_COVERAGE_THRESHOLD%)" | tee -a "$GITHUB_STEP_SUMMARY"
-- echo "COVERAGE_PERCENT=${PERCENT}" >> "$GITHUB_ENV"
-- { echo "COVERAGE_CONTENT<> "$GITHUB_ENV"
+- {
+- echo "COVERAGE_PERCENT=${PERCENT}"
+- echo "COVERAGE_SUMMARY<> "$GITHUB_ENV"
- env:
- VORTEX_CI_CODE_COVERAGE_THRESHOLD: ${{ vars.VORTEX_CI_CODE_COVERAGE_THRESHOLD || '90' }}
-
@@ -45,10 +52,17 @@
- with:
- header: coverage-gha
- message: |
-- **Code coverage (GitHub Actions)**
+- **Code coverage** (threshold: ${{ vars.VORTEX_CI_CODE_COVERAGE_THRESHOLD || '90' }}%)
- ```
-- ${{ env.COVERAGE_CONTENT }}
+- ${{ env.COVERAGE_SUMMARY }}
- ```
+-
+- Per-class coverage
+-
+- ```
+- ${{ env.COVERAGE_DETAILS }}
+- ```
+-
- hide_and_recreate: true
-
- - name: Upload coverage report to Codecov
diff --git a/.vortex/installer/tests/Fixtures/handler_process/tools_groups_no_be_tests_circleci/.circleci/post-coverage-comment.sh b/.vortex/installer/tests/Fixtures/handler_process/tools_groups_no_be_tests_circleci/.circleci/post-coverage-comment.sh
index 505bedb89..d9e737409 100755
--- a/.vortex/installer/tests/Fixtures/handler_process/tools_groups_no_be_tests_circleci/.circleci/post-coverage-comment.sh
+++ b/.vortex/installer/tests/Fixtures/handler_process/tools_groups_no_be_tests_circleci/.circleci/post-coverage-comment.sh
@@ -9,6 +9,7 @@
## GITHUB_TOKEN - GitHub token for API access.
## CIRCLE_PROJECT_USERNAME - GitHub org/user.
## CIRCLE_PROJECT_REPONAME - GitHub repo name.
+## VORTEX_CI_CODE_COVERAGE_THRESHOLD - Coverage threshold percentage (default: 90).
##
## Usage:
## .circleci/post-coverage-comment.sh /path/to/coverage.txt
@@ -32,16 +33,25 @@ if [ -z "${GITHUB_TOKEN:-}" ]; then
exit 0
fi
-COVERAGE_CONTENT=$(sed '/./,$!d' "${COVERAGE_FILE}")
+COVERAGE_SUMMARY=$(awk '/^ *Summary:/{f=1;next} f && /^$/{exit} f' "${COVERAGE_FILE}")
+COVERAGE_DETAILS=$(awk 'BEGIN{s=0} /^ *Summary:/{s=1} s==1 && /^$/{s=2;next} s==2' "${COVERAGE_FILE}")
PR_NUMBER=$(echo "${CIRCLE_PULL_REQUEST}" | cut -d'/' -f 7)
REPO_SLUG="${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}"
+THRESHOLD="${VORTEX_CI_CODE_COVERAGE_THRESHOLD:-90}"
MARKER=""
-BODY=$(jq -n --arg body "**Code coverage (CircleCI)**
+BODY=$(jq -n --arg body "**Code coverage** (threshold: ${THRESHOLD}%)
\`\`\`
-${COVERAGE_CONTENT}
+${COVERAGE_SUMMARY}
\`\`\`
+
+Per-class coverage
+
+\`\`\`
+${COVERAGE_DETAILS}
+\`\`\`
+
${MARKER}" '{body: $body}')
# Minimize previous coverage comments.
diff --git a/.vortex/installer/tests/Fixtures/handler_process/tools_groups_no_fe_lint_circleci/.circleci/post-coverage-comment.sh b/.vortex/installer/tests/Fixtures/handler_process/tools_groups_no_fe_lint_circleci/.circleci/post-coverage-comment.sh
index 505bedb89..d9e737409 100755
--- a/.vortex/installer/tests/Fixtures/handler_process/tools_groups_no_fe_lint_circleci/.circleci/post-coverage-comment.sh
+++ b/.vortex/installer/tests/Fixtures/handler_process/tools_groups_no_fe_lint_circleci/.circleci/post-coverage-comment.sh
@@ -9,6 +9,7 @@
## GITHUB_TOKEN - GitHub token for API access.
## CIRCLE_PROJECT_USERNAME - GitHub org/user.
## CIRCLE_PROJECT_REPONAME - GitHub repo name.
+## VORTEX_CI_CODE_COVERAGE_THRESHOLD - Coverage threshold percentage (default: 90).
##
## Usage:
## .circleci/post-coverage-comment.sh /path/to/coverage.txt
@@ -32,16 +33,25 @@ if [ -z "${GITHUB_TOKEN:-}" ]; then
exit 0
fi
-COVERAGE_CONTENT=$(sed '/./,$!d' "${COVERAGE_FILE}")
+COVERAGE_SUMMARY=$(awk '/^ *Summary:/{f=1;next} f && /^$/{exit} f' "${COVERAGE_FILE}")
+COVERAGE_DETAILS=$(awk 'BEGIN{s=0} /^ *Summary:/{s=1} s==1 && /^$/{s=2;next} s==2' "${COVERAGE_FILE}")
PR_NUMBER=$(echo "${CIRCLE_PULL_REQUEST}" | cut -d'/' -f 7)
REPO_SLUG="${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}"
+THRESHOLD="${VORTEX_CI_CODE_COVERAGE_THRESHOLD:-90}"
MARKER=""
-BODY=$(jq -n --arg body "**Code coverage (CircleCI)**
+BODY=$(jq -n --arg body "**Code coverage** (threshold: ${THRESHOLD}%)
\`\`\`
-${COVERAGE_CONTENT}
+${COVERAGE_SUMMARY}
\`\`\`
+
+Per-class coverage
+
+\`\`\`
+${COVERAGE_DETAILS}
+\`\`\`
+
${MARKER}" '{body: $body}')
# Minimize previous coverage comments.
diff --git a/.vortex/installer/tests/Fixtures/handler_process/tools_groups_no_fe_lint_no_theme_circleci/.circleci/post-coverage-comment.sh b/.vortex/installer/tests/Fixtures/handler_process/tools_groups_no_fe_lint_no_theme_circleci/.circleci/post-coverage-comment.sh
index 505bedb89..d9e737409 100755
--- a/.vortex/installer/tests/Fixtures/handler_process/tools_groups_no_fe_lint_no_theme_circleci/.circleci/post-coverage-comment.sh
+++ b/.vortex/installer/tests/Fixtures/handler_process/tools_groups_no_fe_lint_no_theme_circleci/.circleci/post-coverage-comment.sh
@@ -9,6 +9,7 @@
## GITHUB_TOKEN - GitHub token for API access.
## CIRCLE_PROJECT_USERNAME - GitHub org/user.
## CIRCLE_PROJECT_REPONAME - GitHub repo name.
+## VORTEX_CI_CODE_COVERAGE_THRESHOLD - Coverage threshold percentage (default: 90).
##
## Usage:
## .circleci/post-coverage-comment.sh /path/to/coverage.txt
@@ -32,16 +33,25 @@ if [ -z "${GITHUB_TOKEN:-}" ]; then
exit 0
fi
-COVERAGE_CONTENT=$(sed '/./,$!d' "${COVERAGE_FILE}")
+COVERAGE_SUMMARY=$(awk '/^ *Summary:/{f=1;next} f && /^$/{exit} f' "${COVERAGE_FILE}")
+COVERAGE_DETAILS=$(awk 'BEGIN{s=0} /^ *Summary:/{s=1} s==1 && /^$/{s=2;next} s==2' "${COVERAGE_FILE}")
PR_NUMBER=$(echo "${CIRCLE_PULL_REQUEST}" | cut -d'/' -f 7)
REPO_SLUG="${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}"
+THRESHOLD="${VORTEX_CI_CODE_COVERAGE_THRESHOLD:-90}"
MARKER=""
-BODY=$(jq -n --arg body "**Code coverage (CircleCI)**
+BODY=$(jq -n --arg body "**Code coverage** (threshold: ${THRESHOLD}%)
\`\`\`
-${COVERAGE_CONTENT}
+${COVERAGE_SUMMARY}
\`\`\`
+
+Per-class coverage
+
+\`\`\`
+${COVERAGE_DETAILS}
+\`\`\`
+
${MARKER}" '{body: $body}')
# Minimize previous coverage comments.
diff --git a/.vortex/installer/tests/Fixtures/handler_process/tools_no_behat/.github/workflows/build-test-deploy.yml b/.vortex/installer/tests/Fixtures/handler_process/tools_no_behat/.github/workflows/build-test-deploy.yml
index d46db57b6..972dd7043 100644
--- a/.vortex/installer/tests/Fixtures/handler_process/tools_no_behat/.github/workflows/build-test-deploy.yml
+++ b/.vortex/installer/tests/Fixtures/handler_process/tools_no_behat/.github/workflows/build-test-deploy.yml
@@ -9,7 +9,7 @@
- name: Lint module code with NodeJS linters
run: docker compose exec -T cli bash -c "yarn run lint"
continue-on-error: ${{ vars.VORTEX_CI_NODEJS_LINT_IGNORE_FAILURE == '1' }}
-@@ -421,18 +417,6 @@
+@@ -435,18 +431,6 @@
fi
env:
VORTEX_CI_CODE_COVERAGE_THRESHOLD: ${{ vars.VORTEX_CI_CODE_COVERAGE_THRESHOLD || '90' }}
diff --git a/.vortex/installer/tests/Fixtures/handler_process/tools_no_behat_circleci/.circleci/post-coverage-comment.sh b/.vortex/installer/tests/Fixtures/handler_process/tools_no_behat_circleci/.circleci/post-coverage-comment.sh
index 505bedb89..d9e737409 100755
--- a/.vortex/installer/tests/Fixtures/handler_process/tools_no_behat_circleci/.circleci/post-coverage-comment.sh
+++ b/.vortex/installer/tests/Fixtures/handler_process/tools_no_behat_circleci/.circleci/post-coverage-comment.sh
@@ -9,6 +9,7 @@
## GITHUB_TOKEN - GitHub token for API access.
## CIRCLE_PROJECT_USERNAME - GitHub org/user.
## CIRCLE_PROJECT_REPONAME - GitHub repo name.
+## VORTEX_CI_CODE_COVERAGE_THRESHOLD - Coverage threshold percentage (default: 90).
##
## Usage:
## .circleci/post-coverage-comment.sh /path/to/coverage.txt
@@ -32,16 +33,25 @@ if [ -z "${GITHUB_TOKEN:-}" ]; then
exit 0
fi
-COVERAGE_CONTENT=$(sed '/./,$!d' "${COVERAGE_FILE}")
+COVERAGE_SUMMARY=$(awk '/^ *Summary:/{f=1;next} f && /^$/{exit} f' "${COVERAGE_FILE}")
+COVERAGE_DETAILS=$(awk 'BEGIN{s=0} /^ *Summary:/{s=1} s==1 && /^$/{s=2;next} s==2' "${COVERAGE_FILE}")
PR_NUMBER=$(echo "${CIRCLE_PULL_REQUEST}" | cut -d'/' -f 7)
REPO_SLUG="${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}"
+THRESHOLD="${VORTEX_CI_CODE_COVERAGE_THRESHOLD:-90}"
MARKER=""
-BODY=$(jq -n --arg body "**Code coverage (CircleCI)**
+BODY=$(jq -n --arg body "**Code coverage** (threshold: ${THRESHOLD}%)
\`\`\`
-${COVERAGE_CONTENT}
+${COVERAGE_SUMMARY}
\`\`\`
+
+Per-class coverage
+
+\`\`\`
+${COVERAGE_DETAILS}
+\`\`\`
+
${MARKER}" '{body: $body}')
# Minimize previous coverage comments.
diff --git a/.vortex/installer/tests/Fixtures/handler_process/tools_no_eslint_circleci/.circleci/post-coverage-comment.sh b/.vortex/installer/tests/Fixtures/handler_process/tools_no_eslint_circleci/.circleci/post-coverage-comment.sh
index 505bedb89..d9e737409 100755
--- a/.vortex/installer/tests/Fixtures/handler_process/tools_no_eslint_circleci/.circleci/post-coverage-comment.sh
+++ b/.vortex/installer/tests/Fixtures/handler_process/tools_no_eslint_circleci/.circleci/post-coverage-comment.sh
@@ -9,6 +9,7 @@
## GITHUB_TOKEN - GitHub token for API access.
## CIRCLE_PROJECT_USERNAME - GitHub org/user.
## CIRCLE_PROJECT_REPONAME - GitHub repo name.
+## VORTEX_CI_CODE_COVERAGE_THRESHOLD - Coverage threshold percentage (default: 90).
##
## Usage:
## .circleci/post-coverage-comment.sh /path/to/coverage.txt
@@ -32,16 +33,25 @@ if [ -z "${GITHUB_TOKEN:-}" ]; then
exit 0
fi
-COVERAGE_CONTENT=$(sed '/./,$!d' "${COVERAGE_FILE}")
+COVERAGE_SUMMARY=$(awk '/^ *Summary:/{f=1;next} f && /^$/{exit} f' "${COVERAGE_FILE}")
+COVERAGE_DETAILS=$(awk 'BEGIN{s=0} /^ *Summary:/{s=1} s==1 && /^$/{s=2;next} s==2' "${COVERAGE_FILE}")
PR_NUMBER=$(echo "${CIRCLE_PULL_REQUEST}" | cut -d'/' -f 7)
REPO_SLUG="${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}"
+THRESHOLD="${VORTEX_CI_CODE_COVERAGE_THRESHOLD:-90}"
MARKER=""
-BODY=$(jq -n --arg body "**Code coverage (CircleCI)**
+BODY=$(jq -n --arg body "**Code coverage** (threshold: ${THRESHOLD}%)
\`\`\`
-${COVERAGE_CONTENT}
+${COVERAGE_SUMMARY}
\`\`\`
+
+Per-class coverage
+
+\`\`\`
+${COVERAGE_DETAILS}
+\`\`\`
+
${MARKER}" '{body: $body}')
# Minimize previous coverage comments.
diff --git a/.vortex/installer/tests/Fixtures/handler_process/tools_no_phpcs_circleci/.circleci/post-coverage-comment.sh b/.vortex/installer/tests/Fixtures/handler_process/tools_no_phpcs_circleci/.circleci/post-coverage-comment.sh
index 505bedb89..d9e737409 100755
--- a/.vortex/installer/tests/Fixtures/handler_process/tools_no_phpcs_circleci/.circleci/post-coverage-comment.sh
+++ b/.vortex/installer/tests/Fixtures/handler_process/tools_no_phpcs_circleci/.circleci/post-coverage-comment.sh
@@ -9,6 +9,7 @@
## GITHUB_TOKEN - GitHub token for API access.
## CIRCLE_PROJECT_USERNAME - GitHub org/user.
## CIRCLE_PROJECT_REPONAME - GitHub repo name.
+## VORTEX_CI_CODE_COVERAGE_THRESHOLD - Coverage threshold percentage (default: 90).
##
## Usage:
## .circleci/post-coverage-comment.sh /path/to/coverage.txt
@@ -32,16 +33,25 @@ if [ -z "${GITHUB_TOKEN:-}" ]; then
exit 0
fi
-COVERAGE_CONTENT=$(sed '/./,$!d' "${COVERAGE_FILE}")
+COVERAGE_SUMMARY=$(awk '/^ *Summary:/{f=1;next} f && /^$/{exit} f' "${COVERAGE_FILE}")
+COVERAGE_DETAILS=$(awk 'BEGIN{s=0} /^ *Summary:/{s=1} s==1 && /^$/{s=2;next} s==2' "${COVERAGE_FILE}")
PR_NUMBER=$(echo "${CIRCLE_PULL_REQUEST}" | cut -d'/' -f 7)
REPO_SLUG="${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}"
+THRESHOLD="${VORTEX_CI_CODE_COVERAGE_THRESHOLD:-90}"
MARKER=""
-BODY=$(jq -n --arg body "**Code coverage (CircleCI)**
+BODY=$(jq -n --arg body "**Code coverage** (threshold: ${THRESHOLD}%)
\`\`\`
-${COVERAGE_CONTENT}
+${COVERAGE_SUMMARY}
\`\`\`
+
+Per-class coverage
+
+\`\`\`
+${COVERAGE_DETAILS}
+\`\`\`
+
${MARKER}" '{body: $body}')
# Minimize previous coverage comments.
diff --git a/.vortex/installer/tests/Fixtures/handler_process/tools_no_phpmd_circleci/.circleci/post-coverage-comment.sh b/.vortex/installer/tests/Fixtures/handler_process/tools_no_phpmd_circleci/.circleci/post-coverage-comment.sh
index 505bedb89..d9e737409 100755
--- a/.vortex/installer/tests/Fixtures/handler_process/tools_no_phpmd_circleci/.circleci/post-coverage-comment.sh
+++ b/.vortex/installer/tests/Fixtures/handler_process/tools_no_phpmd_circleci/.circleci/post-coverage-comment.sh
@@ -9,6 +9,7 @@
## GITHUB_TOKEN - GitHub token for API access.
## CIRCLE_PROJECT_USERNAME - GitHub org/user.
## CIRCLE_PROJECT_REPONAME - GitHub repo name.
+## VORTEX_CI_CODE_COVERAGE_THRESHOLD - Coverage threshold percentage (default: 90).
##
## Usage:
## .circleci/post-coverage-comment.sh /path/to/coverage.txt
@@ -32,16 +33,25 @@ if [ -z "${GITHUB_TOKEN:-}" ]; then
exit 0
fi
-COVERAGE_CONTENT=$(sed '/./,$!d' "${COVERAGE_FILE}")
+COVERAGE_SUMMARY=$(awk '/^ *Summary:/{f=1;next} f && /^$/{exit} f' "${COVERAGE_FILE}")
+COVERAGE_DETAILS=$(awk 'BEGIN{s=0} /^ *Summary:/{s=1} s==1 && /^$/{s=2;next} s==2' "${COVERAGE_FILE}")
PR_NUMBER=$(echo "${CIRCLE_PULL_REQUEST}" | cut -d'/' -f 7)
REPO_SLUG="${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}"
+THRESHOLD="${VORTEX_CI_CODE_COVERAGE_THRESHOLD:-90}"
MARKER=""
-BODY=$(jq -n --arg body "**Code coverage (CircleCI)**
+BODY=$(jq -n --arg body "**Code coverage** (threshold: ${THRESHOLD}%)
\`\`\`
-${COVERAGE_CONTENT}
+${COVERAGE_SUMMARY}
\`\`\`
+
+Per-class coverage
+
+\`\`\`
+${COVERAGE_DETAILS}
+\`\`\`
+
${MARKER}" '{body: $body}')
# Minimize previous coverage comments.
diff --git a/.vortex/installer/tests/Fixtures/handler_process/tools_no_phpstan_circleci/.circleci/post-coverage-comment.sh b/.vortex/installer/tests/Fixtures/handler_process/tools_no_phpstan_circleci/.circleci/post-coverage-comment.sh
index 505bedb89..d9e737409 100755
--- a/.vortex/installer/tests/Fixtures/handler_process/tools_no_phpstan_circleci/.circleci/post-coverage-comment.sh
+++ b/.vortex/installer/tests/Fixtures/handler_process/tools_no_phpstan_circleci/.circleci/post-coverage-comment.sh
@@ -9,6 +9,7 @@
## GITHUB_TOKEN - GitHub token for API access.
## CIRCLE_PROJECT_USERNAME - GitHub org/user.
## CIRCLE_PROJECT_REPONAME - GitHub repo name.
+## VORTEX_CI_CODE_COVERAGE_THRESHOLD - Coverage threshold percentage (default: 90).
##
## Usage:
## .circleci/post-coverage-comment.sh /path/to/coverage.txt
@@ -32,16 +33,25 @@ if [ -z "${GITHUB_TOKEN:-}" ]; then
exit 0
fi
-COVERAGE_CONTENT=$(sed '/./,$!d' "${COVERAGE_FILE}")
+COVERAGE_SUMMARY=$(awk '/^ *Summary:/{f=1;next} f && /^$/{exit} f' "${COVERAGE_FILE}")
+COVERAGE_DETAILS=$(awk 'BEGIN{s=0} /^ *Summary:/{s=1} s==1 && /^$/{s=2;next} s==2' "${COVERAGE_FILE}")
PR_NUMBER=$(echo "${CIRCLE_PULL_REQUEST}" | cut -d'/' -f 7)
REPO_SLUG="${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}"
+THRESHOLD="${VORTEX_CI_CODE_COVERAGE_THRESHOLD:-90}"
MARKER=""
-BODY=$(jq -n --arg body "**Code coverage (CircleCI)**
+BODY=$(jq -n --arg body "**Code coverage** (threshold: ${THRESHOLD}%)
\`\`\`
-${COVERAGE_CONTENT}
+${COVERAGE_SUMMARY}
\`\`\`
+
+Per-class coverage
+
+\`\`\`
+${COVERAGE_DETAILS}
+\`\`\`
+
${MARKER}" '{body: $body}')
# Minimize previous coverage comments.
diff --git a/.vortex/installer/tests/Fixtures/handler_process/tools_no_phpunit/.github/workflows/build-test-deploy.yml b/.vortex/installer/tests/Fixtures/handler_process/tools_no_phpunit/.github/workflows/build-test-deploy.yml
index 080601734..92cf6e5ae 100644
--- a/.vortex/installer/tests/Fixtures/handler_process/tools_no_phpunit/.github/workflows/build-test-deploy.yml
+++ b/.vortex/installer/tests/Fixtures/handler_process/tools_no_phpunit/.github/workflows/build-test-deploy.yml
@@ -1,4 +1,4 @@
-@@ -366,62 +366,6 @@
+@@ -366,76 +366,6 @@
docker compose exec $(env | cut -f1 -d= | sed 's/^/-e /') -T cli ./scripts/vortex/provision.sh
timeout-minutes: 30
@@ -21,8 +21,15 @@
- RATE=$(grep -om1 'line-rate="[0-9.]*"' .logs/coverage/phpunit/cobertura.xml | tr -cd '0-9.')
- PERCENT=$(awk "BEGIN {printf \"%.2f\", $RATE*100}")
- echo "Coverage: $PERCENT% (threshold: $VORTEX_CI_CODE_COVERAGE_THRESHOLD%)" | tee -a "$GITHUB_STEP_SUMMARY"
-- echo "COVERAGE_PERCENT=${PERCENT}" >> "$GITHUB_ENV"
-- { echo "COVERAGE_CONTENT<> "$GITHUB_ENV"
+- {
+- echo "COVERAGE_PERCENT=${PERCENT}"
+- echo "COVERAGE_SUMMARY<> "$GITHUB_ENV"
- env:
- VORTEX_CI_CODE_COVERAGE_THRESHOLD: ${{ vars.VORTEX_CI_CODE_COVERAGE_THRESHOLD || '90' }}
-
@@ -32,10 +39,17 @@
- with:
- header: coverage-gha
- message: |
-- **Code coverage (GitHub Actions)**
+- **Code coverage** (threshold: ${{ vars.VORTEX_CI_CODE_COVERAGE_THRESHOLD || '90' }}%)
- ```
-- ${{ env.COVERAGE_CONTENT }}
+- ${{ env.COVERAGE_SUMMARY }}
- ```
+-
+- Per-class coverage
+-
+- ```
+- ${{ env.COVERAGE_DETAILS }}
+- ```
+-
- hide_and_recreate: true
-
- - name: Upload coverage report to Codecov
diff --git a/.vortex/installer/tests/Fixtures/handler_process/tools_no_phpunit_circleci/.circleci/post-coverage-comment.sh b/.vortex/installer/tests/Fixtures/handler_process/tools_no_phpunit_circleci/.circleci/post-coverage-comment.sh
index 505bedb89..d9e737409 100755
--- a/.vortex/installer/tests/Fixtures/handler_process/tools_no_phpunit_circleci/.circleci/post-coverage-comment.sh
+++ b/.vortex/installer/tests/Fixtures/handler_process/tools_no_phpunit_circleci/.circleci/post-coverage-comment.sh
@@ -9,6 +9,7 @@
## GITHUB_TOKEN - GitHub token for API access.
## CIRCLE_PROJECT_USERNAME - GitHub org/user.
## CIRCLE_PROJECT_REPONAME - GitHub repo name.
+## VORTEX_CI_CODE_COVERAGE_THRESHOLD - Coverage threshold percentage (default: 90).
##
## Usage:
## .circleci/post-coverage-comment.sh /path/to/coverage.txt
@@ -32,16 +33,25 @@ if [ -z "${GITHUB_TOKEN:-}" ]; then
exit 0
fi
-COVERAGE_CONTENT=$(sed '/./,$!d' "${COVERAGE_FILE}")
+COVERAGE_SUMMARY=$(awk '/^ *Summary:/{f=1;next} f && /^$/{exit} f' "${COVERAGE_FILE}")
+COVERAGE_DETAILS=$(awk 'BEGIN{s=0} /^ *Summary:/{s=1} s==1 && /^$/{s=2;next} s==2' "${COVERAGE_FILE}")
PR_NUMBER=$(echo "${CIRCLE_PULL_REQUEST}" | cut -d'/' -f 7)
REPO_SLUG="${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}"
+THRESHOLD="${VORTEX_CI_CODE_COVERAGE_THRESHOLD:-90}"
MARKER=""
-BODY=$(jq -n --arg body "**Code coverage (CircleCI)**
+BODY=$(jq -n --arg body "**Code coverage** (threshold: ${THRESHOLD}%)
\`\`\`
-${COVERAGE_CONTENT}
+${COVERAGE_SUMMARY}
\`\`\`
+
+Per-class coverage
+
+\`\`\`
+${COVERAGE_DETAILS}
+\`\`\`
+
${MARKER}" '{body: $body}')
# Minimize previous coverage comments.
diff --git a/.vortex/installer/tests/Fixtures/handler_process/tools_no_rector_circleci/.circleci/post-coverage-comment.sh b/.vortex/installer/tests/Fixtures/handler_process/tools_no_rector_circleci/.circleci/post-coverage-comment.sh
index 505bedb89..d9e737409 100755
--- a/.vortex/installer/tests/Fixtures/handler_process/tools_no_rector_circleci/.circleci/post-coverage-comment.sh
+++ b/.vortex/installer/tests/Fixtures/handler_process/tools_no_rector_circleci/.circleci/post-coverage-comment.sh
@@ -9,6 +9,7 @@
## GITHUB_TOKEN - GitHub token for API access.
## CIRCLE_PROJECT_USERNAME - GitHub org/user.
## CIRCLE_PROJECT_REPONAME - GitHub repo name.
+## VORTEX_CI_CODE_COVERAGE_THRESHOLD - Coverage threshold percentage (default: 90).
##
## Usage:
## .circleci/post-coverage-comment.sh /path/to/coverage.txt
@@ -32,16 +33,25 @@ if [ -z "${GITHUB_TOKEN:-}" ]; then
exit 0
fi
-COVERAGE_CONTENT=$(sed '/./,$!d' "${COVERAGE_FILE}")
+COVERAGE_SUMMARY=$(awk '/^ *Summary:/{f=1;next} f && /^$/{exit} f' "${COVERAGE_FILE}")
+COVERAGE_DETAILS=$(awk 'BEGIN{s=0} /^ *Summary:/{s=1} s==1 && /^$/{s=2;next} s==2' "${COVERAGE_FILE}")
PR_NUMBER=$(echo "${CIRCLE_PULL_REQUEST}" | cut -d'/' -f 7)
REPO_SLUG="${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}"
+THRESHOLD="${VORTEX_CI_CODE_COVERAGE_THRESHOLD:-90}"
MARKER=""
-BODY=$(jq -n --arg body "**Code coverage (CircleCI)**
+BODY=$(jq -n --arg body "**Code coverage** (threshold: ${THRESHOLD}%)
\`\`\`
-${COVERAGE_CONTENT}
+${COVERAGE_SUMMARY}
\`\`\`
+
+Per-class coverage
+
+\`\`\`
+${COVERAGE_DETAILS}
+\`\`\`
+
${MARKER}" '{body: $body}')
# Minimize previous coverage comments.
diff --git a/.vortex/installer/tests/Fixtures/handler_process/tools_no_stylelint_circleci/.circleci/post-coverage-comment.sh b/.vortex/installer/tests/Fixtures/handler_process/tools_no_stylelint_circleci/.circleci/post-coverage-comment.sh
index 505bedb89..d9e737409 100755
--- a/.vortex/installer/tests/Fixtures/handler_process/tools_no_stylelint_circleci/.circleci/post-coverage-comment.sh
+++ b/.vortex/installer/tests/Fixtures/handler_process/tools_no_stylelint_circleci/.circleci/post-coverage-comment.sh
@@ -9,6 +9,7 @@
## GITHUB_TOKEN - GitHub token for API access.
## CIRCLE_PROJECT_USERNAME - GitHub org/user.
## CIRCLE_PROJECT_REPONAME - GitHub repo name.
+## VORTEX_CI_CODE_COVERAGE_THRESHOLD - Coverage threshold percentage (default: 90).
##
## Usage:
## .circleci/post-coverage-comment.sh /path/to/coverage.txt
@@ -32,16 +33,25 @@ if [ -z "${GITHUB_TOKEN:-}" ]; then
exit 0
fi
-COVERAGE_CONTENT=$(sed '/./,$!d' "${COVERAGE_FILE}")
+COVERAGE_SUMMARY=$(awk '/^ *Summary:/{f=1;next} f && /^$/{exit} f' "${COVERAGE_FILE}")
+COVERAGE_DETAILS=$(awk 'BEGIN{s=0} /^ *Summary:/{s=1} s==1 && /^$/{s=2;next} s==2' "${COVERAGE_FILE}")
PR_NUMBER=$(echo "${CIRCLE_PULL_REQUEST}" | cut -d'/' -f 7)
REPO_SLUG="${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}"
+THRESHOLD="${VORTEX_CI_CODE_COVERAGE_THRESHOLD:-90}"
MARKER=""
-BODY=$(jq -n --arg body "**Code coverage (CircleCI)**
+BODY=$(jq -n --arg body "**Code coverage** (threshold: ${THRESHOLD}%)
\`\`\`
-${COVERAGE_CONTENT}
+${COVERAGE_SUMMARY}
\`\`\`
+
+Per-class coverage
+
+\`\`\`
+${COVERAGE_DETAILS}
+\`\`\`
+
${MARKER}" '{body: $body}')
# Minimize previous coverage comments.
diff --git a/.vortex/installer/tests/Fixtures/handler_process/tools_none/.github/workflows/build-test-deploy.yml b/.vortex/installer/tests/Fixtures/handler_process/tools_none/.github/workflows/build-test-deploy.yml
index 34a64ce2d..187a2a972 100644
--- a/.vortex/installer/tests/Fixtures/handler_process/tools_none/.github/workflows/build-test-deploy.yml
+++ b/.vortex/installer/tests/Fixtures/handler_process/tools_none/.github/workflows/build-test-deploy.yml
@@ -41,7 +41,7 @@
- name: Lint theme code with NodeJS linters
if: ${{ vars.VORTEX_FRONTEND_BUILD_SKIP != '1' }}
run: docker compose exec -T cli bash -c "yarn --cwd=\${WEBROOT}/themes/custom/\${DRUPAL_THEME} run lint"
-@@ -364,74 +339,6 @@
+@@ -364,88 +339,6 @@
docker compose cp -L .data/db.sql cli:/app/.data/db.sql
fi
docker compose exec $(env | cut -f1 -d= | sed 's/^/-e /') -T cli ./scripts/vortex/provision.sh
@@ -66,8 +66,15 @@
- RATE=$(grep -om1 'line-rate="[0-9.]*"' .logs/coverage/phpunit/cobertura.xml | tr -cd '0-9.')
- PERCENT=$(awk "BEGIN {printf \"%.2f\", $RATE*100}")
- echo "Coverage: $PERCENT% (threshold: $VORTEX_CI_CODE_COVERAGE_THRESHOLD%)" | tee -a "$GITHUB_STEP_SUMMARY"
-- echo "COVERAGE_PERCENT=${PERCENT}" >> "$GITHUB_ENV"
-- { echo "COVERAGE_CONTENT<> "$GITHUB_ENV"
+- {
+- echo "COVERAGE_PERCENT=${PERCENT}"
+- echo "COVERAGE_SUMMARY<> "$GITHUB_ENV"
- env:
- VORTEX_CI_CODE_COVERAGE_THRESHOLD: ${{ vars.VORTEX_CI_CODE_COVERAGE_THRESHOLD || '90' }}
-
@@ -77,10 +84,17 @@
- with:
- header: coverage-gha
- message: |
-- **Code coverage (GitHub Actions)**
+- **Code coverage** (threshold: ${{ vars.VORTEX_CI_CODE_COVERAGE_THRESHOLD || '90' }}%)
- ```
-- ${{ env.COVERAGE_CONTENT }}
+- ${{ env.COVERAGE_SUMMARY }}
- ```
+-
+- Per-class coverage
+-
+- ```
+- ${{ env.COVERAGE_DETAILS }}
+- ```
+-
- hide_and_recreate: true
-
- - name: Upload coverage report to Codecov
diff --git a/.vortex/tests/bats/unit/post-coverage-comment.bats b/.vortex/tests/bats/unit/post-coverage-comment.bats
index 1c963afc0..294299173 100644
--- a/.vortex/tests/bats/unit/post-coverage-comment.bats
+++ b/.vortex/tests/bats/unit/post-coverage-comment.bats
@@ -70,7 +70,7 @@ load ../_helper.bash
pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
mkdir -p .logs/coverage/phpunit
- printf "Code Coverage Report:\n Lines: 100.00%%\n" >.logs/coverage/phpunit/coverage.txt
+ printf "Code Coverage Report:\n 2024-01-01 12:00:00\n\n Summary:\n Classes: 100.00%% (1/1)\n Methods: 100.00%% (2/2)\n Lines: 100.00%% (4/4)\n\nApp\\\\MyClass\n Methods: 100.00%% ( 2/ 2) Lines: 100.00%% ( 4/ 4)\n" >.logs/coverage/phpunit/coverage.txt
declare -a STEPS=(
# GET existing comments - return empty array.
@@ -98,7 +98,7 @@ load ../_helper.bash
pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
mkdir -p .logs/coverage/phpunit
- printf "Code Coverage Report:\n Lines: 95.00%%\n" >.logs/coverage/phpunit/coverage.txt
+ printf "Code Coverage Report:\n 2024-01-01 12:00:00\n\n Summary:\n Classes: 50.00%% (1/2)\n Methods: 66.67%% (2/3)\n Lines: 95.00%% (6/8)\n\nApp\\\\ClassA\n Methods: 100.00%% ( 2/ 2) Lines: 100.00%% ( 4/ 4)\nApp\\\\ClassB\n Methods: 0.00%% ( 0/ 1) Lines: 50.00%% ( 2/ 4)\n" >.logs/coverage/phpunit/coverage.txt
declare -a STEPS=(
# GET existing comments - return one with marker.