diff options
Diffstat (limited to 'tests/util/server/src/pty.rs')
-rw-r--r-- | tests/util/server/src/pty.rs | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/util/server/src/pty.rs b/tests/util/server/src/pty.rs index 3e3331b84..9b2a5eb5d 100644 --- a/tests/util/server/src/pty.rs +++ b/tests/util/server/src/pty.rs @@ -77,6 +77,12 @@ impl Pty { self.pty.flush().unwrap(); } + /// Pause for a human-like delay to read or react to something (human responses are ~100ms). + #[track_caller] + pub fn human_delay(&mut self) { + std::thread::sleep(Duration::from_millis(250)); + } + #[track_caller] pub fn write_line(&mut self, line: impl AsRef<str>) { self.write_line_raw(&line); @@ -161,6 +167,23 @@ impl Pty { }); } + /// Expects the raw text to be found next. + #[track_caller] + pub fn expect_raw_next(&mut self, text: impl AsRef<str>) { + let expected = text.as_ref(); + let last_index = self.read_bytes.len(); + self.read_until_condition(|pty| { + if pty.read_bytes.len() >= last_index + expected.len() { + let data = String::from_utf8_lossy( + &pty.read_bytes[last_index..last_index + expected.len()], + ); + data == expected + } else { + false + } + }); + } + pub fn all_output(&self) -> Cow<str> { String::from_utf8_lossy(&self.read_bytes) } |