use std::{fs::create_dir_all, path::Path};
#[derive(Debug)]
pub struct MkdirPFailure;
pub fn mkdir_p(path: &Path) -> Result<(), MkdirPFailure> {
create_dir_all(path).map_err(|_e| MkdirPFailure)
}
#[cfg(test)]
mod tests {
use tempfile::TempDir;
use super::*;
#[test]
fn mkdir_p_works() {
let tmp_root = TempDir::new().unwrap();
let path = tmp_root.path().join("something");
assert!(!path.is_dir());
mkdir_p(&path).unwrap();
assert!(path.is_dir());
let path = tmp_root.path().join("something else");
assert!(!path.is_dir());
mkdir_p(&path).unwrap();
assert!(path.is_dir());
mkdir_p(&path).unwrap(); assert!(path.is_dir());
let path = tmp_root.path().join("something\0with NULL");
mkdir_p(&path).unwrap_err();
}
}