rpki/tests/test_fetch_rsync_system.rs
2026-02-09 19:35:54 +08:00

39 lines
1.1 KiB
Rust

use std::fs;
use rpki::fetch::rsync::RsyncFetcher;
use rpki::fetch::rsync_system::{SystemRsyncConfig, SystemRsyncFetcher};
#[test]
fn system_rsync_fetcher_can_sync_from_local_directory_for_tests() {
let tmp = tempfile::tempdir().expect("tempdir");
let src = tmp.path().join("src");
let nested = src.join("sub");
fs::create_dir_all(&nested).expect("mkdir");
fs::write(src.join("a.txt"), b"aaa").expect("write a");
fs::write(nested.join("b.txt"), b"bbb").expect("write b");
let config = SystemRsyncConfig {
rsync_bin: "rsync".into(),
..Default::default()
};
let fetcher = SystemRsyncFetcher::new(config);
let base = src.to_string_lossy().to_string();
let out = fetcher.fetch_objects(&base).expect("fetch objects");
let mut saw_a = false;
let mut saw_b = false;
for (uri, bytes) in out {
if uri.ends_with("a.txt") {
assert_eq!(bytes, b"aaa");
saw_a = true;
}
if uri.ends_with("sub/b.txt") {
assert_eq!(bytes, b"bbb");
saw_b = true;
}
}
assert!(saw_a, "expected a.txt");
assert!(saw_b, "expected sub/b.txt");
}