about summary refs log tree commit diff
diff options
context:
space:
mode:
authorDavid Tolnay <dtolnay@gmail.com>2020-02-13 00:16:28 -0800
committerDavid Tolnay <dtolnay@gmail.com>2020-03-09 12:01:32 -0700
commit33600e4d2d7a61f7dcb1b278bb1ccb8f04690db3 (patch)
tree297172a5606e7a46b4dbc7cb6b1d8573bbfe02d9
parenta9cc010c4883bafba1304f6fd581343f5b1b3ba2 (diff)
downloadrust-33600e4d2d7a61f7dcb1b278bb1ccb8f04690db3.tar.gz
rust-33600e4d2d7a61f7dcb1b278bb1ccb8f04690db3.zip
Add test of Debug representation of Backtrace
-rw-r--r--src/libstd/backtrace.rs52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/libstd/backtrace.rs b/src/libstd/backtrace.rs
index 04fd80ecbdb..f3dd7a62fcb 100644
--- a/src/libstd/backtrace.rs
+++ b/src/libstd/backtrace.rs
@@ -433,3 +433,55 @@ impl RawFrame {
         }
     }
 }
+
+#[test]
+fn test_debug() {
+    let backtrace = Backtrace {
+        inner: Inner::Captured(Mutex::new(Capture {
+            actual_start: 1,
+            resolved: true,
+            frames: vec![
+                BacktraceFrame {
+                    frame: RawFrame::Fake,
+                    symbols: vec![BacktraceSymbol {
+                        name: Some(b"std::backtrace::Backtrace::create".to_vec()),
+                        filename: Some(BytesOrWide::Bytes(b"/rust/backtrace.rs".to_vec())),
+                        lineno: Some(100),
+                    }],
+                },
+                BacktraceFrame {
+                    frame: RawFrame::Fake,
+                    symbols: vec![BacktraceSymbol {
+                        name: Some(b"__rust_maybe_catch_panic".to_vec()),
+                        filename: None,
+                        lineno: None,
+                    }],
+                },
+                BacktraceFrame {
+                    frame: RawFrame::Fake,
+                    symbols: vec![
+                        BacktraceSymbol {
+                            name: Some(b"std::rt::lang_start_internal".to_vec()),
+                            filename: Some(BytesOrWide::Bytes(b"/rust/rt.rs".to_vec())),
+                            lineno: Some(300),
+                        },
+                        BacktraceSymbol {
+                            name: Some(b"std::rt::lang_start".to_vec()),
+                            filename: Some(BytesOrWide::Bytes(b"/rust/rt.rs".to_vec())),
+                            lineno: Some(400),
+                        },
+                    ],
+                },
+            ],
+        })),
+    };
+
+    #[rustfmt::skip]
+    let expected = "Backtrace [\
+    \n    { fn: \"__rust_maybe_catch_panic\" },\
+    \n    { fn: \"std::rt::lang_start_internal\", file: \"/rust/rt.rs\", line: 300 },\
+    \n    { fn: \"std::rt::lang_start\", file: \"/rust/rt.rs\", line: 400 },\
+    \n]";
+
+    assert_eq!(format!("{:#?}", backtrace), expected);
+}