Sha256: 11f05010bc9b16319884c1286444100e30cddc2ecd1ffe5e0fd3fee5ffb32683

Contents?: true

Size: 1.85 KB

Versions: 25

Compression:

Stored size: 1.85 KB

Contents

#![allow(
    clippy::assertions_on_result_states,
    clippy::eq_op,
    clippy::items_after_statements,
    clippy::needless_pass_by_value,
    clippy::shadow_unrelated,
    clippy::wildcard_imports
)]

mod common;

use self::common::*;
use anyhow::{anyhow, ensure};
use std::cell::Cell;
use std::future;

#[test]
fn test_messages() {
    assert_eq!("oh no!", bail_literal().unwrap_err().to_string());
    assert_eq!("oh no!", bail_fmt().unwrap_err().to_string());
    assert_eq!("oh no!", bail_error().unwrap_err().to_string());
}

#[test]
fn test_ensure() {
    let f = || {
        ensure!(1 + 1 == 2, "This is correct");
        Ok(())
    };
    assert!(f().is_ok());

    let v = 1;
    let f = || {
        ensure!(v + v == 2, "This is correct, v: {}", v);
        Ok(())
    };
    assert!(f().is_ok());

    let f = || {
        ensure!(v + v == 1, "This is not correct, v: {}", v);
        Ok(())
    };
    assert!(f().is_err());

    let f = || {
        ensure!(v + v == 1);
        Ok(())
    };
    assert_eq!(
        f().unwrap_err().to_string(),
        "Condition failed: `v + v == 1` (2 vs 1)",
    );
}

#[test]
fn test_temporaries() {
    fn require_send_sync(_: impl Send + Sync) {}

    require_send_sync(async {
        // If anyhow hasn't dropped any temporary format_args it creates by the
        // time it's done evaluating, those will stick around until the
        // semicolon, which is on the other side of the await point, making the
        // enclosing future non-Send.
        future::ready(anyhow!("...")).await;
    });

    fn message(cell: Cell<&str>) -> &str {
        cell.get()
    }

    require_send_sync(async {
        future::ready(anyhow!(message(Cell::new("...")))).await;
    });
}

#[test]
fn test_brace_escape() {
    let err = anyhow!("unterminated ${{..}} expression");
    assert_eq!("unterminated ${..} expression", err.to_string());
}

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
wasmtime-18.0.3 ./ext/cargo-vendor/anyhow-1.0.79/tests/test_macros.rs
wasmtime-17.0.1 ./ext/cargo-vendor/anyhow-1.0.79/tests/test_macros.rs
wasmtime-17.0.0 ./ext/cargo-vendor/anyhow-1.0.79/tests/test_macros.rs
wasmtime-16.0.0 ./ext/cargo-vendor/anyhow-1.0.79/tests/test_macros.rs
wasmtime-15.0.1 ./ext/cargo-vendor/anyhow-1.0.79/tests/test_macros.rs
wasmtime-15.0.0 ./ext/cargo-vendor/anyhow-1.0.79/tests/test_macros.rs
wasmtime-14.0.4 ./ext/cargo-vendor/anyhow-1.0.75/tests/test_macros.rs
wasmtime-14.0.3 ./ext/cargo-vendor/anyhow-1.0.75/tests/test_macros.rs
wasmtime-14.0.1 ./ext/cargo-vendor/anyhow-1.0.75/tests/test_macros.rs
wasmtime-14.0.0 ./ext/cargo-vendor/anyhow-1.0.75/tests/test_macros.rs
wasmtime-13.0.0 ./ext/cargo-vendor/anyhow-1.0.75/tests/test_macros.rs
wasmtime-12.0.1 ./ext/cargo-vendor/anyhow-1.0.75/tests/test_macros.rs
wasmtime-12.0.0 ./ext/cargo-vendor/anyhow-1.0.75/tests/test_macros.rs
wasmtime-11.0.0 ./ext/cargo-vendor/anyhow-1.0.75/tests/test_macros.rs
wasmtime-10.0.1 ./ext/cargo-vendor/anyhow-1.0.72/tests/test_macros.rs
wasmtime-10.0.0 ./ext/cargo-vendor/anyhow-1.0.72/tests/test_macros.rs
wasmtime-9.0.4 ./ext/cargo-vendor/anyhow-1.0.72/tests/test_macros.rs
wasmtime-9.0.1 ./ext/cargo-vendor/anyhow-1.0.71/tests/test_macros.rs
wasmtime-8.0.0 ./ext/cargo-vendor/anyhow-1.0.70/tests/test_macros.rs
wasmtime-7.0.0 ./ext/cargo-vendor/anyhow-1.0.70/tests/test_macros.rs