summaryrefslogtreecommitdiff
path: root/tests/util
diff options
context:
space:
mode:
Diffstat (limited to 'tests/util')
-rw-r--r--tests/util/server/src/pty.rs23
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)
}