Files
khadhroony-solana-project/crates/ksp-logging-lib/tests/public_api.rs
2026-08-14 18:43:54 +02:00

68 lines
3.2 KiB
Rust

// file: crates/ksp-logging-lib/tests/public_api.rs
// version: 4
//! Integration tests for the public crate-root surface of `ksp-logging-lib`.
const TEST_TARGET: &str = "ksp-logging-lib";
#[test]
fn public_settings_surface_is_usable() {
let settings = ksp_logging_lib::LoggingSettings::new(
ksp_logging_lib::LogFilterLevel::Info,
ksp_logging_lib::SpanEvents::NewAndClose,
std::option::Option::Some(ksp_logging_lib::ConsoleSettings::stdout()),
std::option::Option::Some(ksp_logging_lib::FileSettings::new("logs", "ksp", ksp_logging_lib::FileRotation::Daily)),
)
.with_target_filter(ksp_logging_lib::TargetFilter::new(TEST_TARGET, ksp_logging_lib::LogFilterLevel::Trace));
assert!(settings.validate().is_ok());
assert_eq!(settings.default_filter(), ksp_logging_lib::LogFilterLevel::Info);
assert_eq!(settings.console().map(ksp_logging_lib::ConsoleSettings::output), std::option::Option::Some(ksp_logging_lib::ConsoleOutput::Stdout));
}
#[test]
fn public_event_macros_are_usable() {
ksp_logging_lib::error!(target: TEST_TARGET, operation = "public_api", "error event");
ksp_logging_lib::warn!(target: TEST_TARGET, operation = "public_api", "warn event");
ksp_logging_lib::info!(target: TEST_TARGET, operation = "public_api", "info event");
ksp_logging_lib::debug!(target: TEST_TARGET, operation = "public_api", "debug event");
ksp_logging_lib::trace!(target: TEST_TARGET, operation = "public_api", "trace event");
}
#[test]
fn public_span_surface_is_usable_for_sync_and_async() {
let span = ksp_logging_lib::trace_span!(target: TEST_TARGET, "public_sync", domain = "logging");
let value = span.in_scope(|| -> u32 {
return 7;
});
assert_eq!(value, 7);
let async_span = ksp_logging_lib::debug_span!(target: TEST_TARGET, "public_async", component = "test");
let future = ksp_logging_lib::instrument(async_span, std::future::ready(9_u32));
let mut future = std::boxed::Box::pin(future);
let waker = std::task::Waker::noop();
let mut context = std::task::Context::from_waker(waker);
let poll = std::future::Future::poll(future.as_mut(), &mut context);
assert_eq!(poll, std::task::Poll::Ready(9_u32));
}
#[test]
fn all_span_levels_are_usable() {
let _error = ksp_logging_lib::error_span!(target: TEST_TARGET, "error_span");
let _warn = ksp_logging_lib::warn_span!(target: TEST_TARGET, "warn_span");
let _info = ksp_logging_lib::info_span!(target: TEST_TARGET, "info_span");
let _debug = ksp_logging_lib::debug_span!(target: TEST_TARGET, "debug_span");
let _trace = ksp_logging_lib::trace_span!(target: TEST_TARGET, "trace_span");
}
#[test]
fn public_runtime_surface_is_addressable_without_installing_it() {
let _initialize = ksp_logging_lib::initialize;
let _reinitialize = ksp_logging_lib::reinitialize;
let _already_initialized = ksp_logging_lib::ERROR_CODE_ALREADY_INITIALIZED;
let _reload_failed = ksp_logging_lib::ERROR_CODE_RELOAD_FAILED;
let _file_initialization_failed = ksp_logging_lib::ERROR_CODE_FILE_OUTPUT_INITIALIZATION_FAILED;
let dropped = ksp_logging_lib::DroppedLines::zero();
assert_eq!(dropped.console(), 0);
assert_eq!(dropped.file(), 0);
assert_eq!(dropped.total(), 0);
}