From f0ba65eb9b7082768d7424c7e4b617a4d5d38301 Mon Sep 17 00:00:00 2001 From: David Date: Fri, 4 Oct 2024 11:37:09 +0200 Subject: [PATCH] ci: improve reporting --- .github/helper/ci.py | 35 +++++++++++++++++----------------- frappe/commands/utils.py | 3 ++- frappe/parallel_test_runner.py | 16 +++++++++++++--- 3 files changed, 33 insertions(+), 21 deletions(-) diff --git a/.github/helper/ci.py b/.github/helper/ci.py index 165c1b6a7d..df18466cd5 100644 --- a/.github/helper/ci.py +++ b/.github/helper/ci.py @@ -134,26 +134,27 @@ if __name__ == "__main__": # Run tests with code coverage with CodeCoverage(with_coverage=with_coverage, app=app): # 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: from frappe.parallel_test_runner import ParallelTestWithOrchestrator - ParallelTestWithOrchestrator(app, site=site) + runner = ParallelTestWithOrchestrator(app, site=site) else: 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() diff --git a/frappe/commands/utils.py b/frappe/commands/utils.py index 1fbfa482f1..2c3f9d9bbb 100644 --- a/frappe/commands/utils.py +++ b/frappe/commands/utils.py @@ -868,13 +868,14 @@ def run_parallel_tests( else: from frappe.parallel_test_runner import ParallelTestRunner - ParallelTestRunner( + runner = ParallelTestRunner( app, site=site, build_number=build_number, total_builds=total_builds, dry_run=dry_run, ) + runner.setup_and_run() @click.command( diff --git a/frappe/parallel_test_runner.py b/frappe/parallel_test_runner.py index 51adf9cdf3..72bd0285b4 100644 --- a/frappe/parallel_test_runner.py +++ b/frappe/parallel_test_runner.py @@ -26,8 +26,15 @@ class ParallelTestRunner: self.build_number = frappe.utils.cint(build_number) or 1 self.total_builds = frappe.utils.cint(total_builds) 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.run_tests() + self.print_result() def setup_test_site(self): frappe.init(self.site) @@ -57,14 +64,17 @@ class ParallelTestRunner: elapsed = click.style(f" ({elapsed:.03}s)", fg="red") 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): 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.print_result() - def run_tests_for_file(self, file_info): if not file_info: return