ci: improve reporting

This commit is contained in:
David 2024-10-04 11:37:09 +02:00
parent d03900c0e8
commit f0ba65eb9b
No known key found for this signature in database
GPG key ID: AB15A6AF1101390D
3 changed files with 33 additions and 21 deletions

35
.github/helper/ci.py vendored
View file

@ -134,26 +134,27 @@ if __name__ == "__main__":
# Run tests with code coverage # Run tests with code coverage
with CodeCoverage(with_coverage=with_coverage, app=app): with CodeCoverage(with_coverage=with_coverage, app=app):
# Add ASCII banner at the end # Add ASCII banner at the end
mode = "Orchestrator" if use_orchestrator else "Parallel"
banner = f"""
{'' * 50}
{' ' * 50}
CI Helper Script Execution Summary
{' ' * 50}
{'' * 50}
Mode: {mode:<29}
App: {app:<29}
Site: {site:<29}
Build Number: {build_number:<29}
Total Builds: {total_builds:<29}
{'' * 50}
"""
print(banner)
if use_orchestrator: if use_orchestrator:
from frappe.parallel_test_runner import ParallelTestWithOrchestrator from frappe.parallel_test_runner import ParallelTestWithOrchestrator
ParallelTestWithOrchestrator(app, site=site) runner = ParallelTestWithOrchestrator(app, site=site)
else: else:
from frappe.parallel_test_runner import ParallelTestRunner from frappe.parallel_test_runner import ParallelTestRunner
ParallelTestRunner(app, site=site, build_number=build_number, total_builds=total_builds) runner = ParallelTestRunner(app, site=site, build_number=build_number, total_builds=total_builds)
mode = "Orchestrator" if use_orchestrator else "Parallel"
banner = f"""
CI Helper Script Execution Summary
Mode: {mode:<26}
App: {app:<26}
Site: {site:<26}
Build Number: {build_number:<26}
Total Builds: {total_builds:<26}
Tests in Build: ~{runner.total_tests:<25}
"""
print(banner)
runner.setup_and_run()

View file

@ -868,13 +868,14 @@ def run_parallel_tests(
else: else:
from frappe.parallel_test_runner import ParallelTestRunner from frappe.parallel_test_runner import ParallelTestRunner
ParallelTestRunner( runner = ParallelTestRunner(
app, app,
site=site, site=site,
build_number=build_number, build_number=build_number,
total_builds=total_builds, total_builds=total_builds,
dry_run=dry_run, dry_run=dry_run,
) )
runner.setup_and_run()
@click.command( @click.command(

View file

@ -26,8 +26,15 @@ class ParallelTestRunner:
self.build_number = frappe.utils.cint(build_number) or 1 self.build_number = frappe.utils.cint(build_number) or 1
self.total_builds = frappe.utils.cint(total_builds) self.total_builds = frappe.utils.cint(total_builds)
self.dry_run = dry_run self.dry_run = dry_run
self.test_file_list = []
self.total_tests = 0
self.test_result = None
self.setup_test_file_list()
def setup_and_run(self):
self.setup_test_site() self.setup_test_site()
self.run_tests() self.run_tests()
self.print_result()
def setup_test_site(self): def setup_test_site(self):
frappe.init(self.site) frappe.init(self.site)
@ -57,14 +64,17 @@ class ParallelTestRunner:
elapsed = click.style(f" ({elapsed:.03}s)", fg="red") elapsed = click.style(f" ({elapsed:.03}s)", fg="red")
click.echo(f"Before Test {elapsed}") click.echo(f"Before Test {elapsed}")
def setup_test_file_list(self):
self.test_file_list = self.get_test_file_list()
self.total_tests = sum(self.get_test_count(test) for test in self.test_file_list)
click.echo(f"Estimated total tests for build {self.build_number}: {self.total_tests}")
def run_tests(self): def run_tests(self):
self.test_result = ParallelTestResult(stream=sys.stderr, descriptions=True, verbosity=2) self.test_result = ParallelTestResult(stream=sys.stderr, descriptions=True, verbosity=2)
for test_file_info in self.get_test_file_list(): for test_file_info in self.test_file_list:
self.run_tests_for_file(test_file_info) self.run_tests_for_file(test_file_info)
self.print_result()
def run_tests_for_file(self, file_info): def run_tests_for_file(self, file_info):
if not file_info: if not file_info:
return return