-
-
Notifications
You must be signed in to change notification settings - Fork 29
Fixed coverage threshold check not storing results on low values in CI. #2372
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -263,16 +263,13 @@ jobs: | |||||||||||||||||||||||||||||||||||||||||
| fi | ||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||
| - run: | ||||||||||||||||||||||||||||||||||||||||||
| name: Check code coverage threshold | ||||||||||||||||||||||||||||||||||||||||||
| name: Extract code coverage | ||||||||||||||||||||||||||||||||||||||||||
| command: | | ||||||||||||||||||||||||||||||||||||||||||
| [ "${CIRCLE_NODE_TOTAL:-1}" -gt 1 ] && [ "${CIRCLE_NODE_INDEX:-0}" -ne 0 ] && exit 0 | ||||||||||||||||||||||||||||||||||||||||||
| RATE=$(grep -om1 'line-rate="[0-9.]*"' /tmp/artifacts/coverage/phpunit/cobertura.xml | tr -cd '0-9.') | ||||||||||||||||||||||||||||||||||||||||||
| PERCENT=$(awk "BEGIN {printf \"%.2f\", $RATE*100}") | ||||||||||||||||||||||||||||||||||||||||||
| echo "Coverage: $PERCENT% (threshold: ${VORTEX_CI_CODE_COVERAGE_THRESHOLD:-90}%)" | ||||||||||||||||||||||||||||||||||||||||||
| if [ "${PERCENT//./}" -lt "$((${VORTEX_CI_CODE_COVERAGE_THRESHOLD:-90}*100))" ]; then | ||||||||||||||||||||||||||||||||||||||||||
| echo "FAIL: coverage too low" | ||||||||||||||||||||||||||||||||||||||||||
| exit 1 | ||||||||||||||||||||||||||||||||||||||||||
| fi | ||||||||||||||||||||||||||||||||||||||||||
| echo "export COVERAGE_PERCENT=${PERCENT}" >> "${BASH_ENV}" | ||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||
| - run: | ||||||||||||||||||||||||||||||||||||||||||
| name: Post coverage summary as PR comment | ||||||||||||||||||||||||||||||||||||||||||
|
|
@@ -299,6 +296,15 @@ jobs: | |||||||||||||||||||||||||||||||||||||||||
| if [ -n "${CODECOV_TOKEN}" ] && [ -d /tmp/artifacts/coverage ] && ! echo "${CIRCLE_BRANCH}" | grep -q '^deps/'; then | ||||||||||||||||||||||||||||||||||||||||||
| codecov -Z -s /tmp/artifacts/coverage; | ||||||||||||||||||||||||||||||||||||||||||
| fi | ||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||
| - run: | ||||||||||||||||||||||||||||||||||||||||||
| name: Check code coverage threshold | ||||||||||||||||||||||||||||||||||||||||||
| command: | | ||||||||||||||||||||||||||||||||||||||||||
| [ "${CIRCLE_NODE_TOTAL:-1}" -gt 1 ] && [ "${CIRCLE_NODE_INDEX:-0}" -ne 0 ] && exit 0 | ||||||||||||||||||||||||||||||||||||||||||
| if [ "${COVERAGE_PERCENT//.}" -lt "$((${VORTEX_CI_CODE_COVERAGE_THRESHOLD:-90}*100))" ]; then | ||||||||||||||||||||||||||||||||||||||||||
| echo "FAIL: coverage ${COVERAGE_PERCENT}% is below threshold ${VORTEX_CI_CODE_COVERAGE_THRESHOLD:-90}%" | ||||||||||||||||||||||||||||||||||||||||||
| exit 1 | ||||||||||||||||||||||||||||||||||||||||||
| fi | ||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+300
to
+307
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Handle unset If the cobertura.xml file is missing or malformed, 🛡️ Proposed fix - run:
name: Check code coverage threshold
command: |
[ "${CIRCLE_NODE_TOTAL:-1}" -gt 1 ] && [ "${CIRCLE_NODE_INDEX:-0}" -ne 0 ] && exit 0
+ if [ -z "${COVERAGE_PERCENT:-}" ]; then
+ echo "FAIL: COVERAGE_PERCENT is not set (coverage report may be missing)"
+ exit 1
+ fi
if [ "${COVERAGE_PERCENT//.}" -lt "$((${VORTEX_CI_CODE_COVERAGE_THRESHOLD:-90}*100))" ]; then
echo "FAIL: coverage ${COVERAGE_PERCENT}% is below threshold ${VORTEX_CI_CODE_COVERAGE_THRESHOLD:-90}%"
exit 1
fi📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||||||
| #;> TOOL_PHPUNIT | ||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||
| #;< TOOL_BEHAT | ||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -421,16 +421,13 @@ jobs: | |||||||||||||||||||||||||||||||||||||||||||||
| docker compose cp cli:/app/.logs/. ".logs/" | ||||||||||||||||||||||||||||||||||||||||||||||
| fi | ||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
| - name: Check code coverage threshold | ||||||||||||||||||||||||||||||||||||||||||||||
| - name: Extract code coverage | ||||||||||||||||||||||||||||||||||||||||||||||
| if: ${{ matrix.instance == 0 || strategy.job-total == 1 }} | ||||||||||||||||||||||||||||||||||||||||||||||
| run: | | ||||||||||||||||||||||||||||||||||||||||||||||
| 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" | ||||||||||||||||||||||||||||||||||||||||||||||
| if [ "${PERCENT//./}" -lt "$((VORTEX_CI_CODE_COVERAGE_THRESHOLD*100))" ]; then | ||||||||||||||||||||||||||||||||||||||||||||||
| echo "FAIL: coverage too low" | ||||||||||||||||||||||||||||||||||||||||||||||
| exit 1 | ||||||||||||||||||||||||||||||||||||||||||||||
| fi | ||||||||||||||||||||||||||||||||||||||||||||||
| echo "COVERAGE_PERCENT=${PERCENT}" >> "$GITHUB_ENV" | ||||||||||||||||||||||||||||||||||||||||||||||
| { echo "COVERAGE_CONTENT<<EOF"; sed '/./,$!d' .logs/coverage/phpunit/coverage.txt; echo "EOF"; } >> "$GITHUB_ENV" | ||||||||||||||||||||||||||||||||||||||||||||||
| env: | ||||||||||||||||||||||||||||||||||||||||||||||
| VORTEX_CI_CODE_COVERAGE_THRESHOLD: ${{ vars.VORTEX_CI_CODE_COVERAGE_THRESHOLD || '90' }} | ||||||||||||||||||||||||||||||||||||||||||||||
|
|
@@ -454,6 +451,16 @@ jobs: | |||||||||||||||||||||||||||||||||||||||||||||
| token: ${{ secrets.CODECOV_TOKEN }} | ||||||||||||||||||||||||||||||||||||||||||||||
| env: | ||||||||||||||||||||||||||||||||||||||||||||||
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | ||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
| - name: Check code coverage threshold | ||||||||||||||||||||||||||||||||||||||||||||||
| if: ${{ matrix.instance == 0 || strategy.job-total == 1 }} | ||||||||||||||||||||||||||||||||||||||||||||||
| run: | | ||||||||||||||||||||||||||||||||||||||||||||||
| if [ "${COVERAGE_PERCENT//.}" -lt "$((VORTEX_CI_CODE_COVERAGE_THRESHOLD*100))" ]; then | ||||||||||||||||||||||||||||||||||||||||||||||
| echo "FAIL: coverage ${COVERAGE_PERCENT}% is below threshold ${VORTEX_CI_CODE_COVERAGE_THRESHOLD}%" | ||||||||||||||||||||||||||||||||||||||||||||||
| exit 1 | ||||||||||||||||||||||||||||||||||||||||||||||
| fi | ||||||||||||||||||||||||||||||||||||||||||||||
| env: | ||||||||||||||||||||||||||||||||||||||||||||||
| VORTEX_CI_CODE_COVERAGE_THRESHOLD: ${{ vars.VORTEX_CI_CODE_COVERAGE_THRESHOLD || '90' }} | ||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+455
to
+463
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Handle unset Same as the CircleCI config: if 🛡️ Proposed fix - name: Check code coverage threshold
if: ${{ matrix.instance == 0 || strategy.job-total == 1 }}
run: |
+ if [ -z "${COVERAGE_PERCENT:-}" ]; then
+ echo "FAIL: COVERAGE_PERCENT is not set (coverage report may be missing)"
+ exit 1
+ fi
if [ "${COVERAGE_PERCENT//.}" -lt "$((VORTEX_CI_CODE_COVERAGE_THRESHOLD*100))" ]; then
echo "FAIL: coverage ${COVERAGE_PERCENT}% is below threshold ${VORTEX_CI_CODE_COVERAGE_THRESHOLD}%"
exit 1
fi
env:
VORTEX_CI_CODE_COVERAGE_THRESHOLD: ${{ vars.VORTEX_CI_CODE_COVERAGE_THRESHOLD || '90' }}📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||||||||||
| #;> TOOL_PHPUNIT | ||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
| #;< TOOL_BEHAT | ||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Handle unset
COVERAGE_PERCENTgracefully.If the cobertura.xml file is missing or malformed,
COVERAGE_PERCENTwill be empty, causing the integer comparison on line 438 to fail with a shell error. Consider adding a guard:🛡️ Proposed fix
- run: name: Check code coverage threshold command: | [ "${CIRCLE_NODE_TOTAL:-1}" -gt 1 ] && [ "${CIRCLE_NODE_INDEX:-0}" -ne 0 ] && exit 0 + if [ -z "${COVERAGE_PERCENT:-}" ]; then + echo "FAIL: COVERAGE_PERCENT is not set (coverage report may be missing)" + exit 1 + fi if [ "${COVERAGE_PERCENT//.}" -lt "$((${VORTEX_CI_CODE_COVERAGE_THRESHOLD:-90}*100))" ]; then echo "FAIL: coverage ${COVERAGE_PERCENT}% is below threshold ${VORTEX_CI_CODE_COVERAGE_THRESHOLD:-90}%" exit 1 fi📝 Committable suggestion
🤖 Prompt for AI Agents