sentry-contrib-native 0.3.1

Unofficial bindings to the Sentry Native SDK for Rust.
#![warn(
    clippy::cargo,
    clippy::missing_docs_in_private_items,
    clippy::nursery,
    clippy::pedantic,
    missing_docs
)]

mod util;

use anyhow::Result;
use sentry::{Event, Level};
use sentry_contrib_native as sentry;

#[tokio::test(flavor = "multi_thread")]
async fn event() -> Result<()> {
    util::events_success(
        None,
        vec![
            (
                || Event::new().capture(),
                |event| {
                    assert_eq!("<unlabeled event>", event.title);
                    assert_eq!("error", event.tags.get("level").unwrap());
                    assert_eq!("", event.message);
                    assert_eq!(None, event.tags.get("logger"));
                },
            ),
            (
                || {
                    let mut event = Event::new();
                    event.insert("extra", vec![("data", "test data")]);
                    event.capture()
                },
                |event| {
                    assert_eq!("<unlabeled event>", event.title);
                    assert_eq!("error", event.tags.get("level").unwrap());
                    assert_eq!(
                        "test data",
                        event.context.get("data").unwrap().as_str().unwrap()
                    );
                    assert_eq!("", event.message);
                    assert_eq!(None, event.tags.get("logger"));
                },
            ),
            (
                || Event::new_message(Level::Debug, None, "test message").capture(),
                |event| {
                    assert_eq!("test message", event.title);
                    assert_eq!("debug", event.tags.get("level").unwrap());
                    assert_eq!("test message", event.message);
                    assert_eq!(None, event.tags.get("logger"));
                },
            ),
            (
                || {
                    Event::new_message(Level::Debug, Some("test logger".into()), "test message")
                        .capture()
                },
                |event| {
                    assert_eq!("test message", event.title);
                    assert_eq!("debug", event.tags.get("level").unwrap());
                    assert_eq!("test message", event.message);
                    assert_eq!("test logger", event.tags.get("logger").unwrap());
                },
            ),
            (
                || {
                    let mut event = Event::new();
                    event.add_stacktrace(0);
                    event.capture()
                },
                |event| {
                    assert_eq!("<unlabeled event>", event.title);
                    assert_eq!("error", event.tags.get("level").unwrap());
                    assert_eq!("", event.message);
                    assert_eq!(None, event.tags.get("logger"));
                    assert!(event.entries.get("threads").is_some());
                },
            ),
            (
                || {
                    let mut event = Event::new();
                    event.add_exception(
                        vec![
                            ("type", "test exception"),
                            ("value", "test exception value"),
                        ],
                        0,
                    );
                    event.capture()
                },
                |event| {
                    assert_eq!("test exception: test exception value", event.title);
                    assert_eq!("error", event.tags.get("level").unwrap());
                    assert_eq!("", event.message);
                    assert_eq!(None, event.tags.get("logger"));
                    assert!(event.entries.get("exception").is_some());
                },
            ),
        ],
    )
    .await?;

    Ok(())
}