ci: improve reporting
This commit is contained in:
parent
d03900c0e8
commit
f0ba65eb9b
3 changed files with 33 additions and 21 deletions
35
.github/helper/ci.py
vendored
35
.github/helper/ci.py
vendored
|
|
@ -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()
|
||||||
|
|
|
||||||
|
|
@ -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(
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue