compiler_base_macros 0.1.1

compiler_base_macros
Documentation
mod test_bug {
    use crate::bug;

    #[test]
    fn test_bug_macro() {
        std::panic::set_hook(Box::new(|_| {}));
        let result = std::panic::catch_unwind(|| {
            bug!();
        });
        assert!(result.is_err());
        let result = std::panic::catch_unwind(|| {
            bug!("an error msg");
        });
        assert!(result.is_err());
        match result {
            Ok(_) => panic!("test bug!() failed"),
            Err(panic_err) => {
                let err_message = if let Some(s) = panic_err.downcast_ref::<String>() {
                    (*s).clone()
                } else {
                    panic!("test bug!() failed")
                };
                assert_eq!(
                    err_message,
                    "Internal error, please report a bug to us. The error message is: an error msg"
                );
            }
        }

        let result = std::panic::catch_unwind(|| {
            bug!("an error msg with string format {}", "msg");
        });
        assert!(result.is_err());
        match result {
            Ok(_) => panic!("test bug!() failed"),
            Err(panic_err) => {
                let err_message = if let Some(s) = panic_err.downcast_ref::<String>() {
                    (*s).clone()
                } else {
                    panic!("test bug!() failed")
                };
                assert_eq!(err_message, "Internal error, please report a bug to us. The error message is: an error msg with string format msg");
            }
        }
    }
}