use std::path::PathBuf;
pub fn fixture_root() -> Option<PathBuf> {
let manifest = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
let candidate = manifest
.join("..")
.join("..")
.join("tests")
.join("fixtures")
.join("oxi-foundation")
.join("v1");
if candidate.is_dir() {
Some(candidate)
} else {
None
}
}
pub fn profile(name: &str) -> Option<String> {
let root = fixture_root()?;
let path = root.join("profiles").join(format!("{name}.json"));
std::fs::read_to_string(path).ok()
}
pub fn package(name: &str) -> Option<String> {
let root = fixture_root()?;
let path = root.join("packages").join(format!("{name}.json"));
std::fs::read_to_string(path).ok()
}
pub fn foundation() -> Option<String> {
let root = fixture_root()?;
let path = root.join("foundation.json");
std::fs::read_to_string(path).ok()
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn fixture_root_resolves() {
let root = fixture_root();
assert!(root.is_none() || root.unwrap().ends_with("oxi-foundation/v1"));
}
}