@@ -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