Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

primer: Add --no-diff option #2187

Merged
merged 2 commits into from May 4, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGES.md
Expand Up @@ -5,6 +5,7 @@
#### _Black_

- Set `--pyi` mode if `--stdin-filename` ends in `.pyi` (#2169)
- Add `--no-diff` to black-primer to suppress formatting changes (#2187)

### 21.4b2

Expand Down
15 changes: 14 additions & 1 deletion src/black_primer/cli.py
Expand Up @@ -39,6 +39,7 @@ async def async_main(
debug: bool,
keep: bool,
long_checkouts: bool,
no_diff: bool,
rebase: bool,
workdir: str,
workers: int,
Expand All @@ -54,7 +55,13 @@ async def async_main(

try:
ret_val = await lib.process_queue(
config, work_path, workers, keep, long_checkouts, rebase
config,
work_path,
workers,
keep,
long_checkouts,
rebase,
no_diff,
)
return int(ret_val)
finally:
Expand Down Expand Up @@ -95,6 +102,12 @@ async def async_main(
show_default=True,
help="Pull big projects to test",
)
@click.option(
"--no-diff",
is_flag=True,
show_default=True,
help="Disable showing source file changes in black output",
)
@click.option(
"-R",
"--rebase",
Expand Down
25 changes: 21 additions & 4 deletions src/black_primer/lib.py
Expand Up @@ -112,13 +112,20 @@ def analyze_results(project_count: int, results: Results) -> int:


async def black_run(
repo_path: Path, project_config: Dict[str, Any], results: Results
repo_path: Path,
project_config: Dict[str, Any],
results: Results,
no_diff: bool = False,
) -> None:
"""Run Black and record failures"""
cmd = [str(which(BLACK_BINARY))]
if "cli_arguments" in project_config and project_config["cli_arguments"]:
cmd.extend(*project_config["cli_arguments"])
cmd.extend(["--check", "--diff", "."])
cmd.append("--check")
if no_diff:
cmd.append(".")
else:
cmd.extend(["--diff", "."])

with TemporaryDirectory() as tmp_path:
# Prevent reading top-level user configs by manipulating envionment variables
Expand Down Expand Up @@ -246,6 +253,7 @@ async def project_runner(
long_checkouts: bool = False,
rebase: bool = False,
keep: bool = False,
no_diff: bool = False,
) -> None:
"""Check out project and run Black on it + record result"""
loop = asyncio.get_event_loop()
Expand Down Expand Up @@ -284,7 +292,7 @@ async def project_runner(
repo_path = await git_checkout_or_rebase(work_path, project_config, rebase)
if not repo_path:
continue
await black_run(repo_path, project_config, results)
await black_run(repo_path, project_config, results, no_diff)

if not keep:
LOG.debug(f"Removing {repo_path}")
Expand All @@ -303,6 +311,7 @@ async def process_queue(
keep: bool = False,
long_checkouts: bool = False,
rebase: bool = False,
no_diff: bool = False,
) -> int:
"""
Process the queue with X workers and evaluate results
Expand Down Expand Up @@ -330,7 +339,15 @@ async def process_queue(
await asyncio.gather(
*[
project_runner(
i, config, queue, work_path, results, long_checkouts, rebase, keep
i,
config,
queue,
work_path,
results,
long_checkouts,
rebase,
keep,
no_diff,
)
for i in range(workers)
]
Expand Down
1 change: 1 addition & 0 deletions tests/test_primer.py
Expand Up @@ -198,6 +198,7 @@ def test_async_main(self) -> None:
"rebase": False,
"workdir": str(work_dir),
"workers": 69,
"no_diff": False,
}
with patch("black_primer.cli.lib.process_queue", return_zero):
return_val = loop.run_until_complete(cli.async_main(**args))
Expand Down