use crate::{implementation, private, Asserter};
use std::{borrow::Borrow, fs::File};
pub trait FileAssertion<FileLike>: private::Sealed
where
FileLike: Borrow<File>,
{
#[track_caller]
#[allow(clippy::wrong_self_convention)]
fn is_file(self) -> Asserter<FileLike>;
#[track_caller]
#[allow(clippy::wrong_self_convention)]
fn is_directory(self) -> Asserter<FileLike>;
}
impl<FileLike> FileAssertion<FileLike> for Asserter<FileLike>
where
FileLike: Borrow<File>,
{
#[allow(clippy::expect_used)]
fn is_file(self) -> Self {
let file: &File = self.value.borrow();
let metadata = file.metadata().expect("Failed to read file metadata");
implementation::assert_no_expected(metadata.is_file(), file, "to be a regular file");
self
}
#[allow(clippy::expect_used)]
fn is_directory(self) -> Self {
let file: &File = self.value.borrow();
let metadata = file.metadata().expect("Failed to read file metadata");
implementation::assert_no_expected(metadata.is_dir(), file, "to be a directory");
self
}
}