#![allow(
clippy::expect_used,
reason = "tests should panic on unexpected values"
)]
use std::sync::OnceLock;
use reqwest::header::HeaderMap;
use reqwest::header::HeaderName;
use reqwest::header::HeaderValue;
use tokio::runtime::Runtime;
pub(crate) fn normalize_line_endings(text: &str) -> String {
let normalized = text.replace("\r\n", "\n");
normalized.trim_end_matches(['\r', '\n']).to_string()
}
pub(crate) fn test_runtime() -> &'static Runtime {
static TEST_RT: OnceLock<Runtime> = OnceLock::new();
TEST_RT.get_or_init(|| tokio::runtime::Runtime::new().expect("test runtime starts"))
}
pub(crate) fn header_map(entries: &[(&str, &str)]) -> HeaderMap {
let mut headers = HeaderMap::new();
for (name, value) in entries {
let name: HeaderName = (*name).parse().expect("test header name is valid");
let value = HeaderValue::from_str(value).expect("test header value is valid");
headers.insert(name, value);
}
headers
}