1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
//! "insta" is a simple snapshot testing library for Rust.
//!
//! # How it Operates
//!
//! This crate exports two basic macros for snapshot testing:
//! `assert_snapshot_matches!` for comparing basic string snapshots and
//! `assert_debug_snapshot_matches!` for snapshotting the debug print output of
//! a type. Additionally if the `serialization` feature is enabled the
//! `assert_serialized_snapshot_matches!` macro becomes available which
//! serializes an object with `serde` to yaml before snapshotting.
//!
//! Snapshots are stored in the `snapshots` folder right next to the test file
//! where this is used. The name of the file is `<module>__<name>.snap` where
//! the `name` of the snapshot has to be provided to the assertion macro.
//!
//! To update the snapshots export the `INSTA_UPDATE` environment variable
//! and set it to `1`. The snapshots can then be committed.
//!
//! # Example
//!
//! ```rust,ignore
//! use insta::assert_debug_snapshot_matches;
//!
//! #[test]
//! fn test_snapshots() {
//! let value = vec![1, 2, 3];
//! assert_debug_snapshot_matches!("snapshot_name", value);
//! }
//! ```
//!
//! The recommended flow is to run the tests once, have them fail and check
//! if the result is okay. Once you are satisifed run the tests again with
//! `INSTA_UPDATE` set to `1` and updates will be stored:
//!
//! ```ignore
//! $ INSTA_UPDATE=1 cargo test
//! ```
//!
//! # Snapshot files
//!
//! The committed snapshot files will have a header with some meta information
//! that can make debugging easier and the snapshot:
//!
//! ```ignore
//! Created: 2019-01-13T22:16:48.669496+00:00
//! Creator: insta@0.1.0
//! Source: tests/test_snapshots.rs
//!
//! [
//! 1,
//! 2,
//! 3
//! ]
//! ```