summaryrefslogtreecommitdiffstats
path: root/src/tests/e2e/cases.rs
diff options
context:
space:
mode:
authorAram Drevekenin <aram@poor.dev>2021-10-27 19:20:43 +0200
committerGitHub <noreply@github.com>2021-10-27 19:20:43 +0200
commit21e5ffdfd8dce7b2cd1a2a74e948e8e071d22161 (patch)
tree7f3da35f3f3960edd90ee880c618b1770d233f12 /src/tests/e2e/cases.rs
parent3b1dd1253a9aa118aa6f9915aa63f2129c5d2499 (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.rs43
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);
+}