summaryrefslogtreecommitdiff
path: root/vendor/thiserror/tests/test_backtrace.rs
diff options
context:
space:
mode:
authorValentin Popov <valentin@popov.link>2024-01-08 00:21:28 +0300
committerValentin Popov <valentin@popov.link>2024-01-08 00:21:28 +0300
commit1b6a04ca5504955c571d1c97504fb45ea0befee4 (patch)
tree7579f518b23313e8a9748a88ab6173d5e030b227 /vendor/thiserror/tests/test_backtrace.rs
parent5ecd8cf2cba827454317368b68571df0d13d7842 (diff)
downloadfparkan-1b6a04ca5504955c571d1c97504fb45ea0befee4.tar.xz
fparkan-1b6a04ca5504955c571d1c97504fb45ea0befee4.zip
Initial vendor packages
Signed-off-by: Valentin Popov <valentin@popov.link>
Diffstat (limited to 'vendor/thiserror/tests/test_backtrace.rs')
-rw-r--r--vendor/thiserror/tests/test_backtrace.rs274
1 files changed, 274 insertions, 0 deletions
diff --git a/vendor/thiserror/tests/test_backtrace.rs b/vendor/thiserror/tests/test_backtrace.rs
new file mode 100644
index 0000000..4710d45
--- /dev/null
+++ b/vendor/thiserror/tests/test_backtrace.rs
@@ -0,0 +1,274 @@
+#![cfg_attr(thiserror_nightly_testing, feature(error_generic_member_access))]
+
+use thiserror::Error;
+
+#[derive(Error, Debug)]
+#[error("...")]
+pub struct Inner;
+
+#[cfg(thiserror_nightly_testing)]
+#[derive(Error, Debug)]
+#[error("...")]
+pub struct InnerBacktrace {
+ backtrace: std::backtrace::Backtrace,
+}
+
+#[cfg(thiserror_nightly_testing)]
+pub mod structs {
+ use super::{Inner, InnerBacktrace};
+ use std::backtrace::Backtrace;
+ use std::error::{self, Error};
+ use std::sync::Arc;
+ use thiserror::Error;
+
+ #[derive(Error, Debug)]
+ #[error("...")]
+ pub struct PlainBacktrace {
+ backtrace: Backtrace,
+ }
+
+ #[derive(Error, Debug)]
+ #[error("...")]
+ pub struct ExplicitBacktrace {
+ #[backtrace]
+ backtrace: Backtrace,
+ }
+
+ #[derive(Error, Debug)]
+ #[error("...")]
+ pub struct OptBacktrace {
+ #[backtrace]
+ backtrace: Option<Backtrace>,
+ }
+
+ #[derive(Error, Debug)]
+ #[error("...")]
+ pub struct ArcBacktrace {
+ #[backtrace]
+ backtrace: Arc<Backtrace>,
+ }
+
+ #[derive(Error, Debug)]
+ #[error("...")]
+ pub struct BacktraceFrom {
+ #[from]
+ source: Inner,
+ #[backtrace]
+ backtrace: Backtrace,
+ }
+
+ #[derive(Error, Debug)]
+ #[error("...")]
+ pub struct CombinedBacktraceFrom {
+ #[from]
+ #[backtrace]
+ source: InnerBacktrace,
+ }
+
+ #[derive(Error, Debug)]
+ #[error("...")]
+ pub struct OptBacktraceFrom {
+ #[from]
+ source: Inner,
+ #[backtrace]
+ backtrace: Option<Backtrace>,
+ }
+
+ #[derive(Error, Debug)]
+ #[error("...")]
+ pub struct ArcBacktraceFrom {
+ #[from]
+ source: Inner,
+ #[backtrace]
+ backtrace: Arc<Backtrace>,
+ }
+
+ #[derive(Error, Debug)]
+ #[error("...")]
+ pub struct AnyhowBacktrace {
+ #[backtrace]
+ source: anyhow::Error,
+ }
+
+ #[derive(Error, Debug)]
+ #[error("...")]
+ pub struct BoxDynErrorBacktrace {
+ #[backtrace]
+ source: Box<dyn Error>,
+ }
+
+ #[test]
+ fn test_backtrace() {
+ let error = PlainBacktrace {
+ backtrace: Backtrace::capture(),
+ };
+ assert!(error::request_ref::<Backtrace>(&error).is_some());
+
+ let error = ExplicitBacktrace {
+ backtrace: Backtrace::capture(),
+ };
+ assert!(error::request_ref::<Backtrace>(&error).is_some());
+
+ let error = OptBacktrace {
+ backtrace: Some(Backtrace::capture()),
+ };
+ assert!(error::request_ref::<Backtrace>(&error).is_some());
+
+ let error = ArcBacktrace {
+ backtrace: Arc::new(Backtrace::capture()),
+ };
+ assert!(error::request_ref::<Backtrace>(&error).is_some());
+
+ let error = BacktraceFrom::from(Inner);
+ assert!(error::request_ref::<Backtrace>(&error).is_some());
+
+ let error = CombinedBacktraceFrom::from(InnerBacktrace {
+ backtrace: Backtrace::capture(),
+ });
+ assert!(error::request_ref::<Backtrace>(&error).is_some());
+
+ let error = OptBacktraceFrom::from(Inner);
+ assert!(error::request_ref::<Backtrace>(&error).is_some());
+
+ let error = ArcBacktraceFrom::from(Inner);
+ assert!(error::request_ref::<Backtrace>(&error).is_some());
+
+ let error = AnyhowBacktrace {
+ source: anyhow::Error::msg("..."),
+ };
+ assert!(error::request_ref::<Backtrace>(&error).is_some());
+
+ let error = BoxDynErrorBacktrace {
+ source: Box::new(PlainBacktrace {
+ backtrace: Backtrace::capture(),
+ }),
+ };
+ assert!(error::request_ref::<Backtrace>(&error).is_some());
+ }
+}
+
+#[cfg(thiserror_nightly_testing)]
+pub mod enums {
+ use super::{Inner, InnerBacktrace};
+ use std::backtrace::Backtrace;
+ use std::error;
+ use std::sync::Arc;
+ use thiserror::Error;
+
+ #[derive(Error, Debug)]
+ pub enum PlainBacktrace {
+ #[error("...")]
+ Test { backtrace: Backtrace },
+ }
+
+ #[derive(Error, Debug)]
+ pub enum ExplicitBacktrace {
+ #[error("...")]
+ Test {
+ #[backtrace]
+ backtrace: Backtrace,
+ },
+ }
+
+ #[derive(Error, Debug)]
+ pub enum OptBacktrace {
+ #[error("...")]
+ Test {
+ #[backtrace]
+ backtrace: Option<Backtrace>,
+ },
+ }
+
+ #[derive(Error, Debug)]
+ pub enum ArcBacktrace {
+ #[error("...")]
+ Test {
+ #[backtrace]
+ backtrace: Arc<Backtrace>,
+ },
+ }
+
+ #[derive(Error, Debug)]
+ pub enum BacktraceFrom {
+ #[error("...")]
+ Test {
+ #[from]
+ source: Inner,
+ #[backtrace]
+ backtrace: Backtrace,
+ },
+ }
+
+ #[derive(Error, Debug)]
+ pub enum CombinedBacktraceFrom {
+ #[error("...")]
+ Test {
+ #[from]
+ #[backtrace]
+ source: InnerBacktrace,
+ },
+ }
+
+ #[derive(Error, Debug)]
+ pub enum OptBacktraceFrom {
+ #[error("...")]
+ Test {
+ #[from]
+ source: Inner,
+ #[backtrace]
+ backtrace: Option<Backtrace>,
+ },
+ }
+
+ #[derive(Error, Debug)]
+ pub enum ArcBacktraceFrom {
+ #[error("...")]
+ Test {
+ #[from]
+ source: Inner,
+ #[backtrace]
+ backtrace: Arc<Backtrace>,
+ },
+ }
+
+ #[test]
+ fn test_backtrace() {
+ let error = PlainBacktrace::Test {
+ backtrace: Backtrace::capture(),
+ };
+ assert!(error::request_ref::<Backtrace>(&error).is_some());
+
+ let error = ExplicitBacktrace::Test {
+ backtrace: Backtrace::capture(),
+ };
+ assert!(error::request_ref::<Backtrace>(&error).is_some());
+
+ let error = OptBacktrace::Test {
+ backtrace: Some(Backtrace::capture()),
+ };
+ assert!(error::request_ref::<Backtrace>(&error).is_some());
+
+ let error = ArcBacktrace::Test {
+ backtrace: Arc::new(Backtrace::capture()),
+ };
+ assert!(error::request_ref::<Backtrace>(&error).is_some());
+
+ let error = BacktraceFrom::from(Inner);
+ assert!(error::request_ref::<Backtrace>(&error).is_some());
+
+ let error = CombinedBacktraceFrom::from(InnerBacktrace {
+ backtrace: Backtrace::capture(),
+ });
+ assert!(error::request_ref::<Backtrace>(&error).is_some());
+
+ let error = OptBacktraceFrom::from(Inner);
+ assert!(error::request_ref::<Backtrace>(&error).is_some());
+
+ let error = ArcBacktraceFrom::from(Inner);
+ assert!(error::request_ref::<Backtrace>(&error).is_some());
+ }
+}
+
+#[test]
+#[cfg_attr(not(thiserror_nightly_testing), ignore)]
+fn test_backtrace() {}