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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
//! # Tanu Core
//!
//! Core functionality for the tanu WebAPI testing framework.
//!
//! This crate provides the fundamental building blocks for tanu, including:
//! - Test runners and execution logic
//! - HTTP client functionality
//! - Assertion macros and utilities
//! - Configuration management
//! - Test reporting infrastructure
//!
//! ## Architecture (block diagram)
//!
//! ```text
//! +---------------------+ +---------------------+ +---------------------+
//! | test definitions | ---> | runner (execution) | ---> | reporter (output) |
//! | #[tanu::test] | | + event channel | | List/Null/etc. |
//! +---------------------+ +---------------------+ +---------------------+
//! | ^ ^ ^
//! v | | |
//! +---------------------+ | | +---------------------+
//! | assertion macros | ---publish---+ +---publish--- | HTTP client + logs |
//! | check!, check_eq! | | | req/res capture |
//! +---------------------+ | +---------------------+
//! ^ |
//! | v
//! +---------------------+ +---------------------+
//! | config + filters | <-------------------- | test selection |
//! | projects/modules | | (project/module) |
//! +---------------------+ +---------------------+
//! ```
//!
//! Most users should use the main `tanu` crate rather than importing `tanu-core` directly.
// Re-export procedural macros
pub use ;
// Re-export error handling crates
pub use anyhow;
pub use eyre;
/// Type alias for project names in tanu configuration.
///
/// Project names are used to organize tests into different environments
/// or configurations (e.g., "staging", "production", "development").
/// Each project can have its own configuration settings including
/// base URLs, timeouts, and retry policies.
pub type ProjectName = String;
/// Type alias for module names in test organization.
///
/// Module names correspond to Rust module paths and are used to
/// group related tests together. For example, "api", "auth", "users".
/// They're used for filtering and organizing test output.
pub type ModuleName = String;
/// Type alias for individual test names.
///
/// Test names identify specific test functions within a module.
/// Combined with module and project names, they provide unique
/// identification for each test case in the system.
pub type TestName = String;
// Re-export key functionality
pub use ;
pub use ;
pub use ;
pub use ;