parent
b07ca2b7d5
commit
5e1e1a1820
24
black.py
24
black.py
@ -184,12 +184,8 @@ def main(
|
|||||||
sources.append(Path("-"))
|
sources.append(Path("-"))
|
||||||
else:
|
else:
|
||||||
err(f"invalid path: {s}")
|
err(f"invalid path: {s}")
|
||||||
if check and diff:
|
|
||||||
exc = click.ClickException("Options --check and --diff are mutually exclusive")
|
|
||||||
exc.exit_code = 2
|
|
||||||
raise exc
|
|
||||||
|
|
||||||
if check:
|
if check and not diff:
|
||||||
write_back = WriteBack.NO
|
write_back = WriteBack.NO
|
||||||
elif diff:
|
elif diff:
|
||||||
write_back = WriteBack.DIFF
|
write_back = WriteBack.DIFF
|
||||||
@ -200,7 +196,9 @@ def main(
|
|||||||
return
|
return
|
||||||
|
|
||||||
elif len(sources) == 1:
|
elif len(sources) == 1:
|
||||||
return_code = reformat_one(sources[0], line_length, fast, quiet, write_back)
|
return_code = reformat_one(
|
||||||
|
sources[0], line_length, fast, quiet, write_back, check
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
loop = asyncio.get_event_loop()
|
loop = asyncio.get_event_loop()
|
||||||
executor = ProcessPoolExecutor(max_workers=os.cpu_count())
|
executor = ProcessPoolExecutor(max_workers=os.cpu_count())
|
||||||
@ -208,7 +206,7 @@ def main(
|
|||||||
try:
|
try:
|
||||||
return_code = loop.run_until_complete(
|
return_code = loop.run_until_complete(
|
||||||
schedule_formatting(
|
schedule_formatting(
|
||||||
sources, line_length, write_back, fast, quiet, loop, executor
|
sources, line_length, write_back, fast, quiet, loop, executor, check
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
finally:
|
finally:
|
||||||
@ -217,14 +215,19 @@ def main(
|
|||||||
|
|
||||||
|
|
||||||
def reformat_one(
|
def reformat_one(
|
||||||
src: Path, line_length: int, fast: bool, quiet: bool, write_back: WriteBack
|
src: Path,
|
||||||
|
line_length: int,
|
||||||
|
fast: bool,
|
||||||
|
quiet: bool,
|
||||||
|
write_back: WriteBack,
|
||||||
|
check: bool,
|
||||||
) -> int:
|
) -> int:
|
||||||
"""Reformat a single file under `src` without spawning child processes.
|
"""Reformat a single file under `src` without spawning child processes.
|
||||||
|
|
||||||
If `quiet` is True, non-error messages are not output. `line_length`,
|
If `quiet` is True, non-error messages are not output. `line_length`,
|
||||||
`write_back`, and `fast` options are passed to :func:`format_file_in_place`.
|
`write_back`, and `fast` options are passed to :func:`format_file_in_place`.
|
||||||
"""
|
"""
|
||||||
report = Report(check=write_back is WriteBack.NO, quiet=quiet)
|
report = Report(check=check, quiet=quiet)
|
||||||
try:
|
try:
|
||||||
changed = Changed.NO
|
changed = Changed.NO
|
||||||
if not src.is_file() and str(src) == "-":
|
if not src.is_file() and str(src) == "-":
|
||||||
@ -262,6 +265,7 @@ async def schedule_formatting(
|
|||||||
quiet: bool,
|
quiet: bool,
|
||||||
loop: BaseEventLoop,
|
loop: BaseEventLoop,
|
||||||
executor: Executor,
|
executor: Executor,
|
||||||
|
check: bool,
|
||||||
) -> int:
|
) -> int:
|
||||||
"""Run formatting of `sources` in parallel using the provided `executor`.
|
"""Run formatting of `sources` in parallel using the provided `executor`.
|
||||||
|
|
||||||
@ -270,7 +274,7 @@ async def schedule_formatting(
|
|||||||
`line_length`, `write_back`, and `fast` options are passed to
|
`line_length`, `write_back`, and `fast` options are passed to
|
||||||
:func:`format_file_in_place`.
|
:func:`format_file_in_place`.
|
||||||
"""
|
"""
|
||||||
report = Report(check=write_back is WriteBack.NO, quiet=quiet)
|
report = Report(check=check, quiet=quiet)
|
||||||
cache: Cache = {}
|
cache: Cache = {}
|
||||||
if write_back != WriteBack.DIFF:
|
if write_back != WriteBack.DIFF:
|
||||||
cache = read_cache()
|
cache = read_cache()
|
||||||
|
@ -595,6 +595,24 @@ def test_write_cache_write_fail(self) -> None:
|
|||||||
mock.side_effect = OSError
|
mock.side_effect = OSError
|
||||||
black.write_cache({}, [])
|
black.write_cache({}, [])
|
||||||
|
|
||||||
|
def test_check_diff_use_together(self) -> None:
|
||||||
|
with cache_dir():
|
||||||
|
# Files which will be reformatted.
|
||||||
|
src1 = (THIS_DIR / "string_quotes.py").resolve()
|
||||||
|
result = CliRunner().invoke(black.main, [str(src1), "--diff", "--check"])
|
||||||
|
self.assertEqual(result.exit_code, 1)
|
||||||
|
|
||||||
|
# Files which will not be reformatted.
|
||||||
|
src2 = (THIS_DIR / "composition.py").resolve()
|
||||||
|
result = CliRunner().invoke(black.main, [str(src2), "--diff", "--check"])
|
||||||
|
self.assertEqual(result.exit_code, 0)
|
||||||
|
|
||||||
|
# Multi file command.
|
||||||
|
result = CliRunner().invoke(
|
||||||
|
black.main, [str(src1), str(src2), "--diff", "--check"]
|
||||||
|
)
|
||||||
|
self.assertEqual(result.exit_code, 1)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
Loading…
Reference in New Issue
Block a user