use serial_test::serial;
use std::env;
#[test]
#[serial]
fn test_init_otel_no_env_var_returns_none() {
unsafe {
env::remove_var("OTEL_EXPORTER_OTLP_ENDPOINT");
}
let result = aptu_coder::otel::init_otel();
assert!(
result.is_none(),
"init_otel should return None when OTEL_EXPORTER_OTLP_ENDPOINT is unset"
);
}
#[test]
#[serial]
fn test_init_otel_invalid_url_returns_none() {
unsafe {
env::set_var(
"OTEL_EXPORTER_OTLP_ENDPOINT",
"http://invalid-url-that-does-not-exist:9999",
);
}
let result = aptu_coder::otel::init_otel();
assert!(
result.is_some(),
"init_otel should return Some(provider) with lazy connection (otel 0.32+)"
);
unsafe {
env::remove_var("OTEL_EXPORTER_OTLP_ENDPOINT");
}
}
#[test]
#[serial]
fn test_noop_layer_composition_no_panic() {
unsafe {
env::remove_var("OTEL_EXPORTER_OTLP_ENDPOINT");
}
let otel_provider = aptu_coder::otel::init_otel();
assert!(
otel_provider.is_none(),
"init_otel should return None when env var unset"
);
if let Some(_provider) = otel_provider {
panic!("Should not reach here");
}
}
#[test]
#[serial]
fn test_log_appender_no_env_var_returns_none() {
unsafe {
env::remove_var("OTEL_EXPORTER_OTLP_ENDPOINT");
}
let result = aptu_coder::otel::init_log_appender();
assert!(
result.is_none(),
"init_log_appender should return None when OTEL_EXPORTER_OTLP_ENDPOINT is unset"
);
}
#[test]
#[serial]
fn test_traceparent_malformed_no_panic() {
let mut meta_map = serde_json::Map::new();
meta_map.insert(
"traceparent".to_string(),
serde_json::Value::String("not-a-valid-traceparent".to_string()),
);
let meta = rmcp::model::Meta(meta_map);
aptu_coder::extract_and_set_trace_context(
Some(&meta),
aptu_coder::ClientMetadata {
session_id: None,
client_name: None,
client_version: None,
},
);
}
#[test]
#[serial]
fn test_traceparent_missing_meta_no_panic() {
aptu_coder::extract_and_set_trace_context(
None,
aptu_coder::ClientMetadata {
session_id: None,
client_name: None,
client_version: None,
},
);
}
#[test]
#[serial]
fn test_metrics_histogram_no_env_var() {
unsafe {
env::remove_var("OTEL_EXPORTER_OTLP_ENDPOINT");
}
let result = aptu_coder::otel::init_meter();
assert!(
result.is_none(),
"init_meter should return None when OTEL_EXPORTER_OTLP_ENDPOINT is unset"
);
}