Skip to content

Commit

Permalink
black-primer: Print summary after individual failures
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
nipunn1313 committed Oct 28, 2021
1 parent 467efe1 commit c5a348a
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 17 deletions.
6 changes: 5 additions & 1 deletion CHANGES.md
Expand Up @@ -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)
Expand Down
24 changes: 14 additions & 10 deletions src/black_primer/lib.py
Expand Up @@ -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}%) ✅",
Expand All @@ -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"]

Expand Down
15 changes: 9 additions & 6 deletions tests/test_primer.py
Expand Up @@ -20,6 +20,14 @@


EXPECTED_ANALYSIS_OUTPUT = """\
Failed projects:
## black:
- Returned 69
- stdout:
Black didn't work
-- primer results 📊 --
68 / 69 succeeded (98.55%) ✅
Expand All @@ -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 = {
Expand Down

0 comments on commit c5a348a

Please sign in to comment.