pub struct Settings { /* private fields */ }
Expand description
Configures how insta operates at test time.
Settings are always bound to a thread and some default settings are always available. These settings can be changed and influence how insta behaves on that thread. They can either temporarily or permanently changed.
This can be used to influence how the snapshot macros operate. For instance it can be useful to force ordering of maps when unordered structures are used through settings.
Some of the settings can be changed but shouldn’t as it will make it harder for tools like cargo-insta or an editor integration to locate the snapshot files.
Settings can also be configured with the with_settings!
macro.
Example:
use insta;
let mut settings = insta::Settings::clone_current();
settings.set_sort_maps(true);
settings.bind(|| {
// runs the assertion with the changed settings enabled
insta::assert_snapshot!(...);
});
Implementations
sourceimpl Settings
impl Settings
sourcepub fn new() -> Settings
pub fn new() -> Settings
Returns the default settings.
It’s recommended to use clone_current
instead so that
already applied modifications are not discarded.
sourcepub fn clone_current() -> Settings
pub fn clone_current() -> Settings
Returns a copy of the current settings.
sourcepub fn set_sort_maps(&mut self, value: bool)
pub fn set_sort_maps(&mut self, value: bool)
Enables forceful sorting of maps before serialization.
Note that this only applies to snapshots that undergo serialization
(eg: does not work for assert_debug_snapshot!
.)
The default value is false
.
sourcepub fn set_prepend_module_to_snapshot(&mut self, value: bool)
pub fn set_prepend_module_to_snapshot(&mut self, value: bool)
Disables prepending of modules to the snapshot filename.
By default the filename of a snapshot is <module>__<name>.snap
.
Setting this flag to false
changes the snapshot filename to just
<name>.snap
.
The default value is true
.
sourcepub fn prepend_module_to_snapshot(&self) -> bool
pub fn prepend_module_to_snapshot(&self) -> bool
Returns the current value for module name prepending.
sourcepub fn set_allow_empty_glob(&mut self, value: bool)
pub fn set_allow_empty_glob(&mut self, value: bool)
Allows the glob!
macro to succeed if it matches no files.
By default the glob macro will fail the test if it does not find any files to prevent accidental typos. This can be disabled when fixtures should be conditional.
The default value is false
.
sourcepub fn allow_empty_glob(&self) -> bool
pub fn allow_empty_glob(&self) -> bool
Returns the current value for the empty glob setting.
sourcepub fn set_snapshot_suffix<I: Into<String>>(&mut self, suffix: I)
pub fn set_snapshot_suffix<I: Into<String>>(&mut self, suffix: I)
Sets the snapshot suffix.
The snapshot suffix is added to all snapshot names with an @
sign
between. For instance if the snapshot suffix is set to "foo"
and
the snapshot would be named "snapshot"
it turns into "snapshot@foo"
.
This is useful to separate snapshots if you want to use test
parameterization.
sourcepub fn remove_snapshot_suffix(&mut self)
pub fn remove_snapshot_suffix(&mut self)
Removes the snapshot suffix.
sourcepub fn snapshot_suffix(&self) -> Option<&str>
pub fn snapshot_suffix(&self) -> Option<&str>
Returns the current snapshot suffix.
sourcepub fn set_input_file<P: AsRef<Path>>(&mut self, p: P)
pub fn set_input_file<P: AsRef<Path>>(&mut self, p: P)
Sets the input file reference.
This value is completely unused by the snapshot testing system but it lets you store some meta data with a snapshot that refers you back to the input file. The path stored here is made relative to the workspace root before storing with the snapshot.
sourcepub fn remove_input_file(&mut self)
pub fn remove_input_file(&mut self)
Removes the input file reference.
sourcepub fn input_file(&self) -> Option<&Path>
pub fn input_file(&self) -> Option<&Path>
Returns the current input file reference.
sourcepub fn add_redaction<R: Into<Redaction>>(
&mut self,
selector: &str,
replacement: R
)
pub fn add_redaction<R: Into<Redaction>>(
&mut self,
selector: &str,
replacement: R
)
Registers redactions that should be applied.
This can be useful if redactions must be shared across multiple snapshots.
Note that this only applies to snapshots that undergo serialization
(eg: does not work for assert_debug_snapshot!
.)
sourcepub fn add_dynamic_redaction<I, F>(&mut self, selector: &str, func: F) where
I: Into<Content>,
F: Fn(Content, ContentPath<'_>) -> I + Send + Sync + 'static,
pub fn add_dynamic_redaction<I, F>(&mut self, selector: &str, func: F) where
I: Into<Content>,
F: Fn(Content, ContentPath<'_>) -> I + Send + Sync + 'static,
Registers a replacement callback.
This works similar to a redaction but instead of changing the value it
asserts the value at a certain place. This function is internally
supposed to call things like assert_eq!
.
This is a shortcut to add_redaction(selector, dynamic_redaction(...))
;
sourcepub fn sort_selector(&mut self, selector: &str)
pub fn sort_selector(&mut self, selector: &str)
A special redaction that sorts a sequence or map.
This is a shortcut to add_redaction(selector, sorted_redaction())
.
sourcepub fn set_redactions<R: Into<Redactions>>(&mut self, redactions: R)
pub fn set_redactions<R: Into<Redactions>>(&mut self, redactions: R)
Replaces the currently set redactions.
The default set is empty.
sourcepub fn clear_redactions(&mut self)
pub fn clear_redactions(&mut self)
Removes all redactions.
sourcepub fn set_snapshot_path<P: AsRef<Path>>(&mut self, path: P)
pub fn set_snapshot_path<P: AsRef<Path>>(&mut self, path: P)
Sets the snapshot path.
If not absolute it’s relative to where the test is in.
Defaults to snapshots
.
sourcepub fn snapshot_path(&self) -> &Path
pub fn snapshot_path(&self) -> &Path
Returns the snapshot path.
sourcepub fn bind<F: FnOnce()>(&self, f: F)
pub fn bind<F: FnOnce()>(&self, f: F)
Runs a function with the current settings bound to the thread.
sourcepub fn bind_async<F: Future<Output = T>, T>(
&self,
future: F
) -> impl Future<Output = T>
pub fn bind_async<F: Future<Output = T>, T>(
&self,
future: F
) -> impl Future<Output = T>
Like bind
but for futures.
This lets you bind settings for the duration of a future like this:
let settings = Settings::new();
settings.bind_async(async {
// do assertions here
}).await;
sourcepub fn bind_to_thread(&self)
pub fn bind_to_thread(&self)
Binds the settings to the current thread permanently.
Trait Implementations
Auto Trait Implementations
impl !RefUnwindSafe for Settings
impl Send for Settings
impl Sync for Settings
impl Unpin for Settings
impl !UnwindSafe for Settings
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more