Skip to content

Commit 92626bd

Browse files
committed
parallelize final cover check
1 parent a1fab95 commit 92626bd

1 file changed

Lines changed: 43 additions & 18 deletions

File tree

.github/workflows/unittest.yml

Lines changed: 43 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)