[−][src]Struct assert_fs::fixture::NamedTempFile
A potential file in the filesystem that is automatically deleted when it goes out of scope.
The NamedTempFile
type creates a directory on the file system that
is deleted once it goes out of scope. At construction, the
NamedTempFile
creates a new directory with a randomly generated name.
The constructor, [NamedTempFile::new(name)
], creates directories in
the location returned by std::env::temp_dir()
.
After creating a NamedTempFile
, work with the file system by doing
standard std::fs
file system operations on its Path
,
which can be retrieved with NamedTempFile::path()
. Once the NamedTempFile
value is dropped, the parent directory will be deleted, along with the file. It is your
responsibility to ensure that no further file system operations are attempted inside the
temporary directory once it has been deleted.
Resource Leaking
Various platform-specific conditions may cause NamedTempFile
to fail
to delete the underlying directory. It's important to ensure that
handles (like File
and ReadDir
) to the file inside the
directory is dropped before the NamedTempFile
goes out of scope. The
NamedTempFile
destructor will silently ignore any errors in deleting
the directory; to instead handle errors call NamedTempFile::close()
.
Note that if the program exits before the NamedTempFile
destructor is
run, such as via std::process::exit()
, by segfaulting, or by
receiving a signal like SIGINT
, then the temporary directory
will not be deleted.
Examples
Create a temporary file.
use assert_fs::fixture::NamedTempFile; let tmp_file = NamedTempFile::new("foo.rs").unwrap(); // Ensure deletion happens. tmp_file.close().unwrap();
Methods
impl NamedTempFile
[src]
pub fn new<S>(name: S) -> Result<Self, FixtureError> where
S: AsRef<OsStr>,
[src]
S: AsRef<OsStr>,
Attempts to make a temporary file inside of env::temp_dir()
.
The file and parent directory will be automatically deleted once the returned
NamedTempFile
is destroyed.
Errors
If the parent directory can not be created, Err
is returned.
Examples
use assert_fs::fixture::NamedTempFile; let tmp_file = NamedTempFile::new("foo.rs").unwrap(); // Ensure deletion happens. tmp_file.close().unwrap();
pub fn into_persistent_if(self, yes: bool) -> Self
[src]
Conditionally persist the temporary file for debug purposes.
Note: this operation is not reversible, i.e. into_persistent_if(false)
is a no-op.
Examples
use assert_fs::fixture::NamedTempFile; let tmp_file = NamedTempFile::new("foo.rs") .unwrap() .into_persistent_if(std::env::var_os("TEST_PERSIST_FILES").is_some()); // Ensure deletion happens. tmp_file.close().unwrap();
pub fn into_persistent(self) -> Self
[src]
Persist the temporary file for debug purposes.
Note: this operation is not reversible, i.e. into_persistent_if(false)
is a no-op.
Examples
use assert_fs::fixture::NamedTempFile; let tmp_file = NamedTempFile::new("foo.rs") .unwrap() .into_persistent(); // Ensure deletion happens. tmp_file.close().unwrap();
pub fn path(&self) -> &Path
[src]
Accesses the Path
to the temporary file.
Examples
use assert_fs::fixture::NamedTempFile; let tmp_file = NamedTempFile::new("foo.rs").unwrap(); println!("{}", tmp_file.path().display()); // Ensure deletion happens. tmp_file.close().unwrap();
pub fn close(self) -> Result<(), FixtureError>
[src]
Closes and removes the temporary file and parent directory, returing a Result
.
Although NamedTempFile
removes the directory on drop, in the destructor
any errors are ignored. To detect errors cleaning up the temporary
directory, call close
instead.
Errors
This function may return a variety of std::io::Error
s that result from deleting the
temporary file and parent directory, These errors may be platform specific.
Examples
use assert_fs::fixture::NamedTempFile; let tmp_file = NamedTempFile::new("foo.rs").unwrap(); // Ensure deletion happens. tmp_file.close().unwrap();
Trait Implementations
impl PathAssert for NamedTempFile
[src]
impl FileTouch for NamedTempFile
[src]
fn touch(&self) -> Result<(), FixtureError>
[src]
impl FileWriteBin for NamedTempFile
[src]
fn write_binary(&self, data: &[u8]) -> Result<(), FixtureError>
[src]
impl FileWriteStr for NamedTempFile
[src]
impl FileWriteFile for NamedTempFile
[src]
fn write_file(&self, data: &Path) -> Result<(), FixtureError>
[src]
Auto Trait Implementations
impl Send for NamedTempFile
impl Sync for NamedTempFile
impl Unpin for NamedTempFile
impl UnwindSafe for NamedTempFile
impl RefUnwindSafe for NamedTempFile
Blanket Implementations
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> From<T> for T
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = !
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,