From 5434407af7ba262f74d272c738006cbf1d0ab11a Mon Sep 17 00:00:00 2001 From: Nipunn Koorapati Date: Thu, 28 Oct 2021 10:35:37 -0700 Subject: [PATCH] black-primer: Print summary after individual failures (#2570) If the individual failures are verbose, it's useful to have the summary at the end. Otherwise, it can be really difficult to figure out which projects have an issue. --- CHANGES.md | 6 +++++- src/black_primer/lib.py | 24 ++++++++++++++---------- tests/test_primer.py | 15 +++++++++------ 3 files changed, 28 insertions(+), 17 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index a8307ee..76a7ca6 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -8,13 +8,17 @@ - Add new `--workers` parameter (#2514) - Fixed feature detection for positional-only arguments in lambdas (#2532) - Bumped typed-ast version minimum to 1.4.3 for 3.10 compatiblity (#2519) -- Add primer support for --projects (#2555) ### _Blackd_ - Remove dependency on aiohttp-cors (#2500) - Bump required aiohttp version to 3.7.4 (#2509) +### _Black-Primer_ + +- Add primer support for --projects (#2555) +- Print primer summary after individual failures (#2570) + ### Integrations - Allow to pass `target_version` in the vim plugin (#1319) diff --git a/src/black_primer/lib.py b/src/black_primer/lib.py index 3515016..13724f4 100644 --- a/src/black_primer/lib.py +++ b/src/black_primer/lib.py @@ -88,6 +88,18 @@ def analyze_results(project_count: int, results: Results) -> int: failed_pct = round(((results.stats["failed"] / project_count) * 100), 2) success_pct = round(((results.stats["success"] / project_count) * 100), 2) + if results.failed_projects: + click.secho("\nFailed projects:\n", bold=True) + + for project_name, project_cpe in results.failed_projects.items(): + print(f"## {project_name}:") + print(f" - Returned {project_cpe.returncode}") + if project_cpe.stderr: + print(f" - stderr:\n{project_cpe.stderr.decode('utf8')}") + if project_cpe.stdout: + print(f" - stdout:\n{project_cpe.stdout.decode('utf8')}") + print("") + click.secho("-- primer results 📊 --\n", bold=True) click.secho( f"{results.stats['success']} / {project_count} succeeded ({success_pct}%) ✅", @@ -110,16 +122,8 @@ def analyze_results(project_count: int, results: Results) -> int: ) if results.failed_projects: - click.secho("\nFailed projects:\n", bold=True) - - for project_name, project_cpe in results.failed_projects.items(): - print(f"## {project_name}:") - print(f" - Returned {project_cpe.returncode}") - if project_cpe.stderr: - print(f" - stderr:\n{project_cpe.stderr.decode('utf8')}") - if project_cpe.stdout: - print(f" - stdout:\n{project_cpe.stdout.decode('utf8')}") - print("") + failed = ", ".join(results.failed_projects.keys()) + click.secho(f"\nFailed projects: {failed}\n", bold=True) return results.stats["failed"] diff --git a/tests/test_primer.py b/tests/test_primer.py index 8d00d83..2aac2d0 100644 --- a/tests/test_primer.py +++ b/tests/test_primer.py @@ -20,6 +20,14 @@ from black_primer import cli, lib EXPECTED_ANALYSIS_OUTPUT = """\ + +Failed projects: + +## black: + - Returned 69 + - stdout: +Black didn't work + -- primer results 📊 -- 68 / 69 succeeded (98.55%) ✅ @@ -28,12 +36,7 @@ EXPECTED_ANALYSIS_OUTPUT = """\ - 0 projects skipped due to Python version - 0 skipped due to long checkout -Failed projects: - -## black: - - Returned 69 - - stdout: -Black didn't work +Failed projects: black """ FAKE_PROJECT_CONFIG = { -- 2.39.5