Skip to content
Snippets Groups Projects
Commit 1ee45568 authored by Benjamin Peterson's avatar Benjamin Peterson Committed by Chris Lamb
Browse files

Add a --diff-context option to control unified diff context size....

Add a --diff-context option to control unified diff context size. (!88)

Signed-off-by: Chris Lamb's avatarChris Lamb <lamby@debian.org>
parent 622d1cac
No related branches found
No related tags found
No related merge requests found
Pipeline #289962 passed
...@@ -39,6 +39,8 @@ class Config: ...@@ -39,6 +39,8 @@ class Config:
self.reset() self.reset()
def reset(self): def reset(self):
self.diff_context = 7
# GNU diff cannot process arbitrary large files :( # GNU diff cannot process arbitrary large files :(
self.max_diff_input_lines = 2 ** 22 self.max_diff_input_lines = 2 ** 22
self.max_diff_block_lines_saved = float("inf") self.max_diff_block_lines_saved = float("inf")
......
...@@ -172,7 +172,13 @@ class DiffParser: ...@@ -172,7 +172,13 @@ class DiffParser:
@tool_required("diff") @tool_required("diff")
def run_diff(fifo1, fifo2, end_nl_q1, end_nl_q2): def run_diff(fifo1, fifo2, end_nl_q1, end_nl_q2):
cmd = [get_tool_name("diff"), "-aU7", fifo1, fifo2] cmd = [
get_tool_name("diff"),
"-a",
"-U" + str(Config().diff_context),
fifo1,
fifo2,
]
logger.debug("Running %s", " ".join(cmd)) logger.debug("Running %s", " ".join(cmd))
......
...@@ -218,6 +218,14 @@ def create_parser(): ...@@ -218,6 +218,14 @@ def create_parser():
group2 = parser.add_argument_group("output limits") group2 = parser.add_argument_group("output limits")
# everything marked with default=None below is affected by no-default-limits # everything marked with default=None below is affected by no-default-limits
group2.add_argument(
"--diff-context",
metavar="LINES",
type=int,
help="Lines of unified diff context to show. (default: %d)"
% Config().diff_context,
default=Config().diff_context,
)
group2.add_argument( group2.add_argument(
"--max-text-report-size", "--max-text-report-size",
metavar="BYTES", metavar="BYTES",
...@@ -613,6 +621,7 @@ def configure(parsed_args): ...@@ -613,6 +621,7 @@ def configure(parsed_args):
elif parsed_args.no_default_limits: elif parsed_args.no_default_limits:
setattr(Config(), x, float("inf")) setattr(Config(), x, float("inf"))
Config().diff_context = parsed_args.diff_context
Config().max_page_size = parsed_args.max_page_size Config().max_page_size = parsed_args.max_page_size
Config().max_page_diff_block_lines = parsed_args.max_page_diff_block_lines Config().max_page_diff_block_lines = parsed_args.max_page_diff_block_lines
......
...@@ -133,3 +133,13 @@ def test_non_str_arguments_to_source1_source2(): ...@@ -133,3 +133,13 @@ def test_non_str_arguments_to_source1_source2():
with pytest.raises(TypeError): with pytest.raises(TypeError):
Difference.from_text_readers(a, b, *x) Difference.from_text_readers(a, b, *x)
def test_adjust_diff_context(monkeypatch):
monkeypatch.setattr(Config(), "diff_context", 2)
a = io.StringIO("".join(str(i) + "\n" for i in range(20)))
b = io.StringIO(
"".join(str(i if i != 10 else "x") + "\n" for i in range(20))
)
difference = Difference.from_text_readers(a, b, "a", "b")
assert difference.unified_diff.count("\n") == 7
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment