mirror of
https://github.com/logos-blockchain/logos-blockchain-testing.git
synced 2026-01-02 21:33:07 +00:00
54 lines
1.6 KiB
Rust
54 lines
1.6 KiB
Rust
use cucumber::World;
|
|
use cucumber_ext::TestingFrameworkWorld;
|
|
use tracing_subscriber::{EnvFilter, fmt};
|
|
|
|
const FEATURES_PATH: &str = "examples/cucumber/features";
|
|
|
|
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
|
|
pub enum Mode {
|
|
Host,
|
|
Compose,
|
|
}
|
|
|
|
fn set_default_env(key: &str, value: &str) {
|
|
if std::env::var_os(key).is_none() {
|
|
// SAFETY: Used as an early-run default. Prefer setting env vars in the
|
|
// shell for multi-threaded runs.
|
|
unsafe {
|
|
std::env::set_var(key, value);
|
|
}
|
|
}
|
|
}
|
|
|
|
fn is_compose(
|
|
feature: &cucumber::gherkin::Feature,
|
|
scenario: &cucumber::gherkin::Scenario,
|
|
) -> bool {
|
|
scenario.tags.iter().any(|tag| tag == "compose")
|
|
|| feature.tags.iter().any(|tag| tag == "compose")
|
|
}
|
|
|
|
pub fn init_logging_defaults() {
|
|
set_default_env("POL_PROOF_DEV_MODE", "true");
|
|
set_default_env("NOMOS_TESTS_KEEP_LOGS", "1");
|
|
set_default_env("NOMOS_LOG_DIR", ".tmp/cucumber-logs");
|
|
set_default_env("NOMOS_LOG_LEVEL", "info");
|
|
set_default_env("RUST_LOG", "info");
|
|
}
|
|
|
|
pub fn init_tracing() {
|
|
let filter = EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new("info"));
|
|
let _ = fmt().with_env_filter(filter).with_target(true).try_init();
|
|
}
|
|
|
|
pub async fn run(mode: Mode) {
|
|
TestingFrameworkWorld::cucumber()
|
|
.with_default_cli()
|
|
.max_concurrent_scenarios(Some(1))
|
|
.filter_run(FEATURES_PATH, move |feature, _, scenario| match mode {
|
|
Mode::Host => !is_compose(feature, scenario),
|
|
Mode::Compose => is_compose(feature, scenario),
|
|
})
|
|
.await;
|
|
}
|