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.