From c5a348aafcdc1a648794b75fbf86138831a7faf9 Mon Sep 17 00:00:00 2001 From: Nipunn Koorapati Date: Wed, 27 Oct 2021 22:01:23 -0700 Subject: [PATCH] black-primer: Print summary after individual failures 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 a8307ee61ec..76a7ca6fd3d 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 351501673f8..13724f431ce 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 8d00d8353a7..2aac2d09ff5 100644 --- a/tests/test_primer.py +++ b/tests/test_primer.py @@ -20,6 +20,14 @@ EXPECTED_ANALYSIS_OUTPUT = """\ + +Failed projects: + +## black: + - Returned 69 + - stdout: +Black didn't work + -- primer results 📊 -- 68 / 69 succeeded (98.55%) ✅ @@ -28,12 +36,7 @@ - 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 = {