Skip to content

Commit 3b5dd17

Browse files
authored
Merge pull request #56 from epage/persist
fix(persist): Clarify API behavior
2 parents 4186172 + 5411d07 commit 3b5dd17

File tree

3 files changed

+53
-5
lines changed

3 files changed

+53
-5
lines changed

Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "assert_fs"
3-
version = "0.11.3"
3+
version = "0.12.0"
44
authors = ["Ed Page <[email protected]>"]
55
description = "Filesystem fixtures and assertions for testing."
66
license = "MIT OR Apache-2.0"

src/fixture/dir.rs

+26-2
Original file line numberDiff line numberDiff line change
@@ -96,21 +96,45 @@ impl TempDir {
9696

9797
/// Conditionally persist the temporary directory for debug purposes.
9898
///
99+
/// Note: this operation is not reversible, i.e. `into_persist_if(false)` is a no-op.
100+
///
99101
/// # Examples
100102
///
101103
/// ```no_run
102104
/// use assert_fs::fixture::TempDir;
103105
///
104-
/// let tmp_dir = TempDir::new().unwrap().persist_if(true);
106+
/// let tmp_dir = TempDir::new()
107+
/// .unwrap()
108+
/// .into_persist_if(std::env::var_os("TEST_PERSIST_FILES").is_some());
105109
///
106110
/// // Ensure deletion happens.
107111
/// tmp_dir.close().unwrap();
108112
/// ```
109-
pub fn persist_if(self, yes: bool) -> Self {
113+
pub fn into_persist_if(self, yes: bool) -> Self {
110114
if !yes {
111115
return self;
112116
}
113117

118+
self.into_persist()
119+
}
120+
121+
/// Persist the temporary directory for debug purposes.
122+
///
123+
/// Note: this operation is not reversible, i.e. `into_persist_if(false)` is a no-op.
124+
///
125+
/// # Examples
126+
///
127+
/// ```no_run
128+
/// use assert_fs::fixture::TempDir;
129+
///
130+
/// let tmp_dir = TempDir::new()
131+
/// .unwrap()
132+
/// .into_persist();
133+
///
134+
/// // Ensure deletion happens.
135+
/// tmp_dir.close().unwrap();
136+
/// ```
137+
pub fn into_persist(self) -> Self {
114138
let path = match self.temp {
115139
Inner::Temp(temp) => temp.into_path(),
116140
Inner::Persisted(path) => path,

src/fixture/file.rs

+26-2
Original file line numberDiff line numberDiff line change
@@ -101,21 +101,45 @@ impl NamedTempFile {
101101

102102
/// Conditionally persist the temporary file for debug purposes.
103103
///
104+
/// Note: this operation is not reversible, i.e. `into_persist_if(false)` is a no-op.
105+
///
104106
/// # Examples
105107
///
106108
/// ```no_run
107109
/// use assert_fs::fixture::NamedTempFile;
108110
///
109-
/// let tmp_file = NamedTempFile::new("foo.rs").unwrap().persist_if(true);
111+
/// let tmp_file = NamedTempFile::new("foo.rs")
112+
/// .unwrap()
113+
/// .into_persist_if(std::env::var_os("TEST_PERSIST_FILES").is_some());
110114
///
111115
/// // Ensure deletion happens.
112116
/// tmp_file.close().unwrap();
113117
/// ```
114-
pub fn persist_if(mut self, yes: bool) -> Self {
118+
pub fn into_persist_if(self, yes: bool) -> Self {
115119
if !yes {
116120
return self;
117121
}
118122

123+
self.into_persist()
124+
}
125+
126+
/// Persist the temporary file for debug purposes.
127+
///
128+
/// Note: this operation is not reversible, i.e. `into_persist_if(false)` is a no-op.
129+
///
130+
/// # Examples
131+
///
132+
/// ```no_run
133+
/// use assert_fs::fixture::NamedTempFile;
134+
///
135+
/// let tmp_file = NamedTempFile::new("foo.rs")
136+
/// .unwrap()
137+
/// .into_persist();
138+
///
139+
/// // Ensure deletion happens.
140+
/// tmp_file.close().unwrap();
141+
/// ```
142+
pub fn into_persist(mut self) -> Self {
119143
let mut temp = Inner::Persisted;
120144
::std::mem::swap(&mut self.temp, &mut temp);
121145
if let Inner::Temp(temp) = temp {

0 commit comments

Comments
 (0)