aboutsummaryrefslogtreecommitdiff
path: root/tests/common/mod.rs
diff options
context:
space:
mode:
authorQuentin Dufour <quentin@deuxfleurs.fr>2024-03-08 10:20:45 +0100
committerQuentin Dufour <quentin@deuxfleurs.fr>2024-03-08 10:20:45 +0100
commitb9f32d720ae5ec60cadeb492af781ade48cd6cbf (patch)
tree5b4d01700bddc66c77809ef2cc3183f88ccaf229 /tests/common/mod.rs
parent11462f80c4ae25696c7436ed7aacb92074d7e911 (diff)
downloadaerogramme-b9f32d720ae5ec60cadeb492af781ade48cd6cbf.tar.gz
aerogramme-b9f32d720ae5ec60cadeb492af781ade48cd6cbf.zip
Finalize Aerogramme's refactor
Diffstat (limited to 'tests/common/mod.rs')
-rw-r--r--tests/common/mod.rs99
1 files changed, 0 insertions, 99 deletions
diff --git a/tests/common/mod.rs b/tests/common/mod.rs
deleted file mode 100644
index cbe0271..0000000
--- a/tests/common/mod.rs
+++ /dev/null
@@ -1,99 +0,0 @@
-#![allow(dead_code)]
-pub mod constants;
-pub mod fragments;
-
-use anyhow::{bail, Context, Result};
-use std::io::Read;
-use std::net::{Shutdown, TcpStream};
-use std::process::Command;
-use std::thread;
-
-use constants::SMALL_DELAY;
-
-pub fn aerogramme_provider_daemon_dev(
- mut fx: impl FnMut(&mut TcpStream, &mut TcpStream) -> Result<()>,
-) -> Result<()> {
- // Check port is not used (= free) before starting the test
- let mut max_retry = 20;
- loop {
- max_retry -= 1;
- match (TcpStream::connect("[::1]:1143"), max_retry) {
- (Ok(_), 0) => bail!("something is listening on [::1]:1143 and prevent the test from starting"),
- (Ok(_), _) => println!("something is listening on [::1]:1143, maybe a previous daemon quitting, retrying soon..."),
- (Err(_), _) => {
- println!("test ready to start, [::1]:1143 is free!");
- break
- }
- }
- thread::sleep(SMALL_DELAY);
- }
-
- // Start daemon
- let mut daemon = Command::new(env!("CARGO_BIN_EXE_aerogramme"))
- .arg("--dev")
- .arg("provider")
- .arg("daemon")
- .spawn()?;
-
- // Check that our daemon is correctly listening on the free port
- let mut max_retry = 20;
- let mut imap_socket = loop {
- max_retry -= 1;
- match (TcpStream::connect("[::1]:1143"), max_retry) {
- (Err(e), 0) => bail!("no more retry, last error is: {}", e),
- (Err(e), _) => {
- println!("unable to connect: {} ; will retry soon...", e);
- }
- (Ok(v), _) => break v,
- }
- thread::sleep(SMALL_DELAY);
- };
-
- // Assuming now it's safe to open a LMTP socket
- let mut lmtp_socket =
- TcpStream::connect("[::1]:1025").context("lmtp socket must be connected")?;
-
- println!("-- ready to test imap features --");
- let result = fx(&mut imap_socket, &mut lmtp_socket);
- println!("-- test teardown --");
-
- imap_socket
- .shutdown(Shutdown::Both)
- .context("closing imap socket at the end of the test")?;
- lmtp_socket
- .shutdown(Shutdown::Both)
- .context("closing lmtp socket at the end of the test")?;
- daemon.kill().context("daemon should be killed")?;
-
- result.context("all tests passed")
-}
-
-pub fn read_lines<'a, F: Read>(
- reader: &mut F,
- buffer: &'a mut [u8],
- stop_marker: Option<&[u8]>,
-) -> Result<&'a [u8]> {
- let mut nbytes = 0;
- loop {
- nbytes += reader.read(&mut buffer[nbytes..])?;
- //println!("partial read: {}", std::str::from_utf8(&buffer[..nbytes])?);
- let pre_condition = match stop_marker {
- None => true,
- Some(mark) => buffer[..nbytes].windows(mark.len()).any(|w| w == mark),
- };
- if pre_condition && nbytes >= 2 && &buffer[nbytes - 2..nbytes] == &b"\r\n"[..] {
- break;
- }
- }
- println!("read: {}", std::str::from_utf8(&buffer[..nbytes])?);
- Ok(&buffer[..nbytes])
-}
-
-pub fn read_first_u32(inp: &str) -> Result<u32> {
- Ok(inp
- .chars()
- .skip_while(|c| !c.is_digit(10))
- .take_while(|c| c.is_digit(10))
- .collect::<String>()
- .parse::<u32>()?)
-}