#![allow(clippy::needless_return)]
use std::sync::Once;
static TEST_INIT: Once = Once::new();
pub mod backend;
pub mod config;
pub mod events;
pub mod frontend;
mod reporter;
pub fn auto_initialize_for_tests() {
TEST_INIT.call_once(|| {
let config = config::Config::new();
if config.enhanced_output {
config.apply();
}
});
}
pub use config::initialize;
pub use fluent_test_macros::{after_all, before_all, setup, tear_down, with_fixtures, with_fixtures_module};
#[ctor::dtor]
fn run_after_all_fixtures() {
backend::fixtures::run_after_all_fixtures();
}
pub mod matchers {
pub use crate::backend::matchers::boolean::BooleanMatchers;
pub use crate::backend::matchers::collection::{CollectionExtensions, CollectionMatchers};
pub use crate::backend::matchers::equality::EqualityMatchers;
pub use crate::backend::matchers::hashmap::HashMapMatchers;
pub use crate::backend::matchers::numeric::NumericMatchers;
pub use crate::backend::matchers::option::OptionMatchers;
pub use crate::backend::matchers::result::ResultMatchers;
pub use crate::backend::matchers::string::StringMatchers;
}
pub mod prelude {
pub use crate::backend::Assertion;
pub use crate::expect;
pub use crate::expect_not;
pub use crate::{after_all, before_all, setup, tear_down, with_fixtures, with_fixtures_module};
pub use crate::matchers::*;
pub use crate::backend::modifiers::*;
pub use crate::config;
pub use crate::initialize;
#[cfg(test)]
pub use crate::auto_initialize_for_tests;
}
pub use crate::config::Config;
pub use crate::reporter::Reporter;
pub fn config() -> Config {
Config::new()
}
#[macro_export]
macro_rules! expect {
($expr:expr) => {{
$crate::auto_initialize_for_tests();
$crate::backend::Assertion::new($expr, stringify!($expr))
}};
}
#[macro_export]
macro_rules! expect_not {
($expr:expr) => {{
$crate::auto_initialize_for_tests();
use $crate::backend::modifiers::NotModifier;
$crate::backend::Assertion::new($expr, stringify!($expr)).not()
}};
}
#[macro_export]
macro_rules! fluent_test {
() => {
#[test]
fn _fluent_test_runner() {
$crate::auto_initialize_for_tests();
let enhanced_output = $crate::config::is_enhanced_output_enabled();
if enhanced_output {
struct ReportOnDrop;
impl Drop for ReportOnDrop {
fn drop(&mut self) {
$crate::Reporter::summarize();
}
}
let _guard = ReportOnDrop;
}
}
};
}
#[cfg(test)]
pub mod test_utils {
pub use crate::backend::matchers::boolean::BooleanMatchers;
pub use crate::backend::matchers::collection::{CollectionExtensions, CollectionMatchers};
pub use crate::backend::matchers::equality::EqualityMatchers;
pub use crate::backend::matchers::hashmap::HashMapMatchers;
pub use crate::backend::matchers::numeric::NumericMatchers;
pub use crate::backend::matchers::option::OptionMatchers;
pub use crate::backend::matchers::result::ResultMatchers;
pub use crate::backend::matchers::string::StringMatchers;
pub fn setup_tests() {
crate::config().enhanced_output(true).apply();
}
#[test]
#[ignore]
fn _setup_for_tests() {
setup_tests();
}
}