diff options
Diffstat (limited to 'src/tests/e2e/remote_runner.rs')
-rw-r--r-- | src/tests/e2e/remote_runner.rs | 59 |
1 files changed, 54 insertions, 5 deletions
diff --git a/src/tests/e2e/remote_runner.rs b/src/tests/e2e/remote_runner.rs index 205710f1d..feaeecdac 100644 --- a/src/tests/e2e/remote_runner.rs +++ b/src/tests/e2e/remote_runner.rs @@ -67,13 +67,27 @@ fn start_zellij(channel: &mut ssh2::Channel) { channel.flush().unwrap(); } -fn start_zellij_in_session(channel: &mut ssh2::Channel, session_name: &str) { +fn start_zellij_mirrored_session(channel: &mut ssh2::Channel) { stop_zellij(channel); channel .write_all( format!( - "{} --session {}\n", - ZELLIJ_EXECUTABLE_LOCATION, session_name + "{} --session {} options --mirror-session true\n", + ZELLIJ_EXECUTABLE_LOCATION, SESSION_NAME + ) + .as_bytes(), + ) + .unwrap(); + channel.flush().unwrap(); +} + +fn start_zellij_in_session(channel: &mut ssh2::Channel, session_name: &str, mirrored: bool) { + stop_zellij(channel); + channel + .write_all( + format!( + "{} --session {} options --mirror-session {}\n", + ZELLIJ_EXECUTABLE_LOCATION, session_name, mirrored ) .as_bytes(), ) @@ -333,13 +347,48 @@ impl RemoteRunner { reader_thread, } } + pub fn new_mirrored_session(win_size: Size) -> Self { + let sess = ssh_connect(); + let mut channel = sess.channel_session().unwrap(); + let mut rows = Dimension::fixed(win_size.rows); + let mut cols = Dimension::fixed(win_size.cols); + rows.set_inner(win_size.rows); + cols.set_inner(win_size.cols); + let pane_geom = PaneGeom { + x: 0, + y: 0, + rows, + cols, + }; + setup_remote_environment(&mut channel, win_size); + start_zellij_mirrored_session(&mut channel); + let channel = Arc::new(Mutex::new(channel)); + let last_snapshot = Arc::new(Mutex::new(String::new())); + let cursor_coordinates = Arc::new(Mutex::new((0, 0))); + sess.set_blocking(false); + let reader_thread = + read_from_channel(&channel, &last_snapshot, &cursor_coordinates, &pane_geom); + RemoteRunner { + steps: vec![], + channel, + currently_running_step: None, + current_step_index: 0, + retries_left: RETRIES, + retry_pause_ms: 100, + test_timed_out: false, + panic_on_no_retries_left: true, + last_snapshot, + cursor_coordinates, + reader_thread, + } + } pub fn kill_running_sessions(win_size: Size) { let sess = ssh_connect(); let mut channel = sess.channel_session().unwrap(); setup_remote_environment(&mut channel, win_size); start_zellij(&mut channel); } - pub fn new_with_session_name(win_size: Size, session_name: &str) -> Self { + pub fn new_with_session_name(win_size: Size, session_name: &str, mirrored: bool) -> Self { // notice that this method does not have a timeout, so use with caution! let sess = ssh_connect_without_timeout(); let mut channel = sess.channel_session().unwrap(); @@ -354,7 +403,7 @@ impl RemoteRunner { cols, }; setup_remote_environment(&mut channel, win_size); - start_zellij_in_session(&mut channel, session_name); + start_zellij_in_session(&mut channel, session_name, mirrored); let channel = Arc::new(Mutex::new(channel)); let last_snapshot = Arc::new(Mutex::new(String::new())); let cursor_coordinates = Arc::new(Mutex::new((0, 0))); |