Skip to content

Commit

Permalink
Add test case that panics on undo
Browse files Browse the repository at this point in the history
This case panics since undo/redo call View::apply and here, the edit
that moves the jumplist selection out-of-bounds is not yet applied when
View::apply is called in undo/redo. View::apply should only be called
by the EditorView now.
  • Loading branch information
the-mikedavis authored and archseer committed Nov 24, 2022
1 parent 590a628 commit 94eb3de
Showing 1 changed file with 16 additions and 0 deletions.
16 changes: 16 additions & 0 deletions helix-term/tests/test/commands.rs
Original file line number Diff line number Diff line change
Expand Up @@ -283,3 +283,19 @@ async fn test_multi_selection_shell_commands() -> anyhow::Result<()> {

Ok(())
}

#[tokio::test(flavor = "multi_thread")]
async fn test_undo_redo() -> anyhow::Result<()> {
// A jumplist selection is passed through an edit and then an undo and then a redo.
//
// * [<space> Add a newline at line start. We're now on line 2.
// * <C-s> Save the selection on line 2 in the jumplist.
// * kd Delete line 1. The jumplist selection should be adjusted to the new line 1.
// * uU Undo and redo the `kd` edit.
// * <C-o> Jump back in the jumplist. This would panic if the jumplist were not being
// updated correctly.
// * <C-i> Jump forward to line 1.
test(("#[|]#", "[<space><C-s>kduU<C-o><C-i>", "#[|]#")).await?;

Ok(())
}

0 comments on commit 94eb3de

Please sign in to comment.