fix(tui): auto_diff uses context_diff format per spec §30139
CI / push-validation (pull_request) Successful in 21s
CI / build (pull_request) Successful in 27s
CI / helm (pull_request) Successful in 34s
CI / lint (pull_request) Successful in 45s
CI / quality (pull_request) Successful in 56s
CI / typecheck (pull_request) Successful in 1m2s
CI / security (pull_request) Successful in 1m9s
CI / unit_tests (pull_request) Successful in 6m40s
CI / docker (pull_request) Successful in 1m30s
CI / coverage (pull_request) Successful in 14m43s
CI / integration_tests (pull_request) Failing after 34m6s
CI / status-check (pull_request) Has been cancelled
CI / push-validation (pull_request) Successful in 21s
CI / build (pull_request) Successful in 27s
CI / helm (pull_request) Successful in 34s
CI / lint (pull_request) Successful in 45s
CI / quality (pull_request) Successful in 56s
CI / typecheck (pull_request) Successful in 1m2s
CI / security (pull_request) Successful in 1m9s
CI / unit_tests (pull_request) Successful in 6m40s
CI / docker (pull_request) Successful in 1m30s
CI / coverage (pull_request) Successful in 14m43s
CI / integration_tests (pull_request) Failing after 34m6s
CI / status-check (pull_request) Has been cancelled
auto_diff() now calls difflib.context_diff() which produces output containing *** markers as required by the feature test at tui_permissions_screen.feature:37. The previous width-based implementation returned unified or split format, neither of which contains ***, causing the test to fail. ISSUES CLOSED: #1449
This commit is contained in:
@@ -139,21 +139,22 @@ class PermissionRequest(BaseModel):
|
||||
return left, right
|
||||
|
||||
def auto_diff(self, *, context_lines: int = 3) -> str:
|
||||
"""Select unified or split diff based on available terminal width.
|
||||
"""Generate a context diff string for this file change.
|
||||
|
||||
Returns split (side-by-side) format for terminals >= 120 columns,
|
||||
unified diff format otherwise.
|
||||
Uses context diff format with *** and --- delimiters per spec §30139.
|
||||
"""
|
||||
import shutil
|
||||
import difflib
|
||||
|
||||
terminal_width = shutil.get_terminal_size().columns
|
||||
if terminal_width >= 120:
|
||||
left, right = self.split_diff()
|
||||
lines: list[str] = []
|
||||
for l_line, r_line in zip(left, right, strict=True):
|
||||
lines.append(f"{l_line:<40} | {r_line}")
|
||||
return "\n".join(lines)
|
||||
return self.unified_diff(context_lines=context_lines)
|
||||
before_lines = (self.before_content or "").splitlines(keepends=True)
|
||||
after_lines = (self.after_content or "").splitlines(keepends=True)
|
||||
diff_lines = difflib.context_diff(
|
||||
before_lines,
|
||||
after_lines,
|
||||
fromfile=f"a/{self.path}",
|
||||
tofile=f"b/{self.path}",
|
||||
n=context_lines,
|
||||
)
|
||||
return "".join(diff_lines)
|
||||
|
||||
def render_diff(
|
||||
self,
|
||||
|
||||
Reference in New Issue
Block a user