Handle .COLOR_DIFF in the same way as .DIFF (#1673)
This commit is contained in:
parent
1790871833
commit
6b5753a417
@ -12,6 +12,8 @@
|
|||||||
|
|
||||||
- fixed a crash when PWD=/ on POSIX (#1631)
|
- fixed a crash when PWD=/ on POSIX (#1631)
|
||||||
|
|
||||||
|
- Prevent coloured diff output being interleaved with multiple files (#1673)
|
||||||
|
|
||||||
### 20.8b1
|
### 20.8b1
|
||||||
|
|
||||||
#### _Packaging_
|
#### _Packaging_
|
||||||
|
@ -661,7 +661,7 @@ def reformat_one(
|
|||||||
changed = Changed.YES
|
changed = Changed.YES
|
||||||
else:
|
else:
|
||||||
cache: Cache = {}
|
cache: Cache = {}
|
||||||
if write_back != WriteBack.DIFF:
|
if write_back not in (WriteBack.DIFF, WriteBack.COLOR_DIFF):
|
||||||
cache = read_cache(mode)
|
cache = read_cache(mode)
|
||||||
res_src = src.resolve()
|
res_src = src.resolve()
|
||||||
if res_src in cache and cache[res_src] == get_cache_info(res_src):
|
if res_src in cache and cache[res_src] == get_cache_info(res_src):
|
||||||
@ -735,7 +735,7 @@ async def schedule_formatting(
|
|||||||
:func:`format_file_in_place`.
|
:func:`format_file_in_place`.
|
||||||
"""
|
"""
|
||||||
cache: Cache = {}
|
cache: Cache = {}
|
||||||
if write_back != WriteBack.DIFF:
|
if write_back not in (WriteBack.DIFF, WriteBack.COLOR_DIFF):
|
||||||
cache = read_cache(mode)
|
cache = read_cache(mode)
|
||||||
sources, cached = filter_cached(cache, sources)
|
sources, cached = filter_cached(cache, sources)
|
||||||
for src in sorted(cached):
|
for src in sorted(cached):
|
||||||
@ -746,7 +746,7 @@ async def schedule_formatting(
|
|||||||
cancelled = []
|
cancelled = []
|
||||||
sources_to_cache = []
|
sources_to_cache = []
|
||||||
lock = None
|
lock = None
|
||||||
if write_back == WriteBack.DIFF:
|
if write_back in (WriteBack.DIFF, WriteBack.COLOR_DIFF):
|
||||||
# For diff output, we need locks to ensure we don't interleave output
|
# For diff output, we need locks to ensure we don't interleave output
|
||||||
# from different processes.
|
# from different processes.
|
||||||
manager = Manager()
|
manager = Manager()
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
import multiprocessing
|
||||||
import asyncio
|
import asyncio
|
||||||
import logging
|
import logging
|
||||||
from concurrent.futures import ThreadPoolExecutor
|
from concurrent.futures import ThreadPoolExecutor
|
||||||
@ -1395,9 +1396,55 @@ def test_no_cache_when_writeback_diff(self) -> None:
|
|||||||
src = (workspace / "test.py").resolve()
|
src = (workspace / "test.py").resolve()
|
||||||
with src.open("w") as fobj:
|
with src.open("w") as fobj:
|
||||||
fobj.write("print('hello')")
|
fobj.write("print('hello')")
|
||||||
self.invokeBlack([str(src), "--diff"])
|
with patch("black.read_cache") as read_cache, patch(
|
||||||
cache_file = black.get_cache_file(mode)
|
"black.write_cache"
|
||||||
self.assertFalse(cache_file.exists())
|
) as write_cache:
|
||||||
|
self.invokeBlack([str(src), "--diff"])
|
||||||
|
cache_file = black.get_cache_file(mode)
|
||||||
|
self.assertFalse(cache_file.exists())
|
||||||
|
write_cache.assert_not_called()
|
||||||
|
read_cache.assert_not_called()
|
||||||
|
|
||||||
|
def test_no_cache_when_writeback_color_diff(self) -> None:
|
||||||
|
mode = DEFAULT_MODE
|
||||||
|
with cache_dir() as workspace:
|
||||||
|
src = (workspace / "test.py").resolve()
|
||||||
|
with src.open("w") as fobj:
|
||||||
|
fobj.write("print('hello')")
|
||||||
|
with patch("black.read_cache") as read_cache, patch(
|
||||||
|
"black.write_cache"
|
||||||
|
) as write_cache:
|
||||||
|
self.invokeBlack([str(src), "--diff", "--color"])
|
||||||
|
cache_file = black.get_cache_file(mode)
|
||||||
|
self.assertFalse(cache_file.exists())
|
||||||
|
write_cache.assert_not_called()
|
||||||
|
read_cache.assert_not_called()
|
||||||
|
|
||||||
|
@event_loop()
|
||||||
|
def test_output_locking_when_writeback_diff(self) -> None:
|
||||||
|
with cache_dir() as workspace:
|
||||||
|
for tag in range(0, 4):
|
||||||
|
src = (workspace / f"test{tag}.py").resolve()
|
||||||
|
with src.open("w") as fobj:
|
||||||
|
fobj.write("print('hello')")
|
||||||
|
with patch("black.Manager", wraps=multiprocessing.Manager) as mgr:
|
||||||
|
self.invokeBlack(["--diff", str(workspace)], exit_code=0)
|
||||||
|
# this isn't quite doing what we want, but if it _isn't_
|
||||||
|
# called then we cannot be using the lock it provides
|
||||||
|
mgr.assert_called()
|
||||||
|
|
||||||
|
@event_loop()
|
||||||
|
def test_output_locking_when_writeback_color_diff(self) -> None:
|
||||||
|
with cache_dir() as workspace:
|
||||||
|
for tag in range(0, 4):
|
||||||
|
src = (workspace / f"test{tag}.py").resolve()
|
||||||
|
with src.open("w") as fobj:
|
||||||
|
fobj.write("print('hello')")
|
||||||
|
with patch("black.Manager", wraps=multiprocessing.Manager) as mgr:
|
||||||
|
self.invokeBlack(["--diff", "--color", str(workspace)], exit_code=0)
|
||||||
|
# this isn't quite doing what we want, but if it _isn't_
|
||||||
|
# called then we cannot be using the lock it provides
|
||||||
|
mgr.assert_called()
|
||||||
|
|
||||||
def test_no_cache_when_stdin(self) -> None:
|
def test_no_cache_when_stdin(self) -> None:
|
||||||
mode = DEFAULT_MODE
|
mode = DEFAULT_MODE
|
||||||
|
Loading…
Reference in New Issue
Block a user