Skip to content

Commit 80f0061

Browse files
committed
avoid combining all coverage files
1 parent e4495b8 commit 80f0061

1 file changed

Lines changed: 36 additions & 25 deletions

File tree

.github/workflows/unittest.yml

Lines changed: 36 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -161,16 +161,6 @@ jobs:
161161
# Unzip any zipped coverage results
162162
find .coverage-results -type f -name '*.zip' -exec unzip -o {} \;
163163
164-
# Find all coverage files and combine them.
165-
# We find files starting with .coverage (excluding .coveragerc files and templates)
166-
coverage_files=$(find .coverage-results . -type f -name '.coverage*' ! -name '.coveragerc*')
167-
if [ -n "${coverage_files}" ]; then
168-
coverage combine ${coverage_files}
169-
else
170-
echo "Error: No coverage files found to combine."
171-
exit 1
172-
fi
173-
174164
# Find all modified packages
175165
if [[ "${TEST_ALL_PACKAGES}" == "true" ]]; then
176166
modified_packages=$(ls -d packages/*/ | cut -d/ -f1,2 | sort -u)
@@ -189,25 +179,45 @@ jobs:
189179
done
190180
191181
(
192-
pkg_log="/tmp/coverage-logs/${pkg//\//_}.log"
193-
pkg_status="/tmp/coverage-logs/${pkg//\//_}.status"
182+
pkg_name_clean=$(echo "${pkg}" | sed 's|/$||' | sed 's|/|_|g')
183+
pkg_log="/tmp/coverage-logs/${pkg_name_clean}.log"
184+
pkg_status="/tmp/coverage-logs/${pkg_name_clean}.status"
194185
195186
set +e
196-
pushd "${pkg}" > /dev/null
197-
if [ -f ".coveragerc" ]; then
198-
echo "Using package-specific configuration: ${pkg}/.coveragerc" > "${pkg_log}"
199-
if grep -q "fail_under" ".coveragerc"; then
200-
COVERAGE_FILE=../../.coverage coverage report --rcfile=".coveragerc" --include="$PWD/**" >> "${pkg_log}" 2>&1
187+
188+
# Find coverage databases belonging specifically to this package across all Python versions
189+
pkg_files=$(find .coverage-results/ -type f -name ".coverage.*.${pkg_name_clean}" -o -name ".coverage.*.${pkg_name_clean}.*")
190+
191+
if [ -n "${pkg_files}" ]; then
192+
# Create a dedicated temp directory for combining this package's coverage databases
193+
temp_combine_dir="/tmp/combine-${pkg_name_clean}"
194+
mkdir -p "${temp_combine_dir}"
195+
cp ${pkg_files} "${temp_combine_dir}/"
196+
197+
pushd "${pkg}" > /dev/null
198+
199+
# Combine only this package's databases into a local .coverage database inside the package directory
200+
COVERAGE_FILE="${PWD}/.coverage" coverage combine "${temp_combine_dir}"/.coverage.* >> "${pkg_log}" 2>&1
201+
202+
# Generate the coverage report using the package-specific local database
203+
if [ -f ".coveragerc" ]; then
204+
echo "Using package-specific configuration: ${pkg}/.coveragerc" > "${pkg_log}"
205+
if grep -q "fail_under" ".coveragerc"; then
206+
COVERAGE_FILE="${PWD}/.coverage" coverage report --rcfile=".coveragerc" --include="$PWD/**" >> "${pkg_log}" 2>&1
207+
else
208+
echo "No fail_under specified in ${pkg}/.coveragerc, enforcing default" >> "${pkg_log}"
209+
COVERAGE_FILE="${PWD}/.coverage" coverage report --rcfile=".coveragerc" --include="$PWD/**" --fail-under="${DEFAULT_FAIL_UNDER}" >> "${pkg_log}" 2>&1
210+
fi
201211
else
202-
echo "No fail_under specified in ${pkg}/.coveragerc, enforcing default" >> "${pkg_log}"
203-
COVERAGE_FILE=../../.coverage coverage report --rcfile=".coveragerc" --include="$PWD/**" --fail-under="${DEFAULT_FAIL_UNDER}" >> "${pkg_log}" 2>&1
212+
echo "No .coveragerc found for ${pkg}, enforcing default" > "${pkg_log}"
213+
COVERAGE_FILE="${PWD}/.coverage" coverage report --include="$PWD/**" --fail-under="${DEFAULT_FAIL_UNDER}" >> "${pkg_log}" 2>&1
204214
fi
215+
echo $? > "${pkg_status}"
216+
popd > /dev/null
205217
else
206-
echo "No .coveragerc found for ${pkg}, enforcing default" > "${pkg_log}"
207-
COVERAGE_FILE=../../.coverage coverage report --include="$PWD/**" --fail-under="${DEFAULT_FAIL_UNDER}" >> "${pkg_log}" 2>&1
218+
echo "Warning: No coverage results found for ${pkg}" > "${pkg_log}"
219+
echo 1 > "${pkg_status}"
208220
fi
209-
echo $? > "${pkg_status}"
210-
popd > /dev/null
211221
set -e
212222
) &
213223
fi
@@ -221,8 +231,9 @@ jobs:
221231
222232
for pkg in ${modified_packages}; do
223233
if [ -d "${pkg}" ]; then
224-
pkg_log="/tmp/coverage-logs/${pkg//\//_}.log"
225-
pkg_status="/tmp/coverage-logs/${pkg//\//_}.status"
234+
pkg_name_clean=$(echo "${pkg}" | sed 's|/$||' | sed 's|/|_|g')
235+
pkg_log="/tmp/coverage-logs/${pkg_name_clean}.log"
236+
pkg_status="/tmp/coverage-logs/${pkg_name_clean}.status"
226237
227238
echo "============================================================"
228239
echo "Evaluating coverage for package: ${pkg}"

0 commit comments

Comments
 (0)