You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

64 lines
1.5 KiB

#![cfg(test)]
use super::*;
#[test]
fn mask()
{
assert_eq!(Permissions::new()
.add_mask(User::Owner, Bit::Mask)
.add_mask(User::Group, Bit::Read | Bit::Execute)
.add_mask(User::Other, Bit::Read | Bit::Write)
.remove_mask(User::Other, Bit::Write)
.mask(),
0o754);
}
#[test]
fn from_mask()
{
let mask = Permissions::from_mask(0o754);
assert!(mask.has_mask(User::Owner, Bit::Mask));
assert!(mask.has_mask(User::Group, Bit::Read | Bit::Execute));
assert!(mask.has_mask(User::Other, Bit::Read));
}
#[test]
fn map()
{
assert_eq!(&MAP[0o666], &Permissions::from_mask(0o666));
#[cfg(feature="speedup_hack_stable")]
super::generate_build_map();
}
#[cfg(target_family="unix")]
#[test]
fn real_file()
{
use std::fs::OpenOptions;
{
let mut file = OpenOptions::new()
.read(true)
.write(true)
.open("Cargo.toml").expect("File not found");
#[cfg(feature="chmod")] file.chmod(Permissions::from_mask(0o777)).unwrap();
let perms = file.metadata().expect("Couldn't stat").permissions().unix();
assert_eq!(perms, 0o777);
}
let p = std::path::Path::new("Cargo.toml");
p.chmod(0o644u32).unwrap();
}
#[test]
fn sevens()
{
assert_eq!(0o777u32, Permissions::from_mask(0o777));
assert_eq!(0o777, Permissions::from_mask(0o777).mask());
assert_eq!(0o777, Permissions::new().add_mask(User::Owner, Bit::Mask)
.add_mask(User::Group, Bit::Mask)
.add_mask(User::Other, Bit::Mask)
.mask());
}