@@ -176,34 +176,59 @@ jobs:
176176 modified_packages=$(git diff --name-only HEAD~1 -- packages | cut -d/ -f1,2 | sort -u)
177177 fi
178178
179+ mkdir -p /tmp/coverage-logs
180+ MAX_JOBS=8
181+
182+ for pkg in ${modified_packages}; do
183+ if [ -d "${pkg}" ]; then
184+ # Limit the number of concurrent background jobs
185+ while [ $(jobs -r | wc -l) -ge ${MAX_JOBS} ]; do
186+ sleep 0.1
187+ done
188+
189+ (
190+ pkg_log="/tmp/coverage-logs/${pkg//\//_}.log"
191+ pkg_status="/tmp/coverage-logs/${pkg//\//_}.status"
192+
193+ set +e
194+ if [ -f "${pkg}/.coveragerc" ]; then
195+ echo "Using package-specific configuration: ${pkg}/.coveragerc" > "${pkg_log}"
196+ if grep -q "fail_under" "${pkg}/.coveragerc"; then
197+ coverage report --rcfile="${pkg}/.coveragerc" --include="${pkg}/**" >> "${pkg_log}" 2>&1
198+ else
199+ echo "No fail_under specified in ${pkg}/.coveragerc, enforcing default" >> "${pkg_log}"
200+ coverage report --rcfile="${pkg}/.coveragerc" --include="${pkg}/**" --fail-under="${DEFAULT_FAIL_UNDER}" >> "${pkg_log}" 2>&1
201+ fi
202+ else
203+ echo "No .coveragerc found for ${pkg}, enforcing default" > "${pkg_log}"
204+ coverage report --include="${pkg}/**" --fail-under="${DEFAULT_FAIL_UNDER}" >> "${pkg_log}" 2>&1
205+ fi
206+ echo $? > "${pkg_status}"
207+ set -e
208+ ) &
209+ fi
210+ done
211+
212+ # Wait for all background checks to finish
213+ wait
214+
179215 failed_packages=()
180216 passed_packages=()
181217
182218 for pkg in ${modified_packages}; do
183219 if [ -d "${pkg}" ]; then
220+ pkg_log="/tmp/coverage-logs/${pkg//\//_}.log"
221+ pkg_status="/tmp/coverage-logs/${pkg//\//_}.status"
222+
184223 echo "============================================================"
185224 echo "Evaluating coverage for package: ${pkg}"
186225 echo "============================================================"
187-
188- set +e
189- if [ -f "${pkg}/.coveragerc" ]; then
190- echo "Using package-specific configuration: ${pkg}/.coveragerc"
191- # If fail_under is specified in the package-specific .coveragerc, coverage report
192- # will automatically enforce it. Otherwise, we enforce the default.
193- if grep -q "fail_under" "${pkg}/.coveragerc"; then
194- coverage report --rcfile="${pkg}/.coveragerc" --include="${pkg}/**"
195- else
196- echo "No fail_under specified in ${pkg}/.coveragerc, enforcing default"
197- coverage report --rcfile="${pkg}/.coveragerc" --include="${pkg}/**" --fail-under="${DEFAULT_FAIL_UNDER}"
198- fi
199- else
200- echo "No .coveragerc found for ${pkg}, enforcing default"
201- coverage report --include="${pkg}/**" --fail-under="${DEFAULT_FAIL_UNDER}"
226+ if [ -f "${pkg_log}" ]; then
227+ cat "${pkg_log}"
202228 fi
203- status=$?
204- set -e
205229
206- if [ ${status} -ne 0 ]; then
230+ status=$(cat "${pkg_status}")
231+ if [ "${status}" -ne 0 ]; then
207232 failed_packages+=("${pkg}")
208233 else
209234 passed_packages+=("${pkg}")
0 commit comments