jesseduffield.lazygit/pkg/integration/tests
Stefan Haller da4dfa17d5 Render the custom-patch secondary pane through the pager, via a real git diff
The secondary pane showed the custom patch with a bespoke in-memory render
(PatchBuilder.RenderAggregatedPatch / FormatView). That had two problems: it
could never be fed to a pager the way the main view's diff is (a stdin pager
might have worked, but an external diff tool like difftastic, which diffs two
files rather than a unified diff, could not), and its hand-rolled hunk/context
handling differed subtly from git's.

Materialize the patch instead as two real file trees under a temp dir — a/ holds
each patched file's "from"-side content, b/ that content with the patch applied —
and render it with `git diff --no-index`, reusing the exact pager wiring the main
view uses (stdin pager, external diff, or git's own colour as the raw fallback).
`--no-index` honors both GIT_PAGER and --ext-diff, so every pager type now renders
the custom patch like any other diff, and git computes the context, fixing the
quirks. Because the secondary is now an async diff task, the post-removal
selection reveal (which rides a task's restore) finally takes effect.

The trees are named a/b so that with --no-prefix the diff shows the real
repo-relative paths; added files are seeded empty in a/ so they pair up and show
their real paths rather than git's directory-comparison "added in b" form. The
patch builder owns the temp dir's lifetime (created on Start, removed on Reset)
and bumps a generation counter on every change, so the trees are rebuilt only
when the patch actually changes — covering the focused-main view and the old
explorer alike, without rebuilding on mere navigation.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-08 12:59:00 +02:00
..
bisect Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
branch Change list section headers to a slightly more elegant design 2026-07-31 08:03:40 +02:00
cherry_pick Change list section headers to a slightly more elegant design 2026-07-31 08:03:40 +02:00
commit Change list section headers to a slightly more elegant design 2026-07-31 08:03:40 +02:00
config Test per-repo side panel config and re-application on repo switch 2026-06-23 14:15:18 +02:00
conflicts Honor the conflict-marker-size gitattribute 2026-08-08 12:43:42 +02:00
custom_commands Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
demo Move the new-worktree keybinding from worktrees to universal 2026-07-03 18:53:05 +02:00
diff Rework the custom pager config (rename to diff renderer) 2026-07-31 08:42:51 +02:00
file Only prompt to continue a rebase/merge if we started it 2026-07-03 18:28:07 +02:00
filter_and_search Change list section headers to a slightly more elegant design 2026-07-31 08:03:40 +02:00
filter_by_author Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
filter_by_path When entering a commit in path filtering mode, select the filtered path 2025-10-09 09:58:15 +02:00
interactive_rebase Cancel commit drags with escape 2026-07-31 08:37:28 +02:00
misc Open the repo when lazygit is started in its .git dir 2026-08-08 11:15:01 +02:00
patch_building Render the custom-patch secondary pane through the pager, via a real git diff 2026-08-08 12:59:00 +02:00
reflog Un-deprecate UserConfig.Git.Log.Order and ShowGraph 2025-07-09 13:15:03 +02:00
remote feat: add fork remote command 2025-11-16 17:26:00 +01:00
shared Add tests demonstrating that we ignore the conflict-marker-size gitattribute 2026-08-08 12:43:42 +02:00
shell_commands Rename "Custom Command" to "Shell Command" 2024-08-17 10:56:03 +02:00
staging Fall back to the raw diff when focusing a main view under an unresolvable pager 2026-08-08 12:59:00 +02:00
stash Fix dropping a range of stashes in filtered mode 2025-08-25 18:41:06 +02:00
status Add backward cycling support for all branches log view 2026-03-08 17:06:17 +01:00
submodule Remember how to get back to a repo we entered a submodule from 2026-08-08 11:15:01 +02:00
sync Change list section headers to a slightly more elegant design 2026-07-31 08:03:40 +02:00
tag Fix deleting a remote tag when a remote branch with the same name exists 2025-11-27 19:52:18 +01:00
ui Keep range drags moving at panel edges 2026-07-31 08:32:43 +02:00
undo Preserve the focused main view's selection across commit rewrites 2026-08-08 12:59:00 +02:00
worktree Tell git where the repo is when it can't find it itself 2026-08-08 11:15:01 +02:00
test_list.go Make the patch-building secondary pane's space remove the right lines, disable its discard 2026-08-08 12:59:00 +02:00
test_list_generator.go Fix typos 2025-01-03 10:50:36 +11:00
tests.go Set working directory in lazygit test command 2024-01-12 19:59:31 +11:00