Skip to content

Commit 9572820

Browse files
authored
fix: add parallel UT coverage reporting and recover Codecov (#3323)
* Revert "fix: Parallel unit test runner with file-level subprocess isolation (#3285)" This reverts commit b6e59cf. * fix: restore parallel UT runner with coverage reporting * fix: pin codecov action for sonar * ci: add repo controlled codecov gates
1 parent 6b2cd0e commit 9572820

3 files changed

Lines changed: 35 additions & 16 deletions

File tree

.github/workflows/auto-unit-test.yml

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@ on:
1919
description: 'per-file timeout in seconds (0=disabled)'
2020
required: false
2121
default: '300'
22+
codecov_os:
23+
description: 'Codecov uploader OS override (e.g. linux-arm64, linux, macos, windows)'
24+
required: false
25+
default: 'linux-arm64'
2226
pull_request:
2327
branches: [develop, 'release/**', 'hotfix/**']
2428
paths:
@@ -95,11 +99,13 @@ jobs:
9599
fi
96100
97101
- name: Upload coverage to Codecov
98-
uses: codecov/codecov-action@v4
102+
# codecov/codecov-action@v7
103+
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f
99104
with:
100105
files: test/coverage.xml
101106
token: ${{ secrets.CODECOV_TOKEN }}
102107
flags: unittests
103108
name: codecov-umbrella
104-
fail_ci_if_error: false
109+
fail_ci_if_error: true
110+
os: ${{ github.event.inputs.codecov_os || 'linux-arm64' }}
105111
verbose: true

codecov.yml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
coverage:
2+
precision: 2
3+
round: down
4+
range: "90...100"
5+
status:
6+
project:
7+
default:
8+
target: auto
9+
threshold: 0%
10+
if_ci_failed: error
11+
only_pulls: true
12+
patch:
13+
default:
14+
target: 90%
15+
threshold: 0%
16+
if_ci_failed: error
17+
only_pulls: true
18+
19+
comment:
20+
layout: "diff, flags, files"
21+
behavior: default
22+
require_changes: true

test/run_all_test.py

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -271,8 +271,7 @@ def generate_error_report(results: list[dict]) -> None:
271271

272272
def _combine_coverage(current_dir: Path, project_root: Path) -> bool:
273273
coverage_data_file = current_dir / ".coverage"
274-
coverage_xml_file = current_dir / "coverage.xml"
275-
for path in (coverage_data_file, coverage_xml_file):
274+
for path in (coverage_data_file,):
276275
if path.exists():
277276
path.unlink()
278277

@@ -282,23 +281,12 @@ def _combine_coverage(current_dir: Path, project_root: Path) -> bool:
282281
str(coverage_data_file),
283282
str(current_dir),
284283
)
285-
xml_cmd = _coverage_command(
286-
"xml",
287-
"-o",
288-
str(coverage_xml_file),
289-
"--data-file",
290-
str(coverage_data_file),
291-
)
292284
coverage_env = _coverage_env(project_root)
293285
combine = subprocess.run(combine_cmd, cwd=project_root, env=coverage_env, text=True, capture_output=True)
294286
if combine.returncode != 0:
295287
logger.error("Coverage combine failed:\n%s\n%s", combine.stdout, combine.stderr)
296288
return False
297-
xml = subprocess.run(xml_cmd, cwd=project_root, env=coverage_env, text=True, capture_output=True)
298-
if xml.returncode != 0:
299-
logger.error("Coverage XML generation failed:\n%s\n%s", xml.stdout, xml.stderr)
300-
return False
301-
logger.info("Coverage XML file generated: %s", coverage_xml_file)
289+
logger.info("Coverage data combined: %s", coverage_data_file)
302290
return True
303291

304292

@@ -318,6 +306,9 @@ def _report_coverage(current_dir: Path) -> bool:
318306
html_dir = current_dir / "coverage_html"
319307
cov.html_report(directory=str(html_dir))
320308
logger.info("\nHTML coverage report generated in: %s", html_dir)
309+
xml_file = current_dir / "coverage.xml"
310+
cov.xml_report(outfile=str(xml_file))
311+
logger.info("XML coverage report generated: %s", xml_file)
321312
except Exception as exc:
322313
logger.error("Coverage report failed: %s", exc)
323314
return False

0 commit comments

Comments
 (0)