jesseduffield.lazygit/pkg/integration/tests/interactive_rebase
Stefan Haller 200042a57c Add test showing that rapidly moving a rebase todo twice moves the wrong todo
Moving a todo up or down rewrites the todo file and advances the
selection synchronously, but the commits model is only rebuilt by the
refresh, which finishes in the background. A second keypress arriving
before that reads the pre-move model at the advanced selection index —
that's the todo the first move swapped with, so the second press moves
that one back instead of moving the selected todo further. Two rapid
presses (e.g. from holding the key down) thus amount to a net no-op.

The two presses also spawn two racing refreshes whose model updates can
land in either order, so the todo list can even end up disagreeing with
the todo file. That's why the test continues the rebase and asserts the
resulting commit order instead of the displayed list: the rebase replays
the file, which is deterministic.

The test documents this currently broken behavior; the fix comes next.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 08:31:11 +02:00
..
advanced_interactive_rebase.go Remove the "YOU ARE HERE" marker 2025-04-20 16:06:15 +02:00
amend_commit_with_conflict.go Add section headers for rebase todos, cherry-picks, reverts, and actual commits 2025-04-20 16:06:15 +02:00
amend_first_commit.go Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
amend_fixup_commit.go Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
amend_head_commit_during_rebase.go Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
amend_merge.go Improve prompts when amending commits 2023-09-01 18:55:16 +02:00
amend_non_head_commit_during_rebase.go Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
delete_update_ref_todo.go Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
dont_show_branch_heads_for_todo_items.go Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
drop_commit_in_copied_branch_with_update_ref.go Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
drop_merge_commit.go Use more widely-supported Unicode symbols for the commit graph 2026-05-04 13:06:29 +02:00
drop_todo_commit_with_update_ref.go Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
drop_with_custom_comment_char.go Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
edit_and_auto_amend.go Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
edit_first_commit.go Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
edit_last_commit_of_stacked_branch.go Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
edit_non_todo_commit_during_rebase.go Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
edit_range_select_down_to_merge_outside_rebase.go Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
edit_range_select_outside_rebase.go Use more widely-supported Unicode symbols for the commit graph 2026-05-04 13:06:29 +02:00
edit_the_confl_commit.go Add section headers for rebase todos, cherry-picks, reverts, and actual commits 2025-04-20 16:06:15 +02:00
fixup_first_commit.go Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
fixup_keep_message.go Support using the selected commit's message in a fixup 2026-01-28 10:28:52 +01:00
fixup_keep_message_rebase.go Support using the selected commit's message in a fixup 2026-01-28 10:28:52 +01:00
fixup_second_commit.go Support using the selected commit's message in a fixup 2026-01-28 10:28:52 +01:00
interactive_rebase_of_copied_branch.go Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
interactive_rebase_with_conflict_for_edit_command.go Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
mid_rebase_range_select.go Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
move.go Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
move_across_branch_boundary_outside_rebase.go Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
move_in_rebase.go Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
move_todo_down_with_rapid_keypresses.go Add test showing that rapidly moving a rebase todo twice moves the wrong todo 2026-07-22 08:31:11 +02:00
move_update_ref_todo.go Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
move_with_custom_comment_char.go Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
outside_rebase_range_select.go Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
pick_rescheduled.go Remove the "YOU ARE HERE" marker 2025-04-20 16:06:15 +02:00
quick_start.go Remove the "YOU ARE HERE" marker 2025-04-20 16:06:15 +02:00
quick_start_keep_selection.go Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
quick_start_keep_selection_range.go Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
rebase.go Remove the "YOU ARE HERE" marker 2025-04-20 16:06:15 +02:00
rebase_with_commit_that_becomes_empty.go Add test for a special situation in rebases involving empty commits 2025-04-20 15:53:17 +02:00
revert_during_rebase_when_stopped_on_edit.go Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
revert_multiple_commits_in_interactive_rebase.go Use more widely-supported Unicode symbols for the commit graph 2026-05-04 13:06:29 +02:00
revert_single_commit_in_interactive_rebase.go Use more widely-supported Unicode symbols for the commit graph 2026-05-04 13:06:29 +02:00
reword_commit_with_editor_and_fail.go Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
reword_first_commit.go Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
reword_last_commit.go Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
reword_last_commit_of_stacked_branch.go Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
reword_merge_commit.go Use more widely-supported Unicode symbols for the commit graph 2026-05-04 13:06:29 +02:00
reword_you_are_here_commit.go Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
reword_you_are_here_commit_with_editor.go Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
shared.go Add section headers for rebase todos, cherry-picks, reverts, and actual commits 2025-04-20 16:06:15 +02:00
show_exec_todos.go Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
squash_down_first_commit.go Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
squash_down_second_commit.go Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
squash_fixups_above.go Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
squash_fixups_above_first_commit.go Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
squash_fixups_in_current_branch.go Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
swap_in_rebase_with_conflict.go Remove the "YOU ARE HERE" marker 2025-04-20 16:06:15 +02:00
swap_in_rebase_with_conflict_and_edit.go Remove the "YOU ARE HERE" marker 2025-04-20 16:06:15 +02:00
swap_with_conflict.go Show original todo action instead of "conflict", and show <-- CONFLICT instead 2025-04-20 15:55:44 +02:00
view_files_of_todo_entries.go Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00