diff options
author | Aram Drevekenin <aram@poor.dev> | 2021-10-27 19:20:43 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-27 19:20:43 +0200 |
commit | 21e5ffdfd8dce7b2cd1a2a74e948e8e071d22161 (patch) | |
tree | 7f3da35f3f3960edd90ee880c618b1770d233f12 /src/tests/e2e/cases.rs | |
parent | 3b1dd1253a9aa118aa6f9915aa63f2129c5d2499 (diff) |
fix(input): properly handle bracketed paste (#810)
* fix(input): properly handle bracketed paste
* style(fmt): make rustfmt happy
Diffstat (limited to 'src/tests/e2e/cases.rs')
-rw-r--r-- | src/tests/e2e/cases.rs | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/tests/e2e/cases.rs b/src/tests/e2e/cases.rs index cdabef81f..aa8ad34b8 100644 --- a/src/tests/e2e/cases.rs +++ b/src/tests/e2e/cases.rs @@ -993,3 +993,46 @@ pub fn mirrored_sessions() { } } } + +#[test] +#[ignore] +pub fn bracketed_paste() { + let fake_win_size = Size { + cols: 120, + rows: 24, + }; + // here we enter some text, before which we invoke "bracketed paste mode" + // we make sure the text in bracketed paste mode is sent directly to the terminal and not + // interpreted by us (in this case it will send ^T to the terminal), then we exit bracketed + // paste, send some more text and make sure it's also sent to the terminal + let last_snapshot = RemoteRunner::new("bracketed_paste", fake_win_size) + .add_step(Step { + name: "Send pasted text followed by normal text", + instruction: |mut remote_terminal: RemoteTerminal| -> bool { + let mut step_is_complete = false; + if remote_terminal.status_bar_appears() && remote_terminal.cursor_position_is(3, 2) + { + remote_terminal.send_key(&BRACKETED_PASTE_START); + remote_terminal.send_key(&TAB_MODE); + remote_terminal.send_key(&NEW_TAB_IN_TAB_MODE); + remote_terminal.send_key(&BRACKETED_PASTE_END); + remote_terminal.send_key("abc".as_bytes()); + step_is_complete = true; + } + step_is_complete + }, + }) + .add_step(Step { + name: "Wait for terminal to render sent keys", + instruction: |remote_terminal: RemoteTerminal| -> bool { + let mut step_is_complete = false; + if remote_terminal.cursor_position_is(9, 2) { + // text has been entered into the only terminal pane + step_is_complete = true; + } + step_is_complete + }, + }) + .run_all_steps(); + assert_snapshot!(last_snapshot); +} |