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
//! Compare contents of two directories.
//!
//! This crate provides macro and function for asserting whether two directories or files are equal.
//!
//! Example usage:
//! ```rust,ignore
//! #[test]
//! fn test_macro() {
//! assert_paths!("actual", "expected");
//! }
//!
//! #[test]
//! fn test_fn() {
//! assert_paths("actual", "expected").unwrap();
//! }
//! ```
//!
//! These functions will panic yielding detailed information about which paths didn't match during comparison.
//! Moreover, line at which each file differs, when other with same name is found also will be reported.
//!
//! To do before 1.0:
//! * [ ] assert should `println!` or `debug!` all paths it went through
//! * [x] we need to follow symlinks
//! * [ ] we need to add optional configuration to:
//! * [ ] know if follow symlinks or just compare their names
//! * [ ] compare `actual` with stringified dir (no `expected` folder, only &str as input)
//! * [ ] provide file comparison function (we may use hashing comparers or just check file metadata)
//! * [ ] unit test error `new_*` functions
//! * [ ] change acceptance tests to compare `Debug` instead of `Display`
//! * [ ] hide `Debug` and `Clone` implementations behind feature
pub use crateassert_paths;
pub use crateError;
/// Recursively scan contents of two directories and find differences.
///
/// eg.:
/// ```rust,ignore
/// #[test]
/// fn should_directories_be_equal() {
/// assert_paths!("actual", "expected");
/// }
/// ```
///
/// This macro will panic if directories "actual" and "expected" differ at any depth.
///
/// It can accept both file names and directory names as arguments.