rpki/tests/test_fetch_rsync_localdir.rs
2026-02-10 12:09:59 +08:00

25 lines
872 B
Rust

use std::os::unix::net::UnixListener;
use rpki::fetch::rsync::{LocalDirRsyncFetcher, RsyncFetcher};
#[test]
fn local_dir_rsync_fetcher_normalizes_base_and_skips_non_files() {
let td = tempfile::tempdir().expect("tempdir");
let dir = td.path();
std::fs::write(dir.join("a.txt"), b"a").expect("write file");
// Create a Unix domain socket entry; metadata().is_file() should be false.
let _sock = UnixListener::bind(dir.join("sock")).expect("bind unix socket");
let fetcher = LocalDirRsyncFetcher::new(dir);
let out = fetcher
.fetch_objects("rsync://example.test/repo") // intentionally no trailing slash
.expect("fetch objects");
let uris: Vec<_> = out.iter().map(|(u, _)| u.as_str()).collect();
assert!(uris.contains(&"rsync://example.test/repo/a.txt"));
assert!(!uris.iter().any(|u| u.ends_with("/sock")));
}