Skip to content

Commit ffd97dc

Browse files
committed
Fix for codeception to correctly workout percentage of code coverage.
1 parent 34ce41f commit ffd97dc

File tree

1 file changed

+16
-14
lines changed

1 file changed

+16
-14
lines changed

plugins/wpgraphql-logging/bin/run-codeception.sh

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,12 @@ run_tests() {
3535
fi
3636

3737
if [[ -n "$COVERAGE" ]]; then
38-
if [[ -n "$COVERAGE_OUTPUT" ]]; then
39-
local coverage="--coverage --coverage-xml $COVERAGE_OUTPUT"
40-
else
41-
local coverage="--coverage --coverage-xml $suites-coverage.xml"
42-
fi
38+
# Generate coverage in default output locations (XML + HTML)
39+
local coverage="--coverage --coverage-xml --coverage-html"
4340
fi
4441

4542
# If maintenance mode is active, de-activate it
46-
if $(wp maintenance-mode is-active --allow-root); then
43+
if wp maintenance-mode is-active --allow-root >/dev/null 2>&1; then
4744
echo "Deactivating maintenance mode"
4845
wp maintenance-mode deactivate --allow-root
4946
fi
@@ -69,15 +66,20 @@ run_tests() {
6966
# Check code coverage if coverage was requested
7067
if [[ -n "$COVERAGE" ]]; then
7168

72-
if [[ -n "$COVERAGE_OUTPUT" ]]; then
73-
coverage_percent=$(grep -oP '(\d+\.\d+)%' "tests/_output/coverage/index.html" | head -1 | tr -d '%')
74-
else
75-
coverage_percent=$(grep -oP 'line-rate="(\d+\.\d+)"' "tests/_output/coverage.xml" | head -1 | grep -oP '\d+\.\d+')
76-
# Convert to percent
77-
if [[ -n "$coverage_percent" ]]; then
78-
coverage_percent=$(awk "BEGIN { printf \"%.2f\", $coverage_percent * 100 }")
69+
# Prefer XML summary for robustness; fallback to HTML if present
70+
if [[ -f "tests/_output/coverage.xml" ]]; then
71+
# Extract total statements and covered statements from the summary metrics line
72+
total_statements=$(grep -Eo 'statements="[0-9]+"' "tests/_output/coverage.xml" | tail -1 | grep -Eo '[0-9]+')
73+
total_covered=$(grep -Eo 'coveredstatements="[0-9]+"' "tests/_output/coverage.xml" | tail -1 | grep -Eo '[0-9]+')
74+
if [[ -n "$total_statements" && -n "$total_covered" && "$total_statements" -gt 0 ]]; then
75+
coverage_percent=$(awk "BEGIN { printf \"%.2f\", ($total_covered / $total_statements) * 100 }")
7976
fi
8077
fi
78+
79+
if [[ -z "$coverage_percent" && -f "tests/_output/coverage/index.html" ]]; then
80+
# macOS/BSD grep lacks -P; use -E and strip the percent sign
81+
coverage_percent=$(grep -Eo '([0-9]+(\.[0-9]+)?)%' "tests/_output/coverage/index.html" | head -1 | tr -d '%')
82+
fi
8183
if [[ -z "$coverage_percent" ]]; then
8284
echo "Warning: Could not determine code coverage percentage."
8385
exit 1
@@ -122,7 +124,7 @@ cleanup_after() {
122124
if [[ "$USING_XDEBUG" == '1' ]]; then
123125
echo "Disabling XDebug 3"
124126
rm /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
125-
else98
127+
else
126128
echo "Disabling pcov/clobber"
127129
docker-php-ext-disable pcov
128130
sed -i '/pcov.enabled=1/d' /usr/local/etc/php/conf.d/docker-php-ext-pcov.ini

0 commit comments

Comments
 (0)