summaryrefslogtreecommitdiff
path: root/subprojects/thiserror/tests/test_path.rs
diff options
context:
space:
mode:
authorJohn Turner <jturner.usa@gmail.com>2025-11-15 20:18:36 +0000
committerJohn Turner <jturner.usa@gmail.com>2025-11-15 20:18:36 +0000
commitc0bd0c9efd429b35354484e24fe272fa1fbfe901 (patch)
tree395d4918e6a2b882fc05b285001b6cb72ab10af2 /subprojects/thiserror/tests/test_path.rs
parent0436fbc77039fa3d754f2db5cfefdd437fea51d1 (diff)
parent6eba9cd92c295c5389944f6adda1f1e83b2cb008 (diff)
downloadgentoo-utils-c0bd0c9efd429b35354484e24fe272fa1fbfe901.tar.gz
Merge commit '6eba9cd92c295c5389944f6adda1f1e83b2cb008' as 'subprojects/thiserror'
Diffstat (limited to 'subprojects/thiserror/tests/test_path.rs')
-rw-r--r--subprojects/thiserror/tests/test_path.rs54
1 files changed, 54 insertions, 0 deletions
diff --git a/subprojects/thiserror/tests/test_path.rs b/subprojects/thiserror/tests/test_path.rs
new file mode 100644
index 0000000..fa85c1d
--- /dev/null
+++ b/subprojects/thiserror/tests/test_path.rs
@@ -0,0 +1,54 @@
+#![cfg(feature = "std")]
+
+use core::fmt::Display;
+use ref_cast::RefCast;
+use std::path::{Path, PathBuf};
+use thiserror::Error;
+
+#[derive(Error, Debug)]
+#[error("failed to read '{file}'")]
+struct StructPathBuf {
+ file: PathBuf,
+}
+
+#[derive(Error, Debug, RefCast)]
+#[repr(C)]
+#[error("failed to read '{file}'")]
+struct StructPath {
+ file: Path,
+}
+
+#[derive(Error, Debug)]
+enum EnumPathBuf {
+ #[error("failed to read '{0}'")]
+ Read(PathBuf),
+}
+
+#[derive(Error, Debug)]
+#[error("{tail}")]
+pub struct UnsizedError {
+ pub head: i32,
+ pub tail: str,
+}
+
+#[derive(Error, Debug)]
+pub enum BothError {
+ #[error("display:{0} debug:{0:?}")]
+ DisplayDebug(PathBuf),
+ #[error("debug:{0:?} display:{0}")]
+ DebugDisplay(PathBuf),
+}
+
+fn assert<T: Display>(expected: &str, value: T) {
+ assert_eq!(expected, value.to_string());
+}
+
+#[test]
+fn test_display() {
+ let path = Path::new("/thiserror");
+ let file = path.to_owned();
+ assert("failed to read '/thiserror'", StructPathBuf { file });
+ let file = path.to_owned();
+ assert("failed to read '/thiserror'", EnumPathBuf::Read(file));
+ assert("failed to read '/thiserror'", StructPath::ref_cast(path));
+}