feat: more unit tests!
This commit is contained in:
parent
082d666fe0
commit
28550c78d9
3 changed files with 49 additions and 15 deletions
|
@ -1,5 +1,5 @@
|
||||||
use char_enum::{char_enum_derive::FromChar, FromChar, FromStrError, ToChar};
|
use char_enum::{char_enum_derive::FromChar, FromChar, FromStrError, ToChar};
|
||||||
use std::{error::Error, fmt::Display, num::ParseIntError, ops::ControlFlow, str::FromStr};
|
use std::{error::Error, fmt::Display, num::ParseIntError, str::FromStr};
|
||||||
|
|
||||||
use itertools::{peek_nth, Itertools};
|
use itertools::{peek_nth, Itertools};
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
use char_enum::FromStrError;
|
|
||||||
use itertools::Itertools;
|
use itertools::Itertools;
|
||||||
use std::{
|
use std::{
|
||||||
convert::Infallible,
|
convert::Infallible,
|
||||||
|
@ -100,7 +99,7 @@ impl FromStr for MountOptions {
|
||||||
|
|
||||||
impl Display for MountOptions {
|
impl Display for MountOptions {
|
||||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||||
let options = self.0.iter().map(|x| x.to_string()).join(",");
|
let options = self.0.iter().map(|x| x.to_string()).join(" ");
|
||||||
write!(f, "{options}")
|
write!(f, "{options}")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -902,7 +901,7 @@ mod tests {
|
||||||
use crate::fs::{
|
use crate::fs::{
|
||||||
id_mapping::UntypedIdRange,
|
id_mapping::UntypedIdRange,
|
||||||
mount::{ParseDeviceIdTypeError, ParseOptionsSourceError},
|
mount::{ParseDeviceIdTypeError, ParseOptionsSourceError},
|
||||||
permission::Permissions,
|
permission::{OctalPermissions, Permissions},
|
||||||
};
|
};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
|
@ -1252,7 +1251,14 @@ mod tests {
|
||||||
fn it_works() {
|
fn it_works() {
|
||||||
let mut options = MountOptions::default();
|
let mut options = MountOptions::default();
|
||||||
options.push(MountOption::FsType(vec!["overlay"].into()));
|
options.push(MountOption::FsType(vec!["overlay"].into()));
|
||||||
|
options.push(MountOption::MakeDir(Some(Permissions::Octal(
|
||||||
|
BitFlags::from_bits(0x7777).unwrap().into(),
|
||||||
|
))));
|
||||||
|
|
||||||
let mount = Mount::new("/test", "/target", options);
|
let mount = Mount::new("/test", "/target", options);
|
||||||
println!("{mount}");
|
assert_eq!(
|
||||||
|
mount.to_string(),
|
||||||
|
"mount --types overlay --mkdir 7777 /test /target"
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +1,10 @@
|
||||||
use char_enum::{char_enum_derive::FromChar, AsIter, FromChar, FromStrError, ToChar};
|
use char_enum::{char_enum_derive::FromChar, AsIter, FromChar, FromStrError, ToChar};
|
||||||
use enumflags2::{bitflags, BitFlag, FromBitsError};
|
use enumflags2::{bitflags, BitFlag, BitFlags, FromBitsError};
|
||||||
use std::{error::Error, fmt::Display, num::ParseIntError, ops::BitOr, str::FromStr};
|
use std::{error::Error, fmt::Display, num::ParseIntError, ops::BitOr, str::FromStr};
|
||||||
|
|
||||||
use enumflags2::BitFlags;
|
|
||||||
|
|
||||||
use crate::utils::MapWhileRefExt;
|
use crate::utils::MapWhileRefExt;
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Clone, Debug, PartialEq, Eq)]
|
||||||
pub struct ParseModeError(String);
|
pub struct ParseModeError(String);
|
||||||
|
|
||||||
impl ParseModeError {
|
impl ParseModeError {
|
||||||
|
@ -55,7 +53,7 @@ pub enum Mode {
|
||||||
|
|
||||||
impl Display for Mode {
|
impl Display for Mode {
|
||||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||||
write!(f, "{}", self.to_string())
|
write!(f, "{}", self)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -74,7 +72,7 @@ impl FromStr for ModeFlags {
|
||||||
|
|
||||||
impl Display for ModeFlags {
|
impl Display for ModeFlags {
|
||||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||||
write!(f, "{}", self.0)
|
write!(f, "{:X}", self.0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -417,11 +415,41 @@ impl Display for Permissions {
|
||||||
mod tests {
|
mod tests {
|
||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
|
|
||||||
use super::Permissions;
|
use enumflags2::BitFlags;
|
||||||
|
|
||||||
|
use crate::fs::permission::{
|
||||||
|
GroupId, Modes, Operator, SymbolicArgs, SymbolicMode, SymbolicPermissions,
|
||||||
|
};
|
||||||
|
|
||||||
|
use super::{ModeFlags, Permissions};
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn it_works() {
|
fn mode_flags() {
|
||||||
let a = Permissions::from_str("ug+w");
|
let flags = ModeFlags(BitFlags::all());
|
||||||
println!("{}", a.unwrap());
|
assert_eq!(flags.to_string(), "7777");
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn symbolic_permissions() {
|
||||||
|
let sym = Permissions::from_str("ug+w").unwrap();
|
||||||
|
let group_sym = Permissions::from_str("g=u").unwrap();
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
sym,
|
||||||
|
Permissions::Symbolic(SymbolicPermissions::new(
|
||||||
|
Modes(GroupId::User | GroupId::Group),
|
||||||
|
Operator::Add,
|
||||||
|
SymbolicArgs::Mode(Modes(BitFlags::from(SymbolicMode::Write)))
|
||||||
|
))
|
||||||
|
);
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
group_sym,
|
||||||
|
Permissions::Symbolic(SymbolicPermissions::new(
|
||||||
|
Modes(GroupId::Group.into()),
|
||||||
|
Operator::Eq,
|
||||||
|
SymbolicArgs::Group(Modes(BitFlags::from(GroupId::User)))
|
||||||
|
))
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue