summaryrefslogtreecommitdiffstats
path: root/library/backtrace/crates/macos_frames_test
diff options
context:
space:
mode:
Diffstat (limited to 'library/backtrace/crates/macos_frames_test')
-rw-r--r--library/backtrace/crates/macos_frames_test/Cargo.toml8
-rw-r--r--library/backtrace/crates/macos_frames_test/src/lib.rs1
-rw-r--r--library/backtrace/crates/macos_frames_test/tests/main.rs30
3 files changed, 39 insertions, 0 deletions
diff --git a/library/backtrace/crates/macos_frames_test/Cargo.toml b/library/backtrace/crates/macos_frames_test/Cargo.toml
new file mode 100644
index 000000000..278d51e79
--- /dev/null
+++ b/library/backtrace/crates/macos_frames_test/Cargo.toml
@@ -0,0 +1,8 @@
+[package]
+name = "macos_frames_test"
+version = "0.1.0"
+authors = ["Aaron Hill <aa1ronham@gmail.com>"]
+edition = "2018"
+
+[dependencies.backtrace]
+path = "../.."
diff --git a/library/backtrace/crates/macos_frames_test/src/lib.rs b/library/backtrace/crates/macos_frames_test/src/lib.rs
new file mode 100644
index 000000000..65e2cc340
--- /dev/null
+++ b/library/backtrace/crates/macos_frames_test/src/lib.rs
@@ -0,0 +1 @@
+// intentionally blank
diff --git a/library/backtrace/crates/macos_frames_test/tests/main.rs b/library/backtrace/crates/macos_frames_test/tests/main.rs
new file mode 100644
index 000000000..f0e905b24
--- /dev/null
+++ b/library/backtrace/crates/macos_frames_test/tests/main.rs
@@ -0,0 +1,30 @@
+// Based on from https://github.com/rust-lang/rust/blob/2cb0b8582ebbf9784db9cec06fff517badbf4553/src/test/ui/issues/issue-45731.rs
+// This needs to go in a crate by itself, since it modifies the dSYM for the entire test
+// output directory.
+//
+// Note that this crate is *not* part of the overall `backtrace-rs` workspace,
+// so that it gets its own 'target' directory. We manually invoke this test
+// in .github/workflows/main.yml by passing `--manifest-path` to Cargo
+#[test]
+#[cfg(target_os = "macos")]
+fn backtrace_no_dsym() {
+ use std::{env, fs};
+
+ // Find our dSYM and replace the DWARF binary with an empty file
+ let mut dsym_path = env::current_exe().unwrap();
+ let executable_name = dsym_path.file_name().unwrap().to_str().unwrap().to_string();
+ assert!(dsym_path.pop()); // Pop executable
+ dsym_path.push(format!(
+ "{}.dSYM/Contents/Resources/DWARF/{0}",
+ executable_name
+ ));
+ let _ = fs::OpenOptions::new()
+ .read(false)
+ .write(true)
+ .truncate(true)
+ .create(false)
+ .open(&dsym_path)
+ .unwrap();
+
+ backtrace::Backtrace::new();
+}