ci: Disable library backtrace capture in macOS test jobs (#64555)
Based on https://github.com/zed-industries/zed/pull/64464#issuecomment-5763255028 With `RUST_BACKTRACE=1` set, `anyhow` captures a backtrace for every error it constructs; on macOS this costs ~30ms per error, on Linux ~µs. `Project::test` alone hits several such errors during setup (`canonicalize`/`load` of the non-existent global `tasks.json` and `debug.json`, worktree creation, buffer open), adding ~0.8s of fixed cost per test on macOS. `RUST_LIB_BACKTRACE=0` is checked by std before `RUST_BACKTRACE`, so panics keep their backtraces while library error captures stop. Set only on the macOS test jobs (`run_tests.yml`, `release.yml`), since Linux and Windows pay nothing for the captures and keep the error-origin backtraces in failure output. Measured with `cargo nextest run -p editor --lib`: macOS 119s → 72s, Linux 78s → 76s (noise). Trade-off on macOS: a failing `.unwrap()` on an `anyhow::Error` in CI output loses the backtrace of where the error was constructed; the panic backtrace at the unwrap site is unaffected. Release Notes: - N/A
This commit is contained in:
1 parent
b015cdf8be
commit
5a1c0e3da0
3 files changed
+7
No files matched your search
@@ -14,6 +14,8 @@ jobs:
|
||||
run_tests_mac:
|
||||
if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions')
|
||||
runs-on: namespace-profile-mac-large
|
||||
env:
|
||||
RUST_LIB_BACKTRACE: '0'
|
||||
steps:
|
||||
- name: steps::checkout_repo
|
||||
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
|
||||
|
||||
@@ -444,6 +444,8 @@ jobs:
|
||||
- check_style
|
||||
if: needs.orchestrate.outputs.run_tests == 'true' && github.event_name != 'merge_group'
|
||||
runs-on: namespace-profile-mac-large
|
||||
env:
|
||||
RUST_LIB_BACKTRACE: '0'
|
||||
steps:
|
||||
- name: steps::checkout_repo
|
||||
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
|
||||
|
||||
Reference in new issue
Block a user